【发布时间】:2012-07-24 08:04:48
【问题描述】:
我们有一个棕地多用户应用程序(99% 的 Delphi,1% 的 .net),它使用 NHibernate 来实现 .net 模块的持久性。在我的应用程序中,我可以向某个实体添加类别。如果我选择一个并决定不使用它(从而再次删除类别),我已被 NHibernate 加载,并将留在会话的第一级缓存中。现在,如果其他用户删除此类别并且我尝试保存我的实体,我的应用程序将引发异常,因为加载的对象不再存在。
我的问题:有没有办法检查我的缓存是否加载了不再存在的项目?如果是这样,有没有办法从我的缓存中删除不存在的实体?
那么会发生什么: 我加载一个实体(添加到会话缓存) 我添加一个类别(添加到会话缓存) 其他人从数据库中删除了该类别。 我保存了我的实体,但由于该类别不再存在而发生异常。
它仍在会话缓存中。如果我可以(自动)从我的会话缓存中删除它会很好吗?有没有办法清理缓存并删除不再存在的对象?
问候,泰德
【问题讨论】:
标签: nhibernate concurrency multi-user first-level-cache