【发布时间】:2009-11-17 10:58:21
【问题描述】:
我在一台机器上运行了两个应用程序,其中 NHibernate 用作 ORM。一个应用程序正在管理对象(CRUD 操作),而另一个应用程序正在处理对象(获取、处理、设置状态和保存)。
首先我让处理应用程序处理一个对象并将状态设置为已处理。然后我在数据库中手动更改文本属性并重置状态(使其再次处理)。手动数据库编辑是模拟管理应用程序。然后我开始看到问题:
虽然我已经在数据库中更改了事件,但读取的对象仍然具有旧的文本属性。我猜NHibernate缓存是这里的问题。
当我将对象的状态设置为已处理时,它会在更新时使用 where 子句中的所有属性,这意味着它不会在数据库中更新。这是因为它在属性中包含错误的文本。我猜这也与缓存有关。
状态不更新的后果是同一个对象(带有错误文本)被一遍又一遍地处理......
有谁能帮我设置 NHibernate 以使这个问题消失吗?
【问题讨论】:
标签: nhibernate caching concurrency