【问题标题】:C# - EF 6 Multiple Tables To One FKC# - EF 6 多个表到一个 FK
【发布时间】:2015-01-22 12:20:40
【问题描述】:

我正在使用 Code First/Fluent API 设计一个数据库并遇到了这个问题:

如何映射一个可以引用不同表的外键?

这是场景:

我有一个具有 5 级层次结构的帐户图表。

从上到下(一对多:Acc1 可以有多个 Acc2 以此类推,Acc2 必须有一个 Acc1):

Account1 -> Account2 -> Account3 -> Account4 -> Account5

示例:供应商可以在任何科目表中:1 或 2 或 3 或 4 或 5。(这是商业自动化中的规则)。

如何使用 fluent API 进行处理?

【问题讨论】:

    标签: c# entity-framework ef-code-first poco ef-fluent-api


    【解决方案1】:

    EF 不仅无法实现您想要做的事情;在数据库中是不可能的。单个外键只能引用单个表。

    如果Account 1-5的数据要求相同,你应该考虑将它们组合成一个带有引用自身的外键的单个表:

    Accounts
    ------
    AccountId int not null pk
    Level (1-5)
    ParentId int null fk (references Accounts(AccountId))
    OtherColumnsAsNeeded
    
    Supplier
    ------
    SupplierId int not null fk (references Accounts(AccountId))
    ParentId int not null fk (reference Accounts(AccountId))
    

    这将使 EF 中的建模更加容易。您仍然需要在代码中维护某些业务规则(例如 Level-2 Account 必须有 Level-1 ParentId)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-02
      • 2011-07-30
      • 2015-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多