使用外键对象引用更新实体

时间:2018-10-15 07:43:58

标签: c# asp.net .net asp.net-mvc entity-framework

在实体框架中,我有两个实体:

public class Parent
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Child Child { get; set; }
}

public class Child
{
    public int Id { get; set; }
    public string Name { get; set; }
}

现在数据库中有两个Child

Id: 1, Name: "First"
Id: 2, Name: "Second"

我还有一个Parent,具有以下属性:

Id: 1, Name: "Parent", Child_Id: 1

现在我正在尝试像这样更改外键:

using (var c = new Context())
{
    var parent = c.Parents.First(record => record.Id == 1);
    parent.Child = new Child(2, "Second")
    c.SaveChanges();
}

但是它给出了错误:

  

无法定义两个对象之间的关系,因为   它们被附加到不同的ObjectContext对象上。

请说明原因,并给出实现目标的解决方案。

1 个答案:

答案 0 :(得分:0)

问题是,我在这样的不同上下文中创建Child:

parent.Child = new Child(2, "Second")

相反,我必须像这样从给定的上下文中获取对象:

parent.Child = c.Childs.Find(2);