1. 程式人生 > >T4模板生成多檔案使用

T4模板生成多檔案使用

<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ include file="EF.Utility.CS.ttinclude"#><# //引用模板檔案#>
<#@ output extension=".cs"#><# //設定檔案輸出型別為.cs#>
<#
    MetadataLoader loader = new MetadataLoader(this);
    var fileManager = EntityFrameworkTemplateFileManager.Create(this);
    List<string> inputFiles= new List<string>();//建立一個list用來儲存edmx檔案
#>
<# 
    string solutionsPath = Host.ResolveAssemblyReference("$(SolutionDir)");  //獲取解決方案所在路徑
    FileInfo[] fi =new DirectoryInfo(
[email protected]
"Jerry_Project_FA_Model").GetFiles("*edmx");//獲取Model中的所有的edmx檔案     foreach (FileInfo item in fi)     {         inputFiles.Add(@"..\Jerry_Project_FA_Model\"+item.Name);     } #> //------------------------------------------------------------------------------ // <auto-generated> //     此程式碼已從模板生成。 // //     手動更改此檔案可能導致應用程式出現意外的行為。 //     如果重新生成程式碼,將覆蓋對此檔案的手動更改。 // </auto-generated> //------------------------------------------------------------------------------ <#     foreach(string file in inputFiles)     {         string contextStr=file.Substring(file.LastIndexOf('\\')+1).Split('.')[0];//獲取檔案的name               EdmItemCollection ItemCollection =loader.CreateEdmItemCollection(file);//用來獲取edmx檔案中的實體類         foreach(EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e=>e.Name)) {             fileManager.StartNewFile(entity.Name + "Service.cs"); #> using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Jerry_Project_FA_Model; using Jerry_Libr_Framework_Core.BaseService; using Jerry_Libr_Framework_Core.CacheManager; using Jerry_Project_FA_IDAL.UserInfoModel; using Jerry_Project_FA_IBLL.UserInfoModel; namespace Jerry_Project_FA_BLL.<#=contextStr#> { <#    #>  public partial class <#=entity.Name#>Service:EFBaseService<<#=entity.Name#>>,I<#=entity.Name #>Service{         public <#=entity.Name#>Service(I<#=entity.Name#>Dal <#=entity.Name#>, ICacheManager cacheManager) : base(<#=entity.Name#>, cacheManager) {         }     } <# #> } <#        }         fileManager.Process();//一定要放在foreach(EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e=>e.Name))迴圈外面     }#>