0

我有一个抽象基类Contact,它有两个子类:PersonCompany实体框架多继承?

我想有一个CustomerVendor或其他类型的可以是CompanyPerson(所有共享相同的主键ContactId)。

我的问题是,如果有可能从Contact继承所有这些类型?如果答案是否定的,是否有另一个选择使用PK中的Contact属性?这种情况下推荐的设计是什么?

请注意,我希望Employee/Customer等也可以是User

回答

1

你会如何在C#中实现这一目标?也就是说,你必须回答自己,因为.NET不支持多继承,所以你不能从Person或/和Company衍生的单一Customer类的第一个问题 - 你需要单独Customer类从Person派生和另一Customer类从Company衍生而来,但每次你看到这个,你都应该知道你做错了什么。此外,如果您将来发现您需要拥有既是Employee也是Customer的联系人,那么您将准备好删除整个应用程序,因为通过继承将无法实现此目的。将ContactCustomer更改为Employee将只能使用直接SQL,因为EF不允许这样做。

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

+0

也称为策略设计模式。 – Brady

+0

我最终创建了一个'Contact'与'Contact'(可以是'Company'或'Person')的外部关系。 – Shimmy