我想在现有的SQL Server基础结构上设置一个EDM,并遇到了一个问题。实体框架不能解决与复合主键的PK-FK关系?
EDM将而不是解决复合外键的PK-FK关系。
我的数据库表结构看起来是这样的(名称更改为保护无辜者):
- 我有一个包含名为PerID(PK)
- 我有一个包含一个OFFICE表中的INT列一个人的表一个名为OffID(PK)的INT列
- 我使用名为OFFICEPONSONS的表将这些表绑在一起,从而在人员和办公室之间创建多对多关系。该表有两个INT列,PerID和OffID,它们一起构成一个复合主键。
- 我有一个名为OFFICELOCATION的表,它包含两个INT列,LocID和OffID。这两列包含一个复合主键。此外,OffID也是OFFICE表的FK。
- 最后,我有一个名为OFFICEPERSONSLOCATION的表。该表有三个INT列:PerID,OffID和LocID。所有三列包含一个复合主键。 LocID和OffID提供与OFFICELOCATION的FK关系,并且OffID和PerID向OFFICERSONS提供FK关系。
到目前为止我和谁?希望我还没有失去你。当所有事情都说完之后,我的结构看起来像这样:
这个结构在SQL Server中很好。在电火花?没那么多。它不会允许我构建OFFICEPERSONSLOCATION和OFFICERSERSONS之间的关系。我得到以下错误:
Error 6037: Foreign key constraint 'FK_OFFICEPERSONSLOCATION_OFFICEPERSONS' has been omitted from the storage model. Column 'OffID' of table 'Model.Store.OFFICEPERSONSLOCATION' is a foreign key participating in multiple relationships. A one-to-one Entity Model will not validate since data inconsistency is possible.
咦?数据不一致?!?怎么样?
如何让我的实体框架认识到这一点?
我意识到实体框架通常不代表交叉参考表,而是在没有交叉参考表的情况下使用多对多关系链接两个表。这是否与我试图将交叉引用表与另一个交叉引用表链接起来? – 2013-02-27 20:53:37
我被告知我的EF版本可能与它有关。不知道我正在运行什么版本,但我认为它早于EF4。我正在运行VS2010。 – 2013-02-27 21:37:50