使用EF 4.3更新引用关联

时间:2012-04-11 00:45:48

标签: asp.net-mvc-3 entity-framework

我正在使用EF 4.3和MVC 3。

在编辑操作中,我收到了我的模型实例,并更新了其引用关联。 当我尝试更新de model时,我会执行以下操作:

public void Update(Client updatedClient)
{
    var currentClient = _context.Clientes.Include("Address").Include("Phone").FirstOrDefault(c => c.ClientId == updatedClient.ClientId);
    _context.Entry(currentClient).CurrentValues.SetValues(updatedClient);
}

除了Address和Phone的属性外,Client类的所有属性都会更新。

我必须手动完成还是有更简单的方法?

1 个答案:

答案 0 :(得分:1)

SetValues仅适用于作为参数传递的实体的标量/复杂属性。它不适用于导航属性,也不会深入到对象图中。

您必须跟踪对updatedClients关系所做的更改并手动设置图表中每个实体的状态,或者您必须比较currentClientupdateClient(及其所有关系)并相应地更新currentClient(再次手动)。对问题的深入解释是here