2012-04-11 29 views
0

我正在使用EF 4.3和MVC 3.正在更新EF 4.3的参考关联

在Edit动作中,我收到了模型的实例,并更新了其引用关联。 当我尝试更新德模型我请执行下列操作:除了地址和电话的性能

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

所有客户端类的属性被更新。

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

回答

1

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

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

+0

不知道这是最好的解决方案,但我做的是: _context.Entry(currentClient.Phone).CurrentValues.SetValues(updatedClient.Phone); _context.Entry(currentClient.Address).CurrentValues.SetValues(updatedClient.Address); – vintem 2012-04-11 18:11:44