1

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

如何映射可以引用不同表的 FK?

这是场景:

我有一个具有 5 级层次结构的科目表。

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

帐户 1 -> 帐户 2 -> 帐户 3 -> 帐户 4 -> 帐户 5

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

如何使用流利的 API 进行处理?

数据库模型

4

1 回答 1

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)。

于 2015-01-22T12:47:37.430 回答