2

我们的 T4 中有以下部分

<#=codeStringGenerator.EntityClassOpening(entity)#> : IEntity

现在因为不是我们所有的实体都使用类型int作为主键。我想让这个接口通用。所以我们可以有 int、guid、long、short 作为类型。(无法更改类型,遗留数据库)

就像是

public IEntity<TId>
{
     TId Id { get; }
}

我现在如何在(默认)实体框架 T4 中主键的类型是什么?有没有办法访问 T4 中的主键?

还是使用部分类的唯一选择?(我不想为此使用partials。因为每次将类添加到模型中时,开发人员都必须了解接口并在新的partial类上实现它)

4

1 回答 1

2

您可以使用该KeyMembers物业

http://msdn.microsoft.com/en-us/library/system.data.metadata.edm.entitytypebase.keymembers.aspx

然后,如果您只有 1 个密钥,您可以检索该密钥并使用DeclaringTypeEdmMember 类的属性。

http://msdn.microsoft.com/en-us/library/system.data.metadata.edm.edmmember.aspx

作为旁注,我可能会考虑扩展EntityClassOpening方法以将您的通用接口添加到开放声明中

于 2013-07-25T09:08:38.370 回答