【发布时间】:2011-01-30 10:10:52
【问题描述】:
我正在使用 NHibernate,并且在我的 NHibernate 配置中指定了一个缓存区域:
<cache region="HalfHour" expiration="1800" priority="3" />
我有一个实体定义 (UserDefinedGroup),它被设置为在读写模式下使用这个缓存区域:
<class name="UserDefinedGroup" table="Message_Groups">
<cache region="HalfHour" usage="read-write" />
...
</class>
我还有一个 HQL 查询设置为使用查询缓存,因为它返回大量 UserDefinedGroup 实例:
var results = Session.CreateQuery("from UserDefinedGroup order by Name")
.SetCacheable(true)
.SetCacheRegion("HalfHour")
.List<UserDefinedGroup>();
但是,当我尝试删除 UserDefinedGroup 的实例时,即使实体设置为使用读写缓存,我也会收到以下错误。
ReadOnlyCache:无法写入 只读对象 Cristal.Model.UserDefinedGroups.UserDefinedGroup
我是否完全错过了这一点或误解了 NHibernate 缓存?我希望这会执行删除并且缓存会适当地自行处理,但显然这不会发生。
【问题讨论】:
-
这个缓存区域是否被其他实体使用?如果是这样,缓存的使用是否是只读的?特定区域应该只有一种使用类型。
-
谢谢 ddango,这似乎是确切的问题。将其移动到新的缓存区域可以修复它。如果您将其作为答案而不是评论发布,我会接受您的答案作为解决方案:)
标签: .net nhibernate caching