真实项目中VS2015中自建T4模板生成文件的使用
程序员文章站
2022-07-02 13:31:42
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标签