如何保持长时间运行的NHibernate Session数据一致?

2024-05-12

我在 ASP.NET 会话中缓存了 NHibernate 会话。

我遇到过一种情况,用户编辑了一个对象,因此它位于 ISession 的第一级缓存中。然后另一个用户编辑了同一个对象。

此时,用户 1 仍然可以看到其编辑的原始版本,而用户 2 可以看到对象的正确状态?

处理此问题的正确方法是什么,而无需始终为每个对象显式调用 session.Refresh(myObj) ?

我还启用了二级缓存。对于 NHibernate 长会话,我应该完全禁用第一级缓存吗?

Edit:为我希望实现的目标添加更多术语10.4.1.具有自动版本控制的长会话 http://nhforge.org/doc/nh/en/index.html#transactions-optimistic-longsession本节的结尾是

由于 ISession 也是(强制的)一级缓存并包含所有加载的对象,因此我们可以仅在少数请求/响应周期中使用此策略。这确实是推荐的,因为 ISession 很快也会有过时的数据。

我不确定这是什么类型的文档,可能会包含两者,然后立即说会话将具有过时的数据(这就是我所看到的)。这里有什么解决方案吗?还是没有?


  • 您无法禁用一级缓存。
  • 查看 ”乐观并发控制 http://nhforge.org/doc/nh/en/index.html#transactions-optimistic“在 NHibernate 文档中。
  • 还看一下NHibernate.Burrow http://nhforge.org/wikis/burrow/introduction.aspx用于长时间对话。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何保持长时间运行的NHibernate Session数据一致? 的相关文章

随机推荐