我有一个抽象基类Contact
,它有两个子类:Person
和Company
。实体框架多继承?
我想有一个Customer
,Vendor
或其他类型的可以是Company
或Person
(所有共享相同的主键ContactId
)。
我的问题是,如果有可能从Contact
继承所有这些类型?如果答案是否定的,是否有另一个选择使用PK中的Contact
属性?这种情况下推荐的设计是什么?
请注意,我希望Employee
/Customer
等也可以是User
。
我有一个抽象基类Contact
,它有两个子类:Person
和Company
。实体框架多继承?
我想有一个Customer
,Vendor
或其他类型的可以是Company
或Person
(所有共享相同的主键ContactId
)。
我的问题是,如果有可能从Contact
继承所有这些类型?如果答案是否定的,是否有另一个选择使用PK中的Contact
属性?这种情况下推荐的设计是什么?
请注意,我希望Employee
/Customer
等也可以是User
。
你会如何在C#中实现这一目标?也就是说,你必须回答自己,因为.NET不支持多继承,所以你不能从Person
或/和Company
衍生的单一Customer
类的第一个问题 - 你需要单独Customer
类从Person
派生和另一Customer
类从Company
衍生而来,但每次你看到这个,你都应该知道你做错了什么。此外,如果您将来发现您需要拥有既是Employee
也是Customer
的联系人,那么您将准备好删除整个应用程序,因为通过继承将无法实现此目的。将Contact
从Customer
更改为Employee
将只能使用直接SQL,因为EF不允许这样做。
继承不解决您的问题 - 您必须使用组合(关系)。
也称为策略设计模式。 – Brady
我最终创建了一个'Contact'与'Contact'(可以是'Company'或'Person')的外部关系。 – Shimmy