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