代码改变世界

vs2015添加T4模版

2017-07-13 15:09  NO.27  阅读(776)  评论(0编辑  收藏  举报
<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ include file="EF6.Utility.CS.ttinclude"#><#@ 
output extension=".cs"#><#

// 声明明edmx文件的位置变量
const string inputFile = @"../Simple.Domain/Model.edmx";
var textTransform = DynamicTextTransformation.Create(this);
var code = new CodeGenerationTools(this);
var ef = new MetadataTools(this);
var typeMapper = new TypeMapper();
var    fileManager = EntityFrameworkTemplateFileManager.Create(this);
var itemCollection = new EdmMetadataLoader(textTransform.Host, textTransform.Errors).CreateEdmItemCollection(inputFile);

#>//------------------------------------------------------------------------------
// 请不要手动修改此文件中的代码
//------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Simple.Domain;//引用Domain的命名空间

namespace Simple.IDAO
{

<#
foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))
{
// 不需要新建文件
//fileManager.StartNewFile(entity.Name + ".cs");

#>    public interface I<#=entity.Name#>Dao:IBaseDao<<#=entity.Name#>> //生成实体对象接口
    {
    }

<#   
}
#>

}
//end namespace
<#+
// 这个类必不可少
public class TypeMapper
{ 

// 这个方法必须有用
public IEnumerable<T> GetItemsToGenerate<T>(IEnumerable<GlobalItem> itemCollection) where T: EdmType
{
return itemCollection
.OfType<T>()
.Where(i => true)
.OrderBy(i => i.Name);
}

}

public static void ArgumentNotNull<T>(T arg, string name) where T : class
{
if (arg == null)
{
throw new ArgumentNullException(name);
}
}
#>