0

我正在使用 EF 4.3 和 MVC 3。

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

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);
}

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

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

4

1 回答 1

1

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

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

于 2012-04-11T08:25:03.673 回答