我正在使用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缓存的观点或误解?我希望这可以执行删除,缓存可以自行处理,但显然这种情况不会发生。
答案 0 :(得分:4)
此缓存区域是否被其他任何实体使用?如果是这样,缓存的用法是否为只读?特定区域应该只有一种使用类型。