T4模板生成多檔案使用
阿新 • • 發佈:2018-12-29
<#@ 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))迴圈外面 }#>