目前我试图实现处理陈旧状态异常的代码(即,另一个用户已经改变了这行等等)。当我使用nhibernate提交事务时很好。这个想法是,当刷新时发生异常,回滚事务,通过不同方式“修复”实体,然后再次重新运行整个事务代码。
我的问题是,当事务回滚时,对于那些成功更新数据库的实体,实体版本属性仍然增加,即使数据库中的事务已经回滚(实际上对于实体也是如此)交易失败了)。这意味着第二次运行永远不会成功,因为该版本与数据库不同步。
如何解决这个问题?
答案 0 :(得分:4)
当抛出NHibernate异常时,你必须抛弃那个会话,因为状态不再被认为是有效的。
这意味着重新获得实体。