实体框架多继承?

时间:2012-05-15 02:01:43

标签: entity-framework design-patterns inheritance entity-framework-4.1 code-first

我有一个抽象基类Contact,它有两个子类:PersonCompany

我希望拥有CustomerVendor或其他类型,可以是CompanyPerson(所有类型共享相同的主键{{1} })。

我的问题是,是否可以从ContactId继承所有这些类型?如果答案是否定的,是否还有另一种方法可以利用PK中的Contact属性?这种情况的推荐设计是什么?

请注意,我希望Contact / Employee等也可以成为Customer

1 个答案:

答案 0 :(得分:1)

你将如何在C#中实现这一目标?这是你必须回答的第一个问题,因为.NET不支持多继承,因此你不能拥有源自Customer或/和Person的单个Company类 - 你需要单独{ {1}}来自Customer的类和来自Person的另一个Customer类,但每次看到这个时,您都应该知道自己做错了什么。此外,如果您将来发现需要具有CompanyEmployee的联系人,您将准备删除整个应用程序,因为继承将无法实现这一点。只有直接SQL才能将CustomerContact更改为Customer,因为EF不允许这样做。

继承不是解决您问题的方法 - 您必须使用合成(关系)。

相关问题