违反了多重约束。 Child_Parent关系的角色Child_Parent_Target具有多重性1或0..1

时间:2014-01-29 02:38:42

标签: c# sql-server-2008 entity-framework code-first entity-framework-6

我做了很多研究,但没有找到任何符合我问题的答案。我甚至尝试使用 The relationship could not be changed because one or more of the foreign-key properties is non-nullable 示例。没有成功。

我正在使用Entity Framework 6 Code First(Fluent API),POCO类。

我有一个名为Parent的类和一个名为Child

的类

一个家长可以有一个或多个孩子(一对多关系)

所以,在我的ParentMapping类中,我做了:

HasMany(p => p.Childs).WithRequired(p => p.Parent).Map(m => m.MapKey("ParentId"));

在我的ChildMapping课程中我做了:

HasRequired(p => p.Parent).WithMany(p => p.Childs).Map(m => m.MapKey("ParentId"));

我坚持(插入,更新和删除)我的孩子poco类,同时我坚持父类。因此,每次保存父类时,它的 Childs 属性中都有一个或多个子对象。因此,父对象负责持久保存其子对象。

我按照上面的例子(参见链接)将数据保存到数据库中。

当我尝试将新子项添加到数据库中已有一个子项的db存在的Parent时,我得到以下消息,并调用 db.SaveChanges

违反了多重约束。 Child_Parent关系的Child_Parent_Target角色具有多重性1或0..1。

任何人都可以帮助我吗?我正在努力解决这个问题,并且在隧道尽头看不到任何光线。

1 个答案:

答案 0 :(得分:0)

我能够使用GraphDiff神奇的库来解决我的问题。在谈论父母/孩子的坚持时,它只为我们做了一切。

在这篇文章中查看:GraphDiff - Allowing automated updates of a graph of detached entities