t4模板中获取当前项目或解决方案路径

上传人:bin****86 文档编号:56673854 上传时间:2018-10-15 格式:DOCX 页数:23 大小:23.22KB
返回 下载 相关 举报
t4模板中获取当前项目或解决方案路径_第1页
第1页 / 共23页
t4模板中获取当前项目或解决方案路径_第2页
第2页 / 共23页
t4模板中获取当前项目或解决方案路径_第3页
第3页 / 共23页
t4模板中获取当前项目或解决方案路径_第4页
第4页 / 共23页
t4模板中获取当前项目或解决方案路径_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《t4模板中获取当前项目或解决方案路径》由会员分享,可在线阅读,更多相关《t4模板中获取当前项目或解决方案路径(23页珍藏版)》请在金锄头文库上搜索。

1、t4t4 模板中获取当前项目或解决方案路径模板中获取当前项目或解决方案路径篇一:使用 T4 模板批量生成代码使用 T4 模板批量生成代码 什么是 T4T4(Text Template Transformation Toolkit)是微软官方在VisualStudio XX 中开始使用的代码生成引擎。在 Visual Studio 中, “T4 文本模板”是由一些文本块和控制逻辑组成的混合模板,它可以生成文本文件。 在 Visual C# 或 Visual Basic 中,控制逻辑编写为程序代码的片段。生成的文件可以是任何类型的文本,例如网页、资源文件或任何语言的程序源代码。现在的 VS 中只要

2、与代码生成相关的场景基本上都能找 T4 的身影,比如 MVC 的视图模板,Entity Framwork 的 DataContext 模板等等。 什么是MultipleOutputHelper 标准的 T4 模板语法每个 tt 文件生成的类代码在同一文件,如果类很多,查看类代码就不方便了,MultipleOutputHelper 是一个改进的 tt 文件代码,可用MultipleOutputHelper 构建出输出多文件的 T4 解决方案,可在搜索引擎中搜索 “”获取代码。 复制文件 获取到代码将其保存为,将 复制到项目文件夹下,如项目文件夹下的WebApplication7 目录下,并包含到

3、项目中。 包含文件 新建文本模板,并包含文件: 同时设置 hostspecific=“true“: 初始化 初始化 Manager 对象: 页眉 使用 StartHeader (位于之前)可这是生成文件页眉。 / Header1 定义输出文件 使用代码标识区分生成的代码块的范围,可重复多个。(tb_name+“.cs“); /代码块 (); 示例代码: using System; using ; using ; using ; namespace WebApplication7 public class Class1 public int MyProperty get; set; 页脚 使用

4、StartFooter (位于之后)可这是生成文件页脚。 / Footer1 编译执行 使用 Process 方法,进行文件分割: 生成文件截图 完整代码 以下是文件的完整代码: / Header1 using System; using ; using ; using ; namespace WebApplication7 public class Class1 public int MyProperty get; set; / Footer2 / Header1 using System; using ; using ; using ; namespace WebApplication7

5、public class Class2 public int MyProperty get; set; / Footer2 生成文件代码 以下是生成的文件完整代码: / Header1 using System; using ; using ; using ; namespace WebApplication7 publicclassClass1 publicint MyProperty get; set; / Footer2 篇二:T4 模板根据 DB 生成实体类T4 模板根据 DB 生成实体类 阅读目录 1.前言 2.原理 1.前言 为什么会有这篇文章了,最近看到了一些框架,里面要写的代码

6、太多了,故此就想偷懒,要 是能写出一个 T4 模板,在数据库添加表后,根据模板就可以自动生成了类文件了,这样多 好,心动不如行动。记得使用 T4 模板还是 2 年前,那个时候听波波老师讲课做我们的最后 一个大项目 CRM,简简单单的写了一下模板,保存一下,所有的类文件就出来了,当时那个 膜拜,油然而生。 同时在工作中,我们公司自己开发的一个 ORM,实体类都要自己写,一个数据库表的字段 太多,写的真是手抽筋。如果你对 T4 基础语法不是很了解,可以参考我前面写的一篇文章 T4 语法快速入门。 回到顶部 2.原理 我们要做的事情是通过数据库表生成实体类。 第一步 我们要查询出当前用户下的所有数据

7、库表。 第二步 查询出数据库表的结构,比如字段的名称,字段的类型,字段的长度大小,是否为 空等等。 工作中 oracle 用的比较多,在这里我就分析 oracle和 mssql 回到顶部 查询当前用户所有的表。 SELECT TABLE_NAME FROM USER_TABLES; 根据表名查询表结构数据 复制代码 SELECT _name 字段名, _type 数据类型, _length 长度, _precision 整数位, _Scale 小数位, 允许空值, _default 缺省值, 备注, _NAME 表名 FROM user_tab_columns A, user_col_comm

