我正在使用以下代码来更新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的建议,但那不起作用?我做错了什么?
答案 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。