假设以下数据库模式:
Table A: AId (PK)
Table B: BId (PK)
Table C: CId (PK)
Table AB: AId, BId (composite PK, FKs to A and B), Data
Table BC: BId, CId (composite PK, FKs to B and C), Data
Table ABC: AId, BId, CId, Data
在数据库中,ABC
有两个 FK:一个到AB
on AId
and BId
,一个到BC
on BId
and CId
。
使用 EF 设计器并尝试从此数据库创建模型。
如果您Include foreign key columns in the model
检查过,它可以工作;但是在模型中包含 FK 列并不是很好。
如果您Include foreign key columns in the model
未选中,则只会ABC
成功映射其中一个 FK。要查看出了什么问题,您必须查看.edmx
xml(感谢 Craig!),然后您会看到以下错误:
警告 6037:存储模型中省略了外键约束“FK_ABC_BC”。表“Model.Store.ABC”的“BId”列是参与多个关系的外键。一对一的实体模型将不会验证,因为数据不一致是可能的。
我已经阅读了我可以在 SO 上找到的关于这个问题的唯一其他提及,我认为这不是同一个问题。在数据库设计级别我看不出有什么问题。我将暂时通过在AB
and上施加代理键来解决这个问题BC
,但我真正想知道的是:
如果它创建了一个模型来匹配数据库,那么 EF 担心在这里发生什么可能的数据不一致?
我能做些什么来说服它一切都会好起来的吗?