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でEntityFramework4.1を使用しています。

レコードを更新していますが、SQLプロファイラーに送信中のキューが表示されています。この問題の原因は何でしょうか。

ポスト:

  [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フィールドが必要です。それ以外の場合は、nullがスローされます。(IDの隠しフィールドを入れるのを忘れました)

于 2012-06-01T14:30:38.067 に答える