实体框架 - stange行为

时间:2015-07-27 10:52:01

标签: asp.net-mvc entity-framework

我有3个最简单的表格:

http://magicscreenshot.blob.core.windows.net/screenshots/udYWngOVQEM.jpg

和他们之间的关系:

http://magicscreenshot.blob.core.windows.net/screenshots/zTK28gBgkEc.jpg

如果我从零创建一个新项目并创建实体模型(从DB)我收到正确的EF模型:

http://magicscreenshot.blob.core.windows.net/screenshots/ZZg8gpzXFkE.jpg

但是当我尝试为我的真实项目做同样的事情时 - 创建的EF模型非常奇怪

http://magicscreenshot.blob.core.windows.net/screenshots/WfKgc8vBDU8.jpg

我们可以看到,它创建了一个新的实体“SectionSite”,它与Site有关系,与Section无关。为什么会发生以及如何解决?

2 个答案:

答案 0 :(得分:1)

如果您在Section和SectionSite表中添加了与添加Site表无关的内容,则能够复制此项。这会创建以下链接的链接。

Broken EDMX Model

要解决这种身份不匹配问题,您可以。

  1. 同时删除并重新添加Site,Section和SectionSite。
  2. OR

    1. 右键单击"添加新关联"在Site和SectionSite之间取消选中"将外键属性添加到'部分'实体"
    2. Add Association

      1. 然后你需要选择创建的关系,属性 - >参考约束和更新以满足您的FK关系。
      2. Modify Referential Constraint

        1. 一旦您开心,右键单击并验证您的模型,它现在应该有效吗?

答案 1 :(得分:0)

使用Entity Framework,您不必创建映射表。

如果您让您的部门引用多个网站(ICollection)并让您的网站引用多个部分(ICollection),实体框架将为您创建一个SectionSite或SiteSection表。