实体框架:插入更新记录(而不是更新)

时间:2012-04-06 09:55:49

标签: entity-framework dbcontext updating

我正在使用以下代码来更新db中的某些记录:

        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的建议,但那不起作用?我做错了什么?

1 个答案:

答案 0 :(得分: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。