我收到此错误:“发生了关系多重性约束违规:EntityReference只能有一个相关对象,但查询返回了多个相关对象。这是一个不可恢复的错误。”
它在循环通过一组对象时发生,在这种情况下,当它到达循环中的第二个对象时。该错误似乎表明我正在循环的列表中的对象的一个引用属性抛出此错误。我知道数据在数据库方面是正确的,所以我不确定实际框架在这里看到它不喜欢什么。
这是有问题的流利配置:
modelBuilder.Entity<TemplateSubscriber>()
.HasRequired(r => r.Role)
.WithOptional()
.Map(m => m.MapKey("RoleID"))
.WillCascadeOnDelete(false);
这个特殊的配置允许我在我的DbMigration中获得正确的SQL,并且我对数据库感到满意,但是EF看到这种关系的方式一定有问题,因为它在尝试加载时会抛出此错误循环中的第二个“TemplateSubscriber”,并且在尝试加载“角色”引用属性时特别看到该错误。
这种关系是一对多的关系,只能从一方获得关系。我无需从角色中访问templateSubscribers列表。所以我想要的是外键关系,以便templateSubscriber必须引用实际角色。
这可能是什么问题?我怎么能看到SQL语句出错了什么,我可能能够诊断我是否能看到SQL。
答案 0 :(得分:1)
这就是答案:
https://stackoverflow.com/a/9269397/1296464
需要将WithOptional()更改为WithMany()
它没有对数据库进行任何更改,但现在有些东西更好。
答案 1 :(得分:0)
我有类似的问题。我是使用LazyLoading而没有将所有导航属性设置为Overridable(c#virtual)的结果。将导航的一端设置为Overridable而另一端不是。
时发生此错误