NHibernate кэш 1-го уровня

Контекст: я работаю над приложением Windows.NET 3.5, которое аварийно завершает работу, когда ОЗУ полностью заполняется кэшированием NHibernate 1-го уровня.

Вопрос 1: выполняет ли алгоритм кэширования 1-го уровня NHibernate проверки памяти, чтобы гарантировать наличие достаточного места?

Вопрос 2: Правильны ли следующие шаги псевдокода при использовании метода Evict?

1 - сессия. Запрос

2 - сохранить результаты запроса

3 - сессия. Выселение

4 - вернуть сохраненные результаты

Обновить

В контексте, где сеансы создаются в начале приложения и удаляются только после завершения приложения, я хочу контролировать размер кэша первого уровня NHibernate. Документация NHibernate подробно объясняет, как работает кеш и как им управлять, но не упоминает размер кеша, что является проблемой в моем случае.

Вопрос 3: возможно ли узнать размер кэша сеанса (чтобы впоследствии очистить его при необходимости)? В качестве альтернативы, можно ли установить ограничение на размер кэша, который Nhibernate может использовать для всего приложения?

1 ответ

Как правило, вы не должны использовать один сеанс для вашего приложения. Обычно вы должны создать по одной на единицу работы. Есть несколько примеров управления сессиями в настольных приложениях: один два

Другие вопросы по тегам