2012-04-06 9 views
1

私は、DBから特定のレコードを更新するには、次のコードを使用しています:Entity Frameworkの:(代わりに、更新の)挿入される更新されたレコード

 IList<Item> list; 
     using (DbContext context = new DbContext() 
     { 
      list = Item.ToList(); 
      foreach (Item item in list) 
      { 
       // attach the item 
       context.Item.Attach(item); 

       item.Updated = DateTime.Now; 
       context.Items.Add(item); 
       context.SaveChanges(); 
      } 
     } 

問題はEFが新しい項目を挿入する代わりに、更新していることです更新された項目...私はサイト上でabitを検索し、項目をDbContextにアタッチするための提案を見ましたが、どちらも機能しません。何が間違っているのですか?

+0

こんにちは、私は私の答えに少し変更を加えました: 'SaveChanges'はループ内ではなく、' foreach'ループの後に一度だけ呼び出すほうがよいでしょう。 – Slauma

答えて

6

手順は次のようになります。あなたがINSERTを意味Addを呼び出している

using (DbContext context = new DbContext() 
{ 
    foreach (Item item in list) 
    { 
     item.Updated = DateTime.Now; 
     context.Entry(item).State = EntityState.Modified;//attaches automatically 
    } 
    context.SaveChanges(); 
} 

関連する問題