作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Entity Framework 在循环中更新记录,如下所示:
var data = userDetails.users.Where(x => x.IsAnonymous == true);
foreach(var item in data)
{
var updatedData = db.Users.FirstOrDefault(x => x.UserId == item.UserId);
updatedData.IsAnonymous = true;
db.Users.Attach(updatedData);
db.ObjectStateManager.ChangeObjectState(updatedData, EntityState.Modified);
db.SaveChanges();
}
db.Users.Attach(updatedData);
)我有异常(exception)
The object cannot be attached because it is already in the object context. An object can only be reattached when it is in an unchanged state
最佳答案
如果这一切都发生在单个 DbContext
的上下文中(或 ObjectContext
) - 只需选择记录,更新您想要的字段,然后继续。更新所有记录后 - 然后 调用 .SaveChanges()
一次。不需要 Attach
或 ChangeObjectState
打电话……
var data = userDetails.users.Where(x => x.IsAnonymous == true);
foreach(var item in data)
{
var updatedData = db.Users.FirstOrDefault(x => x.UserId == item.UserId);
if(updatedData != null)
{
updatedData.IsAnonymous = true;
}
}
db.SaveChanges();
updatedData
来自
db.Users
数据集 - 它已经是对象集的一部分 - 无需再次附加它!只需更新您需要的内容,然后调用
.SaveChanges()
(最好是整批一次——而不是每条记录一次......)
关于.net - 异常 :The object cannot be attached because it is already in the object context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16305353/
我是一名优秀的程序员,十分优秀!