我在一台机器上运行了两个应用程序,其中NHibernate用作ORM。一个应用程序是管理对象(CRUD操作),而另一个是处理对象(获取,处理,设置状态和保存)。
首先,我让处理应用程序处理一个对象并将状态设置为已处理。然后我在数据库中手动更改文本属性并重置状态(以使其再次处理)。手动数据库编辑用于模拟管理应用程序。然后我开始看到问题:
读取对象仍然具有旧的text属性,虽然我在DB中更改了它。我想NHibernate缓存就是问题所在。
当我将对象的状态设置为processed时,它在更新时使用where子句中的所有属性,这意味着它不会在数据库中更新。这是因为它在属性中包含错误的文本。我猜这也与缓存有关。
状态未更新的结果是一遍又一遍地处理相同的对象(错误的文本)......
有谁可以帮我解决我应该如何设置NHibernate来解决这个问题?
答案 0 :(得分:0)
最好在你想要的对象上调用refresh
方法,因为flush可能会产生不必要的副作用。