【问题标题】:NHibernate cache/deletion problem?NHibernate 缓存/删除问题?
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多