NHibernate缓存/删除问题?

5

我正在使用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: Can't write to a readonly object Cristal.Model.UserDefinedGroups.UserDefinedGroup

我是不是完全错过了重点或者在这里误解了 NHibernate 缓存?我期望这将执行删除操作,并且缓存适当地自我维护,但显然这并没有发生。

1
这个缓存区域是否被其他实体使用?如果是,缓存的用法中是否有只读的情况?一个特定的区域应该只有一种用法类型。 - ddango
谢谢 ddango,这似乎是确切的问题。将它移到一个新的缓存区域可以解决它。如果您将其作为答案发布而不是评论,我将接受您的答案作为解决方案 :) - Mark Embling
1个回答

4

这个缓存区域是否被其他实体使用?如果是,缓存的使用是否只读?一个特定的区域应该只有一种使用类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接