欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

真实项目中VS2015中自建T4模板生成文件的使用

程序员文章站 2022-03-25 20:59:50
VS2015中使用T4模板,根据EF生成的实体模型,生成相应的文件 ......

有可能许多小伙伴们发现,vs2015和2012的自带t4模板中的.tt文件改变非常之多,如果仅仅copyef系统自己生成的模板文件,那可累了。以下是我自己整理的在2012和2015中都可以试用的代码。

<#@ 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);
//修改当前tt模板相对应的edmx模型的位置
string inputfile = @"..\\model\\datamodel.edmx";

edmitemcollection itemcollection = loader.createedmitemcollection(inputfile);
string namespacename = code.vsnamespacesuggestion();

entityframeworktemplatefilemanager filemanager = entityframeworktemplatefilemanager.create(this);

#>

using model;
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;

namespace ibll
{

   
<#
foreach (entitytype entity in itemcollection.getitems<entitytype>().orderby(e => e.name))
{    
#>    
        public partial interface i<#=entity.name#>service:ibaseservice<<#=entity.name#>>
    {
    }
<#}#>

}

注意:string inputfile = @"..\\model\\datamodel.edmx";

这个是需要插入与当前项目对应的ef模型类的位置

foreach (entitytype entity in itemcollection.getitems<entitytype>().orderby(e => e.name))
这句很明显是取ef类中文件的语句

生成效果如下:注意原类需要添加partial标签

真实项目中VS2015中自建T4模板生成文件的使用