8、ents B WHERE _NAME = _name AND _Name = _Name AND _Name = AFFIXINFO 复制代码 来源与网上,作用是生成一个一个单独的类文件,即文件。复制代码 (); # ModelManager manager = new ModelManager(); List list=(); # foreach (var item in list) string tableName=item; DataTable table= (tableName); # (tableName+“.cs“); # using System; using ; using ;

9、 namespace Model / / 数据表实体类: / Serializable() public class foreach(DataRow row in ) # / / / public “# get; set; # # public class ModelManager / / 数据库连接字符串 / private const string CONNECTION_STRING = “Data Source=orcl;Persist Security Info=True;User ID=jjmis;Password=jjmis;Unicode=True“; / / 用户信息表名 /

10、private const string PERSONINFO_TABLE_NAME = “USERINFO“; / / 根据表名查询表结构信息 / private const string SELECT_SCHEMA_BY_TABLE_NAME = “SELECT _name 字段名, _type 数据类型, _length 长度, _precision 整数位, _Scale 小数位,允许空值, _default 缺省值, 备注, _NAME 表名 user_tab_columns A, user_col_comments B _NAME = _name _Name = _Name _Na

11、me = 0“; / / 获得数据连接 / / private OracleConnection GetConnection() return new OracleConnection(CONNECTION_STRING); / / 得到当前用户的所有表名 / / public List GetTableList() string sql = “SELECT * FROM USER_TABLES“; DataTable dt = (sql); List list = new List(); if (dt!=null i (i“TABLE_NAME“.ToString(); return lis

12、t; FROM WHERE AND AND / / 释放连接 / / private void ReleaseConnection(OracleConnection con) if (con != null) if ( = ) (); public DataTable GetTableSchema(string tableName) DataTable dt; using (OracleConnection con = GetConnection() (); OracleCommand cmd = (); (SELECT_SCHEMA_BY_TABLE_NAME,tableName); = ;

13、 OracleDataAdapter adapter = new OracleDataAdapter(cmd); DataSet ds = new DataSet(); (ds); dt = 0; return dt; / / SQL不完善,需要的自己改造 / / / public string TransFromSqlType(string type) if (type) = 篇三:Visual Studio 下的代码生成-T4 模板使用说明Visual Studio 下的代码生成: T4 模板使用说明 在基于 T4 的代码生成方式中,我对 T4 模板的组成结构、语法,以及 T4 引擎的工作

14、原理进行了大体的介绍,并且编写了一个 T4 模板实现了如何将一个 XML 转变成 C#代码。为了让由此需求的读者对 T4 有更深的了解,我(转 载 于: 小 龙文 档 网:t4 模板中获取当前项目或解决方案路径)们通过 T4 来做一些更加实际的事情SQL Generator。在这里,我们可以通过 SQL Generator 为某个数据表自动生成进行插入、修改和删除的存储过程。文中源代码从这里下载 一、代码生成器的最终使用效果 我们首先来看看通过直接适用我们基于 T4 的 SQL 生成模板达到的效果。右图(点击看大图)是 VSXX 的Solution Explorer,在 Script 目录下面

15、,我定义了三个后缀名为.tt 的 T4 模板。它们实际上是基于同一个数据表(T_PRODUCT)的三个存储过程的生成创建的模板文件,其中 P_PRODUCT_、P_PRODUCT_和 P_PRODUCT_分别用于记录的删除、插入和修改。自动生成的扩展名为.sql 的同名附属文件就是相应的存储过程。 基于三种不同的数据操作(Insert、Update 和Delete) ,我创建了 3 个重用的、与具体数据表无关的模板: InsertProcedureTemplate、UpdateProcedureTemplate 和DeleteProcedureTemplate。这样做的目的为为了实现最大的重用,如果我们需要为某个数据表创建相应的存储过程的时候,我们可以直接使用它们传入相应的数据表名就可以了。实际上,P_PRODUCT_、P_PRODUCT_和 P_PRODUCT_这三个 T4 模板的结构很简单,它们通过指令将定义着相应ProcedureTemplate 的 T4 模板文件包含进来。最 终的存储过程脚本通过调用 ProcudureTempalte 的Render 方法生成。其中构造函数的参数表示的分别是连接字符串名称(在配置文件中定义)和数据表的名称。new DeleteProced

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号