如何拥有多对多的多对多关系

时间:2012-07-24 17:15:28

标签: c# visual-studio-2010 entity-framework entity-framework-4 devart

我的问题很简单,但我似乎无法让EF了解我的数据库架构(Oracle)。

问题

我想模拟超过1 的M-M关系,请参见下图:

enter image description here

正如你所看到的,我有一本书和一本期刊 - 我希望通过使用链接表(交汇表,交叉表,你得到它)来存储这两者的URI。在这种情况下,它恰好是我想要存储在Journal 16和Book 75中的“www.google.com”,它们将以蓝色标记的以下格式存储在链接表中。为了完整起见,我为ID为5的链接添加了一个绿色示例。 所以你可以看到数据是如何组合在一起的,我想你会同意它并不是太疯狂。

无论如何,当我尝试更新EF模型时,它会抱怨(在Visual Studio中)出现错误。

  

从第210行开始映射片段的问题:从表REF_URI(REF_ID)到表格期间(REF_ID)的外键约束'REF_URI_JOURNAL_FK1':表REF_URI的列被映射到AssociationSet BOOK_URISet的End BOOKs,但表的Journal列的键列未映射到与此End对应的EntitySet BOOK的键。

是的 - 没有真正收到错误信息!
我可以让EF使用1 M-M关系,例如

enter image description here

这一切都有效“hunky dory”,但是当我添加第二个M-M关系时,它就会出现上面的错误消息,例如

enter image description here

任何人都知道如何绕过这个?

1 个答案:

答案 0 :(得分:3)

对于两个多对多关系,您需要两个链接表(联结表,交集表)REFBOOK_URIREFJOURNAL_URI。我认为这是异常以一种神秘的方式说的。如果您只有一个表,则意味着如果Journal 123链接到URI 789,那么Book 123也必须链接到URI 789,因为链接表中的REF_ID列将是 JournalBook表。