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

Inheritance 如何为实体框架中的所有实体定义公共属性,inheritance,entity-framework-4,mapping,Inheritance,Entity Framework 4,Mapping,假设我有UserId(实际上我们几乎所有表都有UserId、adddate、moddate等四列)列,用于几乎所有的实体 如何使这样的列在单独的实体(例如父实体)中可用,并使所有其他实体(子实体)从中继承?如果您使用生成的实体类(POCO或EntityObject),则必须在模型(EDMX)中定义基本抽象实体并在TPC继承中派生其他实体-不要这样做,因为这会带来很多其他问题-例如,您将从基本类型的单个ObjectSet访问所有实体,PK在所有实体中必须是唯一的,等等 另一种方法是使用自定义POC

假设我有UserId(实际上我们几乎所有表都有UserId、adddate、moddate等四列)列,用于几乎所有的实体


如何使这样的列在单独的实体(例如父实体)中可用,并使所有其他实体(子实体)从中继承?

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


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

尝试使用T4模板,就像上面描述的那样,或者,包含一个具有这些属性的基类(从EntityObject继承),并从这个基类继承每个类

我想知道,像所有实体之间共享功能这样重要的事情(例如:CreatedDate、UpdateDate等)如何需要这么多的变通方法,并增加了混乱的可能性。尽管根据我的经验,这在CodeFirst中很容易实现!