在本篇文章中,我们主要介绍数据库生成的内容,自我感觉有个不错的提议和大家分享下

转眼之间,我用T4模版已经三年多的时间。三年来,经过几个项目的磨合,在应用上偶有心得,在这里把一些问题一一罗列出来。

2010年9月,我第一次接触EntityFramework3.5,深深的被它类powerdesigner感动,开始琢磨它的应用。当时项目中,有位大拿,老琢磨EF、域模型以及MVC的搭配,对EF进行扩展等等。当时没有新项目,就做各种mode,挺好玩的。

过了一年,2011年,做了一个很小的项目,只有7、8个对象,用EF的关系图生成model,然后生成sql,生成数据库,开始编码等等,一个项目下来,确实能够增加不少工作量,性能还可以忍受,唯一的就是支持的数据库太单一。

过几个月,2012年,又做一个大点的项目,喜剧发生了。计划的不完善,mode老变,数据库结构也随着变,需要改很多多少地方;于是就开始查看各个大拿对EF的理解,花费了点时间,什么数据库优先、model优先、代码优先,都有很多例子,最后还是数据库优先才是我需要的。

为什么选数据库优先呢?一般,我们做的系统,都是应用数据库驱动,并且计划的不完善数据库还老变;我们手工改一个地方好呢还是每个地方都改,明显只需要修改数据库一个地方就能够改好全部的地方是最理想的,于是在后来的全部项目中,我都应用数据库优先。

每日一道理
记不清有多少个夜晚,在我翻阅纸张的指间滑落;记不清有多少支蜡烛,在我的凝视中化为灰烬。逝者如斯,我时时刻刻会听见自己对生命承诺的余音,感到岁月的流转在渐渐稀释我的年少无知,我愿自己是一只上足了发条的时钟,在昼夜不停的流转中留下自己充实的每一刻。

代码优先,在EF4.5出来后提的非常多,我以为仅仅是EF对性能的提升而做的一点点转变,在真实的项目中,工作量有点困难。最后,还是会转化为数据库驱动,在用T4模版生成各个层次的代码。

我用的数据库优先,并非完全的应用数据库优先,而仅仅是增加了一个层而已,把它最为一个对象的定义以及关系映射罢了,在项目中没有现实的运用。项目中的数据持久层,用传统的sqlhelper还是框架(NHibernate、EF代码优先),都通过T4模版生成响应格式的代码;甚至model、service等,也通过T4模版进行响应的生成。

我通过这类数据库优先的模式,在后来的几个C#、Java项目中,得到了很好的运用,工作量大量的增加。

在对T4模版的应用上,始终有人提议用各种代码生成器,初期,我们也用过,有好的也有欠好的,可没有一个能够赶得上T4。别人的代码生成器,要么去用新语言的写模版,要么需要修改代码,才能生成需要的代码,拘束太多;T4模版,多么的自在,基本没有学习曲线,拿来就能够应用。

当然,现在的EF还有很多缺陷,我以为最大的缺陷是不能读取数据库字段的描述。等待微软对它的修改。

文章结束给大家分享下程序员的一些笑话语录: 乔布斯:怎么样还是咱安全吧!黑客:你的浏览器支持国内网银吗?苹果可以玩国内的网游吗乔布斯:......不可以黑客:那我研究你的漏洞干嘛,我也需要买奶粉!

--------------------------------- 原创文章 By
数据库和生成
---------------------------------

