mvc实用架构设计(三)ef-code first(3):使用t4模板生成相似代
MVC实用架构设计(三)——EF-Code First(3):使用T4
模板生成相似代码
〇、目录一、前言二、工具准备三、T4代码生成预热 (一) 单文件生成:HelloWorld.cs (二) 多文件生成四、生成数据层实体相关相似代码 (一) 生成准备 (二) 生成实体相关相似代码生成实体映射配置类生成实体仓储接口生成实体仓储实现五、源码获取系列导航一、前言 经过前面EF的《第一篇》与《第二篇》,我们的数据层功能已经较为完善了,但有不少代码相似度较高,比如负责实体映射的 EntityConfiguration,负责仓储操作的
IEntityRepository与EntityRepository。而且每添加一个实体类型,就要手动去添加一套相应的代码,也是比较累的工作。如果能有一个根据实体类型自动生成这些相似度较高的代码的解决方案,那将会减少大量的无聊的工作。 VS提供的“文本模板”(俗称T4)功能,就是一个较好的解决方案。要添加一个实体类型,只要把实体类型定义好,然后运行一下定义好的T4模板,就可以自动生成相应的类文件。二、工具准备 为了更好的使用 T4模板 功能,我们需要给VS安装如下两个插件:Devart T4 Editor:为VS提供智能提示功能。T4 Toolbox:在生成多文件时很有用。三、T4代码生成预热(一) 单文件生成:HelloWorld.cs 下面,
我们先来体验一个最简单的T4代码生成功能,输出一个最简单的类文件。 首先,在 GMF.Demo.Core.Data中 添加一个名为 T4 的文件夹,用于存放生成本工程内的代码的T4模板文件。并在其中添加一个名为 HelloWorld.tt的“文本模板”的项。 HelloWorld.tt定义如下: 1 <#@ template debug=\ 2 <#@ assembly name=\ 3 <#@ import namespace=\ 4 <#@ import namespace=\ 5 <#@ import
namespace=\ 6 <#@ output extension=\ 7 using System; 8
9 namespace GMF.Demo.Core.Data.T4 10 {
11 public class HelloWorld 12 {
13 private string _word; 14
15 public HelloWorld(string word) 16 {
17 _word = word; 18 } 19 }
20 } 直接保存文件(T4的生成将会在保存模板,模板失去焦点等情况下自动触发生成。),将会在模板的当前位置生成一个同名的类文件: HelloWorld.cs的内容如下: 1 using System; 2
3 namespace GMF.Demo.Core.Data.T4 4 {
5 public class HelloWorld 6 {
7 private string _word; 8
9 public HelloWorld(string word) 10 {
11 _word = word; 12 } 13 }
14 } 这样,我们的HelloWorld之旅就结束了,非常简单。(二) 多文件生成 当前位置方案的方案只能生成如下所示的代码: 生成的文件会与T4模板在同一目录中,
这里就不详述了,可以参考 蒋金楠 一个简易版的T4代码生成\框架\。 本项目的多文件需要生成到指定文件夹中,但又想对T4模板进行统一的管理,T4文件夹里放置T4模板文件,但生成的映射文件EntityConfiguration将放置到文件夹Configurations中,仓储操作的文件IEntityRepository与EntityRepository将放置到Repositories文件夹中。且生成的代码文件应能自动的添加到解决方案中,而不是只是在文件夹中存在。 要实现此需求,一个简单的办法就是通过 T4 Toolbox 来进行生成。想了解 T4 Toolbox 的细节,可以自己使用 ILSpy 来对 T4Toolbox.dll 文件进行反编译来查看源代码,如果是通过 T4 Toolbox 是通过VS的插件来安装的,将在
“C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\VisualStudio\\11.0\\Extensions\\dca4f0lt.jdx”文件夹中(我的机器上)。下面,我们直接进行多文件生成的演示。 首先,添加一个名为 HelloWorldTemplate.tt 的 T4 Toolbox 的代码模板。 此模板将继承于 T4 Toolbox 的 CSharpTemplate 类: 1 <#+
2 // <copyright file=\郭明锋@中国\
3 // Copyright ? 郭明锋@中国. All Rights Reserved. 4 // </copyright>
5
6 public class HelloWorldTemplate : CSharpTemplate 7 {
8 private string _className; 9
10 public HelloWorldTemplate(string className) 11 {
12 _className = className; 13 } 14
15 public override string TransformText() 16 { 17 #> 18 using System; 19
20 namespace GMF.Demo.Core.Data.T4 21 {
22 public class <#=_className #> 23 {
24 private string _word; 25
26 public <#=_className #>(string word)
…… 此处隐藏:660字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




