asp.net-mvc - 实体框架 -stange行为

asp.net-mvc - 实体框架 -stange行为,第1张

我有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表无关的内容,则能够复制此项。这会创建以下链接的链接。

asp.net-mvc - 实体框架 -stange行为,Broken EDMX Model,第2张

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

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

    1. 右键单击"添加新关联"在Site和SectionSite之间取消选中"将外键属性添加到'部分'实体"
    2. asp.net-mvc - 实体框架 -stange行为,Add Association,第3张

      1. 然后你需要选择创建的关系,属性 - >参考约束和更新以满足您的FK关系。
      2. asp.net-mvc - 实体框架 -stange行为,Modify Referential Constraint,第4张

        1. 一旦您开心,右键单击并验证您的模型,它现在应该有效吗?
        2. 答案 1 :(得分:0)

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

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

          本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复