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

ste*_*jnl 1 entity-framework updating dbcontext

我正在使用以下代码来更新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();
             }
        }
Run Code Online (Sandbox Code Playgroud)

问题是EF正在插入一个新项目,而不是更新更新的项目......我在网站上搜索了abit并看到了将项目附加到DbContext的建议,但那不起作用?我究竟做错了什么?

Sla*_*uma 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();
}
Run Code Online (Sandbox Code Playgroud)

你正在调用AddINSERT.