【发布时间】:2010-07-16 12:44:45
【问题描述】:
我正在使用城堡活动记录,我使用 .Find() 方法加载一个实体,更新数据库后我调用 entity.Refresh() 但实体没有刷新,我在数据库中更改的数据是不反映在实体的状态中。我完全不知道如何让它发挥作用。
【问题讨论】:
-
你在使用二级缓存吗?
标签: nhibernate castle-activerecord
我正在使用城堡活动记录,我使用 .Find() 方法加载一个实体,更新数据库后我调用 entity.Refresh() 但实体没有刷新,我在数据库中更改的数据是不反映在实体的状态中。我完全不知道如何让它发挥作用。
【问题讨论】:
标签: nhibernate castle-activerecord
这个问题可能来自 NHibernate 缓存。
为了节省数据库连接,如果一个对象已经从数据库中加载,它会被保存在缓存中(虽然没有过期),如果你想得到这个值,NHibernate会给你缓存的值。
如果您执行 dabase 直接更新,则在缓存过期之前,您不会在应用程序中看到它。
为防止这种情况发生,如果您的基础可以直接更新,您必须停用 NHibernate 缓存。
【讨论】: