实体框架无法识别的唯一密钥

时间:2010-01-26 17:40:22

标签: c# .net sql entity-framework entity-framework-4

我有两个表,ReportsVisualizationsReports有一个字段VisualizationID,它通过外键指向Visualization的同名字段。它还具有在现场声明的唯一键。 VisualizationID不可为空。这意味着关系必须为0..1到1,因为每个 Reports记录必须具有与之关联的唯一非空Visualizations记录。

实体框架不会这样看待它。我收到以下错误:

Error 113: Multiplicity is not valid in Role 'Report' in relationship 'FK_Reports_Visualizations'. Because the Dependent Role properties are not the key properties, the upper bound of the multiplicity of the Dependent Role must be *.

这里有什么问题?如何让EF识别正确的关系多样性?

2 个答案:

答案 0 :(得分:3)

EF抱怨,因为它听起来像你正在使用FK关联 - 这意味着VisualizationID是实体的属性,并且还有一个可视化引用 - 你不能用FK关联这样做。

但是,如果您使用独立关联 - 这意味着没有VisualizationID属性 - 您可以缩小基数。

因此,解决方案是从实体中删除VisualizationID属性,此时您需要继续映射关联。

希望这有帮助

亚历

答案 1 :(得分:2)

我只是偶然发现了同样的问题 - 亚历克斯,你的解释在我的情况下是正确的,但当然通过从概念模型中删除FK列,我不再能够在以后切换我的相关对象通过改变FK字段的值...我将不得不恢复旧的技巧来做到这一点!

有没有计划允许我们吃蛋糕并以1到0..1的关系吃它,也就是说能够拥有FK字段?

格雷格

(p.s。我会评论,但我的代表还不够高!)