2012-04-11 37 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