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標簽