我在我的数据库中放了一个新表,并且有4个表与它有外键关系。 我以为我以同样的方式配置了所有4个,但是我收到了这个错误;
错误15错误113:关系'FK_OtherLeaves_ReportCellImages'中的角色'ReportCellImage'中的多重性无效。由于“从属角色”中的所有属性都可以为空,因此“主体角色”的多重性必须为“0..1”。
所以要简化我的表格;
ReportCellImage表包含 ReportCellImageId字段在主键和整数
中OtherLeave表包含 ReportCellImageId字段作为可以为空的外键,默认值为4
其他表类似,并且都有一个外键配置为与ReportCellImage表连接
这是最近的更改,所以当我从数据库更新我的edmx文件时,为什么会出现此错误以及如何解决?
答案 0 :(得分:59)
我只是有同样的信息而且令人费解,因为我在数据库中修改的表与我收到消息的表不同。
我尝试更改多重性0..1-to-many但消息仍然存在,即使在“运行自定义工具”命令,清理和重建之后也是如此。
通过删除关系解决EF正在抱怨并从DB更新模型
答案 1 :(得分:58)
如果您的FK可以为空,则您在主体中的多样性必须为0..1 - 默认值在此中没有任何作用,因为您可以为FK指定null。因此,所有依赖实体必须与您的主体实体处于0..1 - *关系。
答案 2 :(得分:8)
右键单击EDX diagrame中的关系。 在proprety中,将END1 Multiplicity更改为0..1(零或一个YOURTABLENAME)
答案 3 :(得分:4)
我从模型中删除了更新的表,然后在“从数据库更新模型”中删除了它,并且它有所帮助。
答案 4 :(得分:2)
我使用数据库第一种方法来创建.edmx文件。当我遇到这个问题时,我尝试了上面的一些建议,但仍然遇到错误,所以我删除了.edmx文件并刷新了更新数据库中的整个文件。
我发现有时EF在更新现有数据库后会感到困惑,虽然找到根本原因是理想的,但在工作环境中花一小时工作可能是不可能的(比如我的)
我们的数据库是新的和小的,所以刷新文件很容易,并且不会花那么长时间 问题消失了,继续前进。 。 。
答案 5 :(得分:0)
添加新表后我遇到了同样的问题,我在这里尝试了所有解决方案,包括放弃关系,但这并没有奏效。对我有用的解决方案是完全删除模型并创建一个新模型。不要忘记删除web.config中的连接字符串,以便新的EF能够使用相同的名称。
答案 6 :(得分:0)
删除实体类中的Entity引用然后在数据库中手动删除引用,然后逐步将它们放回去解决我在完成快速解决方案后意识到的问题,那就是将WithOptional替换为WithReptiond in在我第一次将字段从可空变为不可空之后的上下文。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
答案 7 :(得分:0)
将Multiplicity =“ 1”更改为Multiplicity =“ 0..1”
<Association Name="FK_O_Personel_PBS_AtanmaSekilleri">
<End Type="eKampus_RTEUModel.PBS_AtanmaSekilleri" Role="PBS_AtanmaSekilleri" Multiplicity="0..1" />
<End Type="eKampus_RTEUModel.O_Personel" Role="O_Personel" Multiplicity="*" />
<ReferentialConstraint>
<Principal Role="PBS_AtanmaSekilleri">
<PropertyRef Name="ID" />
</Principal>
<Dependent Role="O_Personel">
<PropertyRef Name="atamaSekliID" />
</Dependent>
</ReferentialConstraint>
</Association>
答案 8 :(得分:0)
此错误的主要原因是,表定义在添加到EF后可能已更改。 解决方案是从EF模型中删除它,然后使用数据库中的更新模型再次添加。
答案 9 :(得分:0)
它要求您将 Principal Role 更改为 0..1 而不是整个关系,以便关系变为 0-1 到 Many。