0

我想让我从现有数据库中创建的所有实体都继承自同一个接口。

我想这可以通过模板来完成。而且我看过那个丑陋的.tt文件,但没有帮助(或者我没有找到它)。

有模板的任何文档、示例……吗?

有任何常见范例的提示或预制模板,例如 N 层设计或领域驱动设计?

4

1 回答 1

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;
}

模板编写实际实体类的部分(这在新模板中肯定有所不同)Write EntityType classes.在 EF4 模板中的“”下方。

<#=Accessibility.ForType(entity)#>
<#=code.SpaceAfter(code.AbstractOption(entity))#>
partial class
<#=code.Escape(entity)#> :
<#=BaseTypeName(entity, code)#>
<#= Interfaces(entity) #>

在这里,我只是添加了对我的接口方法的调用。

我知道这不是确切的答案,但它应该可以帮助您自己编辑模板文件。只是咬住自己。:)

于 2013-02-03T22:18:35.073 回答