Проблема с кешированием в NHibernate QueryOver - PullRequest
0 голосов
/ 15 декабря 2010

Я разрабатываю интеллектуальный клиент для форм Windows, который использует Fluent Nhibernate 1.1 и NHibernate 3.0 для постоянного хранения. Из-за устаревшего кода у меня не было выбора, кроме как создать один сеанс, который обрабатывает все операции CRUD на уровне клиента. Это приводит к тому, что сеанс Nhibernate остается в устаревшем состоянии. Поэтому я принял решение использовать QueryOver для устранения этой устаревшей проблемы с данными, поскольку у меня сложилось впечатление, что результаты запроса не кэшируются. Похоже, этого не происходит, поскольку результаты, возвращаемые из NHibernate, похоже, кэшируются.

Мой вопрос заключается в том, использует ли реализация по умолчанию QueryOver какое-либо кэширование при возврате результатов?

1 Ответ

2 голосов
/ 15 декабря 2010

NHibernate использует карту идентичности, которая гарантирует, что независимо от того, как вы получаете сущность из БД, вы всегда будете получать один и тот же объект для одной и той же строки (то есть внутри сеанса).

Использование одного сеанса для приложения winforms является ошибкой;проблема, с которой вы сталкиваетесь, является лишь верхушкой айсберга.

Для лучшей обработки сеансов в приложениях winforms установите флажок Effectus .

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