2012-02-16 11 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

例外はありますか? –

答えて

2

これを行うには、あなたのGetObjectKeyをやった後、オブジェクトコンテキストにApplyCurrentValues方法を試してみてください。その後、すべての値が更新されます。

0

あなたは参照を扱っています...むしろポインタを変更すると思っているよりもプロパティをマップしています!

3

保存するための変更は間違っています。データベースからitemToUpdateを受け取った後、データの後にアイテムを参照して置き換えました。itemitemToUpdateを割り当てても何も行われないため、EFは変更を認識しませんでした。割り当てる試みを使用する代わりにその:

context.Items.ApplyCurrentValues(item); 
関連する問題