实体框架4.0:错误113:多重性在角色中无效

ara*_*333 65 entity-framework

我在我的数据库中放了一个新表,并且有4个表与它有外键关系.我以为我以同样的方式配置了所有4个,但是我得到了这个错误;

错误15错误113:关系'FK_OtherLeaves_ReportCellImages'中的角色'ReportCellImage'中的多重性无效.由于"从属角色"中的所有属性都可以为空,因此"主体角色"的多重性必须为"0..1".

所以简化我的表格;

ReportCellImage表包含ReportCellImageId字段,该字段在主键和整数中

OtherLeave表包含ReportCellImageId字段作为可以为空的外键,默认值为4

其他表类似,并且都具有配置为与ReportCellImage表连接的外键

这是最近的更改,因此当我从数据库更新我的edmx文件时,为什么会出现此错误以及如何解决?

Ste*_*rov 63

我只是有相同的消息,这令人困惑,因为我在DB中修改的表与我收到消息的表不同.

我尝试更改多重性0..1对多,但消息仍然存在,即使在"运行自定义工具"命令,清理和重建之后.

通过删除关系EF解决了并且从DB更新模型

  • 这很不幸,但EF似乎经常出现这种情况.你可以花费多年时间试图弄清楚你做错了什么,但最后得出结论认为它不是你:( (12认同)
  • 有时只需关闭并重新打开解决方案就可以使这些错误消失. (6认同)
  • 仍然有效."从数据库刷新模型"(EF 6.1.3)不会以正确的方式更新关系.此解决方案可节省时间 谢谢. (6认同)
  • 尝试了很多东西之后,你的简单方法奏效了:) (5认同)
  • EF + <任何问题> = 删除并重新创建 (3认同)

Lad*_*nka 58

如果您的FK可以为空,则主体实体的多重性必须为0..1 - 默认值在此中没有任何作用,因为您可以为FK分配null.因此,所有依赖实体必须与主体实体处于0..1 - *关系.

  • EF不允许你这样做.如果您的字段可以为空,则不能包含1到多个字段.您必须使用0..1到多个. (3认同)

Pas*_*oni 10

右键单击EDX diagrame中的关系.在proprety中,将END1 Multiplicity更改为0..1(零或一个YOURTABLENAME)

  • 正确答案 - 但 IMO 在“关联”部分中的数据库模型浏览器中比在图表中更容易做到。 (3认同)

Izz*_*zzy 5

我从模型中删除了更新的表,然后在从数据库中更新模型中,再次添加它并且它有所帮助。


小智 5

我使用数据库优先的方法来创建 .edmx 文件。当我遇到这个问题时,我尝试了上面的几个建议,但仍然出现错误,所以我删除了 .edmx 文件并从更新的数据库中刷新了整个文件。

我发现有时 EF 在更新现有数据库后会感到困惑,虽然找到根本原因是理想的,但在工作环境(例如我的)中花费一个小时来处理某些事情可能是不可能的

我们的数据库是新的而且很小,所以刷新文件很容易,不需要那么长时间。
问题消失了,继续。. .


小智 5

它要求您将主要角色更改为 0..1,而不是整个关系,以便关系变为 0-1 到 Many。

  1. 右键单击 edmx 图中的关系线
  2. 选择属性
  3. 将 End1Multiplicity (ReportCellImages) 从 1 更改为 0..1
  4. 重建