代码之家  ›  专栏  ›  技术社区  ›  MatteS

nhibernate、事务回滚和实体版本

  •  2
  • MatteS  · 技术社区  · 15 年前

    目前,我正试图实现处理过时状态异常的代码(例如,另一个用户更改了此行等)。当我使用nhibernate提交一个事务时很好。其思想是,当刷新时发生异常时,回滚事务,通过不同的方法“修复”实体,然后重新运行整个事务代码。

    我的问题是,当事务回滚时,那些成功更新数据库的实体的Entities版本属性仍然增加,即使数据库中的事务已回滚(对于失败事务的实体,这实际上也是如此)。这意味着第二次运行永远不会成功,因为版本与数据库不同步。

    我该如何解决这个问题?

    1 回复  |  直到 15 年前
        1
  •  4
  •   Diego Mijelshon    15 年前

    当抛出nHibernate异常时,必须丢弃该会话,因为状态不再被认为是有效的。

    这意味着也要重新获得实体。