博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库生成T4模版在代码生成中的应用心得
阅读量:5989 次
发布时间:2019-06-20

本文共 1378 字,大约阅读时间需要 4 分钟。

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

    转眼之间,我用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

数据库和生成
---------------------------------

转载地址:http://lknlx.baihongyu.com/

你可能感兴趣的文章
JQuery常用功能的性能优化
查看>>
windowXP下搭建nginx和tomcat的集群
查看>>
学习笔记---Ubuntu学习的相关知识
查看>>
利用DBMS_STATS包修改统计信息,欺骗优化器,生成糟糕的执行计划
查看>>
Linux 用户管理命令
查看>>
【Case分享】Exchange 2013登录EAC\OWA出现HTTP 500内部错误
查看>>
c++利用SqlApi访问SqlServer数据库(存储过程篇)
查看>>
RHEL/CentOS/OEL5/6.x高危漏洞修补
查看>>
CentOS7安装配置SAMBA服务器
查看>>
java将固定长度的byte数组转成String,并去掉后面多余的0
查看>>
Centos7安装Python3.7(兼容Python2.7)
查看>>
每日一笑图
查看>>
redhat下的磁盘操作-分区,格式化,挂载等
查看>>
全局变量相互依赖和初始化顺序的解决办法
查看>>
LAMP搭建14:Apache禁止解析PHP
查看>>
支付宝支付-手机网站支付接口(H5手机站)
查看>>
Android Web Server
查看>>
MAVEN插件积累
查看>>
我的友情链接
查看>>
阿里云边缘节点ENS助力淘宝构建音视频通信网络
查看>>