2010-03-22 4 views
5

Я использую NHibernate и имеет область кэша, указанную в моей конфигурации 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

Am Я полностью отсутствует точка или недопонимание кэширование NHibernate здесь? Я ожидаю, что это приведет к удалению, и кеш позаботится о себе надлежащим образом, но ясно, что этого не происходит.

+1

Эта область кеша используется любыми другими объектами? Если да, существуют ли кэши, которые доступны только для чтения? У конкретного региона должен быть только один тип использования. – ddango

+0

Спасибо ddango, что, казалось, была точной проблемой. Перенос его в новую область кеша исправил его. Я бы принял ваш ответ как решение, если вы разместили его как ответ, а не комментарий :) –

ответ

4

Эта область кеша используется любыми другими объектами? Если да, существуют ли кэши, которые доступны только для чтения? У конкретного региона должен быть только один тип использования.

Смежные вопросы