1

次のコードを使用して、データベースから特定のレコードを更新しています。

        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 にアタッチする提案を見ましたが、それも機能しませんか? 私は何を間違っていますか?

4

1 に答える 1

7

手順は次のとおりです。

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

AddあなたはINSERTを意味する呼び出しています。

于 2012-04-06T10:38:58.290 に答える