C# - EF 6多个表到一个FK

时间:2015-01-22 12:20:41

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

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

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

这是情景:

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

从顶部到底部(一对多:Acc1可以有很多Acc2等等,而Acc2必须有一个Acc1):

帐户1 - >帐号2 - >帐号3 - >帐号4 - > Account5

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

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

DB Model

1 个答案:

答案 0 :(得分:1)

不仅是你想用EF做的事情;它在数据库中是不可能的。单个外键只能引用单个表。

如果帐户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帐户必须具有Level-1 ParentId)。