我有NHibernate会话缓存在ASP.NET会话中。如何保持长时间运行NHibernate会话数据一致?
我遇到过一种情况,用户编辑一个对象,以便它在ISession的第一级缓存中。另一个用户然后编辑同一个对象。
在这一点上,用户1仍然看到他们的编辑的原始版本,因为用户2看到对象的正确状态?
什么是无需手动调用session.Refresh(myObj)显式地为每个单个对象处理此问题的正确方法?
我也有第二级缓存启用。对于NHibernate长期会话,我应该只是完全禁用第一级缓存?
编辑:添加一些术语,我正在寻找从10.4.1. Long session with automatic versioning本节结束的结论与
由于ISession的实现也是(强制性的)第一级缓存,包含所有加载的对象,我们可以只使用这种策略仅用于一些请求/响应周期。这确实是建议的,因为ISession很快也会有过时的数据。
我不知道这是什么样的文件,它包括可能然后立即说会话将有陈旧的数据(这是我所看到的)。这里有什么解决方案或者没有?
正确的方法是不使用长时间运行的会话。你为什么这样做? – Paco 2010-09-20 19:11:27
这是一个不准确的陈述。长时间运行的会话是完全有效的会话管理模式。不幸的是,它似乎比每个请求的会话复杂得多。 – 2010-09-20 19:14:32
Paco是对的,你没有得到什么ISession用于 – 2010-09-20 19:15:14