如何为实体框架中的所有实体定义公共属性

时间:2011-05-19 19:55:02

标签: inheritance entity-framework-4 mapping

想象一下,对于几乎所有实体,我都有UserId(实际上我们几乎所有表都有大约四列,如userId,adddate,moddate等)。

如何让这样的列在一个单独的实体(比如父实体)中可用,并让所有其他实体(子实体)继承它?

2 个答案:

答案 0 :(得分:2)

尝试使用T4模板,如hereheremodify the template所示,以包含具有这些属性的基类(继承自EntityObject),并从此基类继承每个类。

答案 1 :(得分:0)

如果您正在使用生成的实体类(POCO或EntityObject),则必须在模型中定义基本抽象实体(EDMX)并在TPC继承中派生其他实体 - 只是不这样做,因为它将引入许多其他问题 - 例如,您将从基本类型的单ObjectSet访问所有实体,PK必须在您的所有实体中是唯一的等等。

另一种方法是使用自定义POCO类(未生成)或自定义T4模板来创建公共对象继承,但仍然使用设计器中的普通实体而不继承。我认为这是不可能的,但是几天前我用简单的例子测试了它并且它起作用了 - 但是我仍然对这种方法有点怀疑。