NHibernate缓存/删除问题?

时间:2010-03-22 15:57:21

标签: .net nhibernate caching

我正在使用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缓存的观点或误解?我希望这可以执行删除,缓存可以自行处理,但显然这种情况不会发生。

1 个答案:

答案 0 :(得分:4)

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