nhibernate:事务回滚后重试保存实体

时间:2014-01-09 10:28:03

标签: nhibernate transactions rollback

我想实现以下方案:

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现在该实体属于以前的会话/事务......

感谢您的帮助!

0 个答案:

没有答案