我的模型类似于以下表示1到0或1的关系。
public class Parent
{
public int ParentId { get; set; }
public Child Child { get; set; }
}
public class Child
{
[Key, ForeignKey("Parent")]
public int ChildId { get; set; }
public Parent Parent { get; set; }
}
我需要替换Parent的Child成员。正在从外部来源收到一个新实例。
但是,在替换Child并尝试保存到数据库之后:
parent.Child = <new instance>
context.Entry(parent).State = EntityState.Modified;
我收到错误
“发生了参照完整性约束违规:属性 关系一端的'Parent.ParentId'的值不会 匹配另一端'Child.ChildId'的属性值。“
如何更换端点?我该如何删除它?感谢
答案 0 :(得分:1)
此外,我认为你有&#34;孩子冲突&#34; :因为你有一对一的关系,所以只有一个孩子可以和父母一起。当您分配newChild时,EF无法存储它,因为已存在相同PK (FK为父级)的另一个(旧)子项。相反,您应删除当前子项,然后分配新子项:
context.Children.Remove(parent.Child);
context.SaveChanges();
parent.Child = newChild;