数据库生成T4模版在代码生成中的应用心得相关推荐

  1. [转]T4模版引擎之生成数据库实体类

    本文转自:http://www.cnblogs.com/lzrabbit/archive/2012/07/18/2597953.html 在通过T4模版引擎之基础入门 对T4有了初步印象后,我们开始实 ...

  2. EF架构~在T4模版中为所有属性加默认值

    回到目录 在项目开发过程中,出现了一个问题,就是新添加一个非空字段后,原来的程序逻辑需要被重新修改,即将原来的字段添加到程序里,这种作法是非常不提倡的,所以,我通过T4模版将原来的实体类小作修改,解决 ...

  3. 根据excel列动态创建mysql表_根据数据库字段动态生成excel模版下载,上传模版获取数据存入数据库(poi 反射)...

    环境:mysql5.7.28 java8 Spring boot 2.2.4 mybatis-plus3.10 动态:根据需求,用户可以选择对应的字段生成excle模版 下载 poi 反射:poi是e ...

  4. JPA实体中数据库生成ID的最终指南1

    只需用@ID注释JPA实体的ID字段,并允许DB关心其余的!在某些情况下,缺省值应该改变.在本文中,我们将看到更改ID生成策略会如何影响应用程序的性能. 根据JPA规范,Entity是满足以下要求的J ...

  5. ios html格式转换,如何使用HTML模版和iOS中的UIPrintPageRenderer来生成PDF文档

    如何使用HTML模版和iOS中的UIPrintPageRenderer来生成PDF文档 作者:GABRIEL THEODOROPOULOS,时间:2016/7/10 翻译:BigNerdCoding, ...

  6. 黄聪:VS2010开发T4模版引擎之基础入门

    原文:http://www.cnblogs.com/lzrabbit/archive/2012/07/15/2591085.html 额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知,却又 ...

  7. [转]T4模版引擎之基础入门

    本文转自:http://www.cnblogs.com/lzrabbit/archive/2012/07/15/2591085.html 额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知, ...

  8. T4模版引擎之基础入门

    额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知,却又在背后默默无闻的奉献着,直到现在我们项目组的人除了我之外,其它人还是对其豪无兴趣,基本上是连看一眼都懒得看,可怜的娃啊... T4(T ...

  9. C# T4模板在项目中的使用

    1.什么是t4模版 T4,即4个T开头的英文字母组合:Text Template Transformation Toolkit. T4(Text Template Transformation Too ...

最新文章

  1. 如何解决Python3写入CSV出现‘gbk‘ codec can‘t encode的错误
  2. 大厂员工被裁后的不同反应,也太真实了吧?|漫画
  3. 动手自己写一个 xcode 插件(Xcode Source Editor Extensions)附源码
  4. 【PHP】Sublime下PHP网站开发指南
  5. springcloud、consul和Springboot的版本
  6. 20160411作业
  7. 第一章 Linux是什么
  8. android mp4语音识别,怎样用语音识别将一段视频转化为文字, 比如:百度的语音识别api...
  9. iPhone客户端开发笔记(一)
  10. 隔离见证_云见证–一种使我们的生活更轻松的新功能
  11. java 中的 long
  12. 一天一个小技巧(2)——CSDN编译器的首行缩进2字符
  13. 快速排序算法之我见(附上C代码)
  14. java高级教程pdf_《Java高级编程实用教程》PDF 下载_IT教程网
  15. 产品思考 - 不剪发的Tony老师
  16. 叶胜超:可以让你保本的8条投资经验!
  17. 5. 求cosx计算公式
  18. Wi-Fi PNO扫描流程(Android P)
  19. BGP进阶:BGP 综合实验一
  20. Python安装Pycrypto

热门文章

  1. python 错误代码_PYTHON错误代码及解决办法
  2. linux分区知识,Linux硬盘分区知识
  3. linux打开没有图形界面,linux无法打开图形界面
  4. Python基础之简单用户交互
  5. html ie浏览器视频无法播放视频,HTML5视频以Chrome格式播放,但不播放IE9
  6. pageoffice网页提示未安装_Adobe Photoshop CC 2019 详细图文安装教程
  7. python输入ip地址_python批量生成本地ip地址的方法
  8. 自动化监控--zabbix-get安装使用详解
  9. Linux系统上怎么安装服务器管理软件Cockpit?
  10. 常用前端框架Angular和React的一些认识