generics - Entity Framework 在T4上实现通用接口(interface)

标签 generics entity-framework-5 t4

我们的 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/

相关文章:

c# - 从 BlockingCollection 中取出项目的正确方法是什么?

c# - 在 LINQ 中使用条件

c# - Entity Framework 5,Code First 具有额外属性的多对多外键映射

c# - T4 输出到字符串

c# - 关于索引器和/或泛型的问题

ios - 以关联类型作为属性的协议(protocol)

entity-framework - EF5 视觉设计更新但模型不是

properties - 向 T4 模板添加属性 - 选择服务器、数据库、表

visual-studio - T4 模板和 Visual Studio 项模板

c# - 你能在 C# 中将对象转换为 long 吗?