2012-02-16 82 views
0

在運行代碼後,item.Name仍然會顯示「New Item」。EntityFramework更新不會進行更改

這裏有什麼問題?

item.Name = "Updated Item"; 

items.Update(item); 

public void Update(Item item) 
    { 
     using (var context = new wirvar_masterEntities()) 
     { 
      var key = new EntityKey("wirvar_masterEntities.Items", "ID", item.ID); 

      var itemToUpdate = (Item)context.GetObjectByKey(key); 

      if (itemToUpdate == null) return; 
      itemToUpdate = item; 

      context.SaveChanges(); 
     } 
    } 
+0

有什麼異常? – 2012-02-16 13:53:36

回答

2

要做到這一點,嘗試做你的GetObjectKey後的對象上下文ApplyCurrentValues方法。然後所有的值都應該更新。

0

你正在處理引用...而是映射的屬性,比思考改變指針會做到這一點!

3

錯誤的是沒有保存更改。您從數據庫收到您的itemToUpdate,並且在您將數據替換爲參考項目之後 - EF永遠不知道您所做的任何更改,因爲將item分配給itemToUpdate什麼都不做。而不是分配嘗試使用:

context.Items.ApplyCurrentValues(item);