在Entity Framework中以多对多关系映射复合外键

Kir*_*rst 5 c# entity-framework entity-framework-4

我有一个Page表和一个View表.这两者之间通过PageView表有很多关系.不幸的是,所有这些表都需要具有复合键(出于商业原因).

  • 页面有一个主键(PageCode,Version),
  • View具有(ViewCode,Version)的主键.
  • PageView显然足够有PageCode,ViewCode和Version.
  • FK to Page是(PageCode,Version)和FK to View是(ViewCode,Version)

有意义并且有效,但当我尝试在Entity框架中映射时,我得到了

错误3021:映射片段中的问题...:表PageView中的以下每个列都映射到多个概念侧属性:PageView.Version映射到(PageView_Association.View.Version,PageView_Association.Page.Version)

很明显,EF抱怨版本列是两个外键的常见组件.

显然,我可以在连接表中创建一个PageVersion和ViewVersion列,但这种方法会破坏约束点,即Page和View必须具有相同的Version值.

有没有人遇到这个,有什么我可以做到的吗?谢谢!

Ste*_*ane 6

我不知道实体框架中针对此问题的解决方案,但解决方法可能是将主键列添加到表中,并在要作为复合键的字段上添加唯一约束.这样,您可以确保数据的唯一性,但仍然有一个主键列.在本主题下可以找到Pro-con参数:stackoverflow问题

干杯


Kir*_*rst 3

经过大量阅读和研究,这只是 EF 设计者和验证者在处理多对多关系时的限制。