有可能许多小伙伴们发现,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标签
