Я использую 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 здесь? Я ожидаю, что это приведет к удалению, и кеш позаботится о себе надлежащим образом, но ясно, что этого не происходит.
Эта область кеша используется любыми другими объектами? Если да, существуют ли кэши, которые доступны только для чтения? У конкретного региона должен быть только один тип использования. – ddango
Спасибо ddango, что, казалось, была точной проблемой. Перенос его в новую область кеша исправил его. Я бы принял ваш ответ как решение, если вы разместили его как ответ, а не комментарий :) –