教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

mvc实用架构设计(三)ef-code first(3):使用t4模板生成相似代

来源:网络收集 时间:2026-08-03
导读: MVC实用架构设计(三)——EF-Code First(3):使用T4 模板生成相似代码 〇、目录一、前言二、工具准备三、T4代码生成预热 (一) 单文件生成:HelloWorld.cs (二) 多文件生成四、生成数据层实体相关相似代码 (一) 生成准备 (二) 生成实体相关相似代码生成实

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字,全部文档内容请下载后查看。喜欢就下载吧 ……
mvc实用架构设计(三)ef-code first(3):使用t4模板生成相似代.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/520000.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)