0

如果发生死锁,我希望能够重新运行事务。在Ayende 的博客文章中,他提到您需要丢弃整个 NHibernate 会话并重新开始。

在 Windows 应用程序中重新启动会话相对简单,但是当使用 Session-Per-Request 模块时,您将如何在 Web 应用程序中执行此操作?会话在 IHttpModule 中打开和关闭。我能想到的唯一方法是以某种方式重新发布http帖子。这会很麻烦,并且最终可能会重新执行已经成功提交的其他事务(因为我们每个会话有多个事务)。

4

1 回答 1

0

您需要以某种方式公开 ISessionFactory,以便在需要时使用它来创建新的 ISession。一个快速的解决方案是在 global.asax 中设置一个静态属性。

于 2013-10-21T12:59:40.953 回答