我想实现以下方案:
1)用户保存一些数据并产生db错误。该事务被回滚并且会话已关闭。
2)用户更正数据并再次保存而不会出现问题。
我已经实现了以下代码:
session = _sessionFactory.OpenSession();
session.BeginTransaction();
try
{
session.SaveOrUpdate(entity);
session.Transaction.Commit();
}
catch (Exception)
{
session.Transaction.Rollback();
session.Close();
throw;
}
在更正数据后再次保存时,出现以下错误:
> Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)
现在,当我使用session.Merge而不是session.SaveOrUpdate时,这是有效的。但是,我在其他地方遇到问题......
我真的很想理解为什么关闭Session是不够的,那么NHibernate现在该实体属于以前的会话/事务......
感谢您的帮助!