使用T4模板生成POCO类

简介:

为什么叫T4?因为简写为4个T。

T4(Text Template Transformation Toolkit)是微软官方在VisualStudio 2008中开始使用的代码生成引擎。在 Visual Studio 中,“T4 文本模板”是由一些文本块和控制逻辑组成的混合模板,它可以生成文本文件。 在 Visual C# 或 Visual Basic 中,控制逻辑编写为程序代码的片段。生成的文件可以是任何类型的文本,例如网页、资源文件或任何语言的程序源代码。现在的VS中只要与代码生成相关的场景基本上都能找T4的身影,比如MVC的视图模板,Entity Framwork的DataContext模板等等。

若论灵活性,各种代码生成工具还真不如T4模板。

在VS2013种默认没有了T4模板,取而代之的是文本模板,但是他们的后缀名都是.tt。我们可以通过NuGet安装T4模板。

安装之后,我们在项目中新建项的时候,在VS模板中就多了两项和T4模板相关的模板。

当我们在新建的T4模板中进行代码编写的时候,默认是没有智能提示的,我们需要再安装一个T4Editor的VS插件tangibleT4EditorPlusModellingToolsVS2013.msi。

下载地址:

https://marketplace.visualstudio.com/items?itemName=tangibleengineeringGmbH.tangibleT4Editor230plusmodelingtoolsforVS2013

 由于我这里用的是VS2013,所以按照13的插件,安装插件时先关闭VS,安装完成之后在T4模板中编写代码时就有了智能提示了。

关于T4模板的详细讲解,大家可以参照一下博客文章:

你必须懂的 T4 模板:体系架构

(译)理解 T4 模板:<#@ parameter #> 指令

我这里要说的是,如何在项目中替代其它的代码工具来使用,比如说,自动生成数据库中的POCO类。

 思路:1、我们要查询中数据库中的表和字段。2、根据数据表名才,将其生成多个POCO类文件

How to do?

开发环境:VS2013

准备工作:添加必须的程序集引用

在自己电脑上面用everythin找到Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll,然后添加引用,如果没有,你就网上下载一个。

方式一

 1、添加一个T4模板文件DbHelper,将其后缀修改为.ttinclude,因为我是将其作为内嵌的T4文件,不修改扩展名的话,会将其当成T4模板文件进行生成。

  View Code

上面的代码就是查询数据库中的表和字段。

2、同样添加另一个T4模板文件,并修改后缀名Manager.ttinclude

  View Code

上面的代码是用来生成多文件的。

3、新建T4模板文件PocoManager.tt,然后引入上面两个ttinclude文件。

  View Code

按Ctrl+S生成的代码如下:

  View Code

方式二

操作方式一种的步骤2,然后新建T4模板Manager.tt,引入Manager.ttinclude

  View Code

按Ctrl+S生成的代码如下:

  View Code

数据库CarSYS的脚本下载地址:

  View Code

扩展:我们还可以在搭建项目框架的时候,通过反射等技术来自己编写T4模板。

当然,我们还可以通过Entity Framework Power Tools这个开发神器来生成我们的EF Code代码。

本文转自邹琼俊博客园博客,原文链接:http://www.cnblogs.com/jiekzou/p/6410719.html,如需转载请自行联系原作者

相关文章
|
1月前
|
前端开发 Python
模板继承
模板继承。
11 1
|
8月前
|
存储 算法 安全
QT5模板库、工具类及控件
标准C++提供了两种字符串,一种是C语言风格的以“\0”字符结尾的字符数 组,另一种是字符串类string。而Qt字符串类QString功能更强大。
90 0
|
11月前
|
编译器 C++
C++中的类模版
🐰类模版 🌸类模版的声明 🌸类模版的实例化 🌸类模版参数 🌸默认模版实参
|
存储 算法 安全
QT5——模版库、工具类及控件(上)
QT5——模版库、工具类及控件
222 0
QT5——模版库、工具类及控件(上)
|
设计模式 前端开发 算法
QT5——模版库、工具类及控件(下)
QT5——模版库、工具类及控件
208 0
QT5——模版库、工具类及控件(下)
【JetPack】数据绑定 DataBinding 简介 ( 使用要求 | Gradle 版本 | 定义数据类 | 定义数据绑定布局 | Activity 数据绑定 | 绑定类生成规则 )(二)
【JetPack】数据绑定 DataBinding 简介 ( 使用要求 | Gradle 版本 | 定义数据类 | 定义数据绑定布局 | Activity 数据绑定 | 绑定类生成规则 )(二)
90 0
|
Java API Android开发
【JetPack】数据绑定 DataBinding 简介 ( 使用要求 | Gradle 版本 | 定义数据类 | 定义数据绑定布局 | Activity 数据绑定 | 绑定类生成规则 )(一)
【JetPack】数据绑定 DataBinding 简介 ( 使用要求 | Gradle 版本 | 定义数据类 | 定义数据绑定布局 | Activity 数据绑定 | 绑定类生成规则 )(一)
263 0
【JetPack】数据绑定 DataBinding 简介 ( 使用要求 | Gradle 版本 | 定义数据类 | 定义数据绑定布局 | Activity 数据绑定 | 绑定类生成规则 )(一)
|
前端开发
jinjia 模板继承
jinjia 模板继承
107 0
|
C#
基于继承类的属性模版中无法绑定的原因和解决方法
原文:基于继承类的属性模版中无法绑定的原因和解决方法 这个的晚上想学学WPF 做一个类似于ERP 左边菜单。构思一下思路 。。。。。。   创建一个类基于Expander类。 1 public class ExpanderBox : Expander 2 { 3 ...
807 0