外键必须映射到概念方面参与外键关联的某些AssociationSet或EntitySets

时间:2013-06-20 02:54:49

标签: entity-framework

我正在尝试在Entity Framework中使用一对一(master,detail)关系,但是,我收到此错误:

从第254,443行开始映射片段的问题:从表options_Advanced(ProductID)到表产品(catalogid)的外键约束'options_Advanced_FK00'::映射不足:外键必须映射到某些AssociationSet或EntitySet在概念方面参与外国关键协会

以下是设计师中的关联:

enter image description here

它说产品 - > 0..1 options_Advanced

我先使用模型而不是代码。我的选项高级表有一个与每个记录关联的产品

产品

  • ID
  • CatalogID
  • 名称

Options_Advanced

  • ID
  • 的ProductID
  • 名称

7 个答案:

答案 0 :(得分:7)

在我正在研究的系统中搜索同一问题的解决方案时,我遇到了这个问题。

我在VS2010中遇到过这种情况,当你从数据库中生成模型时,似乎就会发生这种情况,并且你不会同时包含这些对象。即包括一张桌而不包括另一张桌。

此时我通过删除模型然后重新创建整个模型并在模型中包含我认为可能需要的每个表来解决它。

现在当您添加新表时会发生什么我不确定,因为我正在处理我们希望转换的旧应用程序

答案 1 :(得分:3)

在我的edmx中添加新表后,我也遇到了这个问题。对我来说不幸的是,损坏的外键也出现了。

首先,我尝试通过删除并重新添加新添加的表来修复它。那没用。

然后,在阅读本文about the dark side of EF之后,我最终选择了第二个解决方案并手动修复XML文件。我通过手动删除任何外键并删除关联来完成它。

不可否认,这个解决方案远非完美,每次更新我的edmx时我都必须重新应用解决方案。但是,因为我已经不得不为其他表和其他问题(遗留代码问题)做这件事,这是我真的不介意的努力。

有一件事是肯定的,如果你需要快速获胜,就是这样。

希望我帮助过。

答案 2 :(得分:1)

我从.net 3.5切换到.net 4,这解决了这个问题。

答案 3 :(得分:0)

我知道我复活了一个旧帖子,但我发现这个错误还有不同的解决方法。

当我收到此错误时,我正在修改现有实体模型,以将包含外键约束的新表包含到主表中。事实证明,在数据库中,我没有设置主表和新添加的表之间的外键关系。哎呦。

在数据库中设置这些关系之后,我反转了我在模型中所做的所有编辑。从一个已知的好模型开始,我选择了从数据库更新模型'得到了我期待的模型,没有错误。

答案 4 :(得分:0)

当我将外键从一个表指向另一个表时,我遇到了这个问题。导航属性已清理,但仍然存在对隐藏在edmx中的旧关系的引用。我编辑了XML并手动删除了对旧关系的两个引用。

答案 5 :(得分:0)

在数据库或代码中更改字段属性和关系时遇到了这个问题。您可以通过从数据库进行更新来进行同步,但是有时不起作用,并且会出现此错误

解决方案是创建并触发迁移,然后更新数据库

在程序包管理器控制台中,依次运行以下命令:

添加迁移-IgnoreChanges

(在提示时提供任何名称)

更新数据库

答案 6 :(得分:0)

我收到此错误,而问题只是一个表中的FK列未映射到实体的表映射中(设计器为db-first)。