博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初学T4模板
阅读量:6943 次
发布时间:2019-06-27

本文共 1666 字,大约阅读时间需要 5 分钟。

1、T4模板语法

<#@ template language="C#v3.5" hostSpecific="true" debug="true" #>

这里可以指定模板使用的语言,hostSpecific="true"表示是否使用特定的host(Kalman Studio里面使用的是TableHost对象,必须实现接口ITextTemplatingEngineHost)

<#@ output extension=".cs" #>  指定生成文件的扩展名

<#@ assembly name="System.Data" #>

添加程序集引用,如果要使用第三方程序集,那么最好在项目中添加引用,或者加入到GAC

<#@ import namespace="System.Data" #>

导入要使用的命名空间,注意:这里的命名空间必须要在前面指定的程序集里面找得到的,比如我指定命名空间"System.Data","System.Data.Common",这些在程序集System.Data中都有的

<#@ include file="test.tt" #> 导入模板,类似Html的include用法

<#   #>  定义代码块

<#= #>  定义表达式

<#+ #>  定义变量

 
2、生成T4模板Demo
 
<#@ template language ="C#" debug="false" hostspecific= "true"#>
<#@ include file ="EF.Utility.CS.ttinclude"#>
<#@ output extension =".cs"#>
 
<#
CodeGenerationTools code = new CodeGenerationTools( this);
MetadataLoader loader = new MetadataLoader( this);
CodeRegion region = new CodeRegion( this, 1);
MetadataTools ef = new MetadataTools( this);
 
string inputFile = @"..\\T4Demo.Model\\DataModel.edmx" ;//指定EF模型与当前T4模板的相对路径,从而找到相关的实体类
 
EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
string namespaceName = code.VsNamespaceSuggestion();
 
EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create( this);
 
#>
using T4Demo.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace T4Demo.IDAL
<#
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))//循环遍历获取相关的实体类
#>           
     //动态生成的模板
                 public partial interface I<#= entity.Name#>Dal : IBaseDal< <#=entity.Name#> >
    {
      
    }  
<#} #>
             
}
初学T4模板,有不对的还请指正。。。

转载于:https://www.cnblogs.com/zcz527/p/3376960.html

你可能感兴趣的文章
微软面试题附答案(转)
查看>>
你必须要知道的架构知识~第三章 接口用来制定操作的统一性
查看>>
关于下拉菜单和iframe的问题
查看>>
ASP.NET File.Delete只读文件引起的访问被拒绝,设置文件属性为Normal
查看>>
Sharepoint学习笔记—ECMAScript对象模型系列-- 11、 Enable/Disable Ribbon上的Button
查看>>
python类库26[sqlite]
查看>>
苹果与三星的专利纠纷
查看>>
boost库在工作(36)网络服务端之六
查看>>
关于java.lang.IllegalArgumentException: View not attached to window manager 错误的分析
查看>>
CSS——float属性备忘笔记
查看>>
利用pushState开发无刷页面切换(转)
查看>>
(翻译)理解Java当中的回调机制
查看>>
Discuz! X 插件开发手册
查看>>
Spring 注解@Component,@Service,@Controller,@Repository
查看>>
让PHP7达到最高性能的几个Tips(转)
查看>>
朗文在线词典的使用
查看>>
7-9-有向无环图拓扑排序-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版
查看>>
求最短路径的三种算法: Ford, Dijkstra和Floyd
查看>>
(求助大牛)关于vs2010上的AVS代码bug问题~~
查看>>
JQuery上传插件Uploadify使用详解
查看>>