我正在使用 Code First/Fluent API 设计一个数据库并面临这个问题:
如何映射可以引用不同表的 FK?
这是场景:
我有一个具有 5 级层次结构的科目表。
从上到下(一对多:Acc1 可以有多个 Acc2 以此类推,Acc2 必须有一个 Acc1):
帐户 1 -> 帐户 2 -> 帐户 3 -> 帐户 4 -> 帐户 5
示例:供应商可以在任何科目表中:1 或 2 或 3 或 4 或 5。(这是商业自动化中的规则)。
如何使用流利的 API 进行处理?
我正在使用 Code First/Fluent API 设计一个数据库并面临这个问题:
如何映射可以引用不同表的 FK?
这是场景:
我有一个具有 5 级层次结构的科目表。
从上到下(一对多:Acc1 可以有多个 Acc2 以此类推,Acc2 必须有一个 Acc1):
帐户 1 -> 帐户 2 -> 帐户 3 -> 帐户 4 -> 帐户 5
示例:供应商可以在任何科目表中:1 或 2 或 3 或 4 或 5。(这是商业自动化中的规则)。
如何使用流利的 API 进行处理?
不仅是你试图用 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)。