Предположим, у меня есть простой вид, который отображает имя продукта и прекращено ли оно. Я извлекаю данные из базы данных Northwind. Я использую простой шаблон представления модели и шаблон DAO с NHibernate. Когда загружается форма, у меня есть свой пользовательский интерфейс с кнопкой «Загрузить» и кнопкой «Сохранить». Если я нажал кнопку «Загрузить», чем в моем коде, я просто передаю вызов своему ведущему, чтобы загрузить данные. Презентатор вызывает DAO для получения данных и заполнения данных данными. Чем я нажал кнопку «Сохранить». снова мой код за спиной передает вызов ведущему. Ведущий должен иметь объект сеанса, который был создан на Load, чтобы сделать оптимистичный параллелизм, отслеживать изменения и т. Д. ...Nhibernate и ISession
Итак, мой вопрос в том, где я могу создать свой объект ISession, чтобы он мог отслеживать изменения и оптимизировать параллелизм?
Не думайте о веб-приложениях. Мне интересно об использовании winform. извините за то, что я не указал, что в моем вопросе – codemnky
Неплохо, создайте свой ISession при запуске приложения, закройте его. Предположительно, ваши операторы базы данных не являются потоковыми, это должно быть хорошо. Используйте диспетчер singleton, если вы посмеете – 2009-07-12 16:46:07
Хотя я могу подтвердить тот факт, что создание одного сеанса для срока службы приложения работает, оно не рекомендуется большинству экспертов nHibernate. Я считаю, что проблема с использованием памяти связана с кешированием и потенциальными проблемами, если выбраны исключения или вам нужно отменить транзакцию. –