无法更新实体框架中的列

本文关键字:框架 实体 更新 | 更新日期: 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();
}