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(solutionsPath+@"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))循环外面
    }#>

猜你喜欢

转载自blog.csdn.net/liuhuan303x/article/details/85336926
今日推荐