NHibernate кэш / проблема удаления? - PullRequest
5 голосов
/ 22 марта 2010

Я использую 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 Ответ

4 голосов
/ 23 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...