0

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.

我收到此错误,但我是唯一使用数据库的人。我正在使用带有 DBContext 的实体框架 4.1。

我正在更新我的记录,并且 SQL Profiler 显示正在发送一个队列。此问题的原因可能是什么?

帖子:

  [HttpPost]
  public ActionResult EditUser(User user)
  {                 
       uow.UserRepository.Update(user);
       uow.Save();
       return RedirectToAction("Index", "User");

  }

在此通话中:

  public void Save()
  {
        _context.SaveChanges();
  }

这是它的连接方式

  public virtual void Update(TEntity entityToUpdate)
  {
         dbSet.Attach(entityToUpdate);
        context.Entry(entityToUpdate).State = EntityState.Modified;
  }

更新:

public class UnitOfWork : IDisposable
{
    private StudentSchedulingEntities _context = new StudentSchedulingEntities();
    private GenericRepository<User> userRepository;
    private GenericRepository<UserRole> userRoleRepository;
    private bool disposed = false;

    public GenericRepository<User> UserRepository
    {
        get
        {

            if (this.userRepository == null)
            {
                this.userRepository = new GenericRepository<User>(_context);
            }
            return userRepository;
        }
    }
    public GenericRepository<UserRole> UserRoleRepository
    {
        get
        {

            if (this.userRoleRepository == null)
            {
                this.userRoleRepository = new GenericRepository<UserRole>(_context);
            }
            return userRoleRepository;
        }
    }

    public void Save()
    {
        _context.SaveChanges();
    }
    protected virtual void Dispose(bool disposing)
    {
        if (!this.disposed)
        {
            if (disposing)
            {
                _context.Dispose();
            }
        }
        this.disposed = true;
    }
    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }
}
4

1 回答 1

0

必须有 ID 字段才能正确更新信息。否则,它将被抛出一个空值。(我忘了把ID的隐藏字段放进去)

于 2012-06-01T14:30:38.067 回答