【问题标题】:Multiplicity constraint violated. The role Child_Parent_Target of the relationship Child_Parent has multiplicity 1 or 0..1违反了多重性约束。关系 Child_Parent 的角色 Child_Parent_Target 具有多重性 1 或 0..1
【发布时间】:2014-01-29 02:38:42
【问题描述】:

我做了很多研究,但没有找到任何符合我的问题的答案。我什至尝试使用 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.SaveChanges

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

谁能帮帮我?我正在为此苦苦挣扎,在隧道尽头看不到光。

【问题讨论】:

  • 您确实应该显示引发此异常的代码。
  • @GertArnold 感谢您的评论。但我想我已经清楚地解释了一切。顺便说一句,我已经回答了这个问题,我真的建议你检查一下。从我的角度来看,这很有启发性。无论如何,再次感谢您。

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


【解决方案1】:

我能够使用 GraphDiff 惊人的库来解决我的问题。当谈到父母/孩子的坚持时,它只是为我们做了一切。

查看此帖子:GraphDiff - Allowing automated updates of a graph of detached entities

【讨论】:

    猜你喜欢
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多