我们的 T4 中有以下部分
<#=codeStringGenerator.EntityClassOpening(entity)#> : IEntity
现在,由于并非所有实体都使用类型 int
作为主键。我想让这个界面变得通用。所以我们可以有 int、guid、long、short 作为类型。 (无法更改类型,遗留数据库)
类似于
public IEntity<TId>
{
TId Id { get; }
}
我现在如何在(默认) Entity Framework T4 中主键的类型是什么?有没有办法访问T4中的主键?
或者是使用部分类的唯一选择? (我不想为此使用分部。因为每次将类添加到模型中时,开发人员都必须了解该接口(interface)并在新的分部类上实现它)
最佳答案
您可以使用KeyMembers
属性
http://msdn.microsoft.com/en-us/library/system.data.metadata.edm.entitytypebase.keymembers.aspx
然后,如果您只有 1 个 key ,您可以检索该 key 并使用 EdmMember 类的 DeclaringType
属性。
http://msdn.microsoft.com/en-us/library/system.data.metadata.edm.edmmember.aspx
作为旁注,我可能会考虑扩展 EntityClassOpening
方法以将通用接口(interface)添加到打开声明中
关于generics - Entity Framework 在T4上实现通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17853200/