我在 ASP.NET 会话中缓存了 NHibernate 会话。
我遇到了一种情况,用户编辑了一个对象,因此它位于 ISession 的一级缓存中。然后另一个用户编辑了同一个对象。
此时,用户 1 仍然可以看到其编辑的原始版本,而用户 2 可以看到对象的正确状态?
什么是处理这个问题的正确方法,而不是一直为每个对象显式地手动调用 session.Refresh(myObj) ?
我还启用了二级缓存。对于 NHibernate 长会话,我应该完全禁用一级缓存吗?
编辑:为我希望从10.4.1 实现的目标添加更多术语。具有自动版本控制的长会话本节的结尾以
由于 ISession 也是(强制的)一级缓存并包含所有加载的对象,因此我们可以适当地将此策略用于几个请求/响应周期。这确实是推荐的,因为 ISession 很快也会有过时的数据。
我不确定这是什么类型的文档,它可能包含两者,然后立即说会话将具有陈旧的数据(这就是我所看到的)。这里有什么解决方案或没有解决方案?