使用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。

下载地址:

 由于我这里用的是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,如需转载请自行联系原作者

相关文章
“framework必会”系列:Android Input系统(一)事件读取机制
曾经在开发的很长一段时间内,笔者对点击事件的认知只存在于自定义View中的`onTouchEvent`等方法的处理。 后来慢慢的接触到`Android的事件分发机制`,但也只是在**Activity->ViewGroup->View**层面的分发逻辑
|
传感器 监控 Java
如何正确理解 CPU 使用率和平均负载的关系?看完你就知道了
CPU(Central Processing Unit)是计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元,相当于系统的“大脑”。
3852 0
如何正确理解 CPU 使用率和平均负载的关系?看完你就知道了
|
11月前
|
Java API 调度
如何避免 Java 中的 TimeoutException 异常
在Java中,`TimeoutException`通常发生在执行操作超过预设时间时。要避免此异常,可以优化代码逻辑,减少不必要的等待;合理设置超时时间,确保其足够完成正常操作;使用异步处理或线程池管理任务,提高程序响应性。
498 13
|
7月前
|
机器学习/深度学习 人工智能 SDN
《重塑数据中心网络架构,迎接人工智能算力浪潮》
在人工智能快速发展的背景下,数据中心作为算力核心,其网络架构优化至关重要。传统三层架构因延迟高、扩展性差已难以满足AI需求。叶脊架构通过扁平化设计减少延迟并提升扩展性,高速网络技术(如100Gbps/400Gbps以太网)提供更大带宽,SDN与网络虚拟化实现灵活资源分配,优化流量管理进一步提高效率。未来,量子通信和边缘计算等技术将推动数据中心网络持续演进,助力AI算力提升,为社会带来更多变革。
272 9
|
12月前
|
XML JSON 网络协议
【TCP/IP】自定义应用层协议,常见端口号
【TCP/IP】自定义应用层协议,常见端口号
274 3
|
算法 区块链
区块链项目的商业模式有哪些成功案例
**评估区块链项目潜力的关键因素包括:技术创新与应用场景(如共识算法、交易速度)、团队背景与发展战略(团队经验、市场定位)、社区活跃度与合作伙伴(用户参与、合作网络)、透明度与合规性(信息透明、法规遵循)、技术可行性(技术成熟度、安全性)及商业模式与市场可行性(市场规模、用户需求)。这些综合考量帮助判断项目的成功潜力和市场前景。**
|
存储 自然语言处理 测试技术
Transformers 4.37 中文文档(八)(4)
Transformers 4.37 中文文档(八)
364 2
|
应用服务中间件 Linux 网络安全
CentOS 7 上安装 Nginx
在 CentOS 7 上安装 Nginx 的步骤包括:添加 EPEL 仓库,安装 Nginx,启动 Nginx,配置防火墙规则,最后通过访问服务器 IP 验证安装是否成功
606 0
|
JavaScript Windows
Nativefier——将网站打包成windows应用程序
Nativefier——将网站打包成windows应用程序
299 0
|
数据采集 Web App开发 开发者
探秘Python爬虫技术:王者荣耀英雄图片爬取
探秘Python爬虫技术:王者荣耀英雄图片爬取