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/

相关文章:

visual-studio-2008 - 在VS2008中调试tt模板

asp.net - 使用 t4 从另一个程序集读取 web.config

asp.net-mvc-3 - 即使文件不存在,MVC3/T4 自定义脚手架也会给出文件存在错误

swift - 返回通用协议(protocol) swift 的特殊类型的方法

java - 无法在类中实例化泛型数据类型

generics - 如何在Kotlin中将通用类型的实例添加到列表中

c# - "EntityType has no key defined"异常,尽管键是用 HasKey 定义的

c# - 通用参数列表

asp.net-mvc-4 - ASP.NET MVC 电子商务解决方案(商业或开源)

c# - 单独项目中的 EF5 模型看不到 DbContext 方法