无法更新实体框架中的列
本文关键字:框架 实体 更新 | 更新日期: 2023-09-27 17:58:27
我只想更新表中的一列。我必须将活动列的值更改为false。我使用的是实体框架。以下是我尝试的代码:
public void DeleteUser(string userid, string siteid)
{
var user = new User(){UserId = userid, SiteId= siteid, Active = false};
//Changing Active to false, orignially true
db_context.Users.Attach(user);
db_context.Configuration.ValidateOnSaveEnabled = false;
db_context.Entry(user).Property(x => x.Active).IsModified = true;
db_context.SaveChanges();
db_context.Configuration.ValidateOnSaveEnabled = true;
}
我正在调试代码。它到达db_context.SaveChanges()
,然后抛出以下错误:
Store update, insert, or delete statement affected an unexpected number of rows
(0). Entities may have been modified or deleted since entities were loaded.
Refresh ObjectStateManager entries.
这里怎么了?
我假设PlayerInfoes是包含用户的实体集合,如果不更新您的问题,我会修改这个答案。。。
如果你想更新一个现有的实体,并且你得到了一些信息来识别该实体(userid和siteid),那么你可以从你的集合中检索实际的实体,修改它,并保存更改。像这样:
public void DeleteUser(string userid, string siteid)
{
var user = db_context.PlayerInfoes.Where(x=>x.UserId.Equals(userid)
&& x.SiteId.Equals(siteid);
user.Active = false;
db_context.ObjectStateManager.ChangeObjectState(user, EntityState.Modified);
db_context.SaveChanges();
}