我想让从现有数据库创建的所有实体都从相同的接口继承。
我想这可以通过模板完成。我已经看到了那个丑陋的.tt
文件,但没有任何帮助(或者我没有找到它)。
有模板的任何文档,示例,......
常见范例有任何提示或预制模板,例如N层设计或域驱动设计?
答案 0 :(得分:2)
查找“T4模板”。这将为您介绍T4模板(.tt
文件)。
通过一些搜索,您可以轻松地将此模板扩展到您的需要。我已经自己做了,但是使用了EF4的模板。我不知道模板是否不同。
我为此做了一些辅助函数:
string Interfaces(EntityType entity)
{
string interfaces = string.Empty;
if (entity.Members.OfType<EdmProperty>().Any(edmProperty => edmProperty.Name == "Guid" && ((PrimitiveType)edmProperty.TypeUsage.EdmType).PrimitiveTypeKind == PrimitiveTypeKind.Guid))
{
interfaces += ", IHasWritableGuid";
}
return interfaces;
}
模板写入实际实体类的部分(这在新模板中肯定有所不同)在EF4模板中略低于“Write EntityType classes.
”。
<#=Accessibility.ForType(entity)#>
<#=code.SpaceAfter(code.AbstractOption(entity))#>
partial class
<#=code.Escape(entity)#> :
<#=BaseTypeName(entity, code)#>
<#= Interfaces(entity) #>
这里我刚刚添加了对我的接口方法的调用。
我知道这不是确切的答案,但它应该可以帮助您自己编辑模板文件。只是咬自己。 :)