【问题标题】:Entity Framework multi-inheritance?实体框架多继承?
【发布时间】:2012-05-15 02:01:43
【问题描述】:

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

我想要CustomerVendor 或其他可以是CompanyPerson 的类型(都共享相同的主键ContactId)。

我的问题是是否可以从Contact 继承所有这些类型?如果答案是否定的,是否还有其他选择使用 PK 中的 Contact 属性?对于这种情况,推荐的设计是什么?

请注意,我希望 Employee/Customer 等也能够成为 User

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 也称为策略设计模式。
    • 我最终创建了一个与Contact 有外来关系的Customer(可以是CompanyPerson)。
    猜你喜欢
    • 2011-05-19
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多