Entity framework 实体框架:正在插入更新的记录(而不是更新的记录)
我正在使用以下代码更新数据库中的某些记录:Entity framework 实体框架:正在插入更新的记录(而不是更新的记录),entity-framework,dbcontext,updating,Entity Framework,Dbcontext,Updating,我正在使用以下代码更新数据库中的某些记录: IList<Item> list; using (DbContext context = new DbContext() { list = Item.ToList(); foreach (Item item in list) { // attach the item
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();
}
}
IList列表;
使用(DbContext context=new DbContext()
{
list=Item.ToList();
foreach(列表中的项目)
{
//附上项目
上下文。项。附加(项);
item.Updated=DateTime.Now;
context.Items.Add(item);
SaveChanges();
}
}
问题是EF正在插入一个新项目,而不是更新更新项目…我在网站上搜索了abit,看到了将项目附加到DbContext的建议,但这也不起作用?我做错了什么?过程应该是:
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
,这意味着插入。过程应该是:
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
,意思是插入。嗨,我对我的答案做了一点更改:通常最好在foreach
循环之后调用SaveChanges
一次,而不是在循环内部。嗨,我对我的答案做了一点更改:通常最好在SaveChanges
一次e> foreach循环,而不是循环内部。