Определение объема сессии GetCurrentSession для настольного приложения - PullRequest
1 голос
/ 08 февраля 2010

Я недавно обнаружил область видимости и контексты nhibernate. кажется , что использовать это для настольного приложения так же просто, как загрузить конфигурацию с ThreadStaticSessionContext, привязать фабрику сеанса к контексту, а затем просто вызвать sessioonFactory.GetCurrentSession () при необходимости.

Я ищу опытных разработчиков nhib, у которых могут быть какие-либо мнения, советы и / или ссылки:
(1) почему это хороший подход к настольному приложению
(2) модульное тестирование с макетами
(3) что делать, когда вы хотите IStatelessSession
(4) как это масштабируется, когда приложение нуждается в веб-функциональности.

1 Ответ

1 голос
/ 08 февраля 2010

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

2) Вы могли бы модульно протестировать этот код, предполагая, что вы абстрагировали вызовы sessionFactory, но, опять же, я думаю, что вам следует взглянуть на сессию чуть больше

3) Хороший вопрос с этой реализацией

4) Вы не сможете использовать ThreadStaticSessionContext с веб-приложениями. Скорее всего, вы захотите использовать для этого Session-Per-Request, создавая новый сеанс в начале запроса и удаляя его в конце.

Я бы рекомендовал абстрагироваться от создания ISession с использованием DI. Если ваш код вызывает XYZ.GetCurrentSession () перед выполнением кода, это плохо. Если это создает новый сеанс (только для использования в текущем контексте), это нормально.

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