Как определить объем сессий NHibernate и транзакций в приложении WPF

Я относительно плохо знаком с WPF и для NHibernate и пытающийся создать приложение, которое комбинирует эти два, с помощью шаблона MVVM. Однако я изо всех сил пытаюсь понять, когда и где мое приложение должно открыть и закрыть сеансы NHibernate и транзакции.

Из того, что я читал, рекомендуется, чтобы сессии были сохранены максимально короткими. Поэтому кроме очевидных соображений потокобезопасности, я предполагаю, что это не корректно, чтобы открыть сессию на прикладном уровне и совместно использовать его вокруг? С другой стороны, я также понимаю, что очень короткие сессии (ограниченный по объему в бизнес-методах) будут приводить к отдельным объектам и также препятствовать тому, чтобы я использовал ленивую загрузку NHIBERNATE. Действительно ли это - нормальный и неизбежный способ разработать приложение WPF/NH?

К сожалению, все хорошие примеры кода (и единственная книга, которую я могу найти по этой теме - NHibernate в Действии) фокусируются к приложениям ASP.NET, где лучшая практика по-видимому довольно ясна - сессия и транзакция охватывают точно один Запрос HTTP.

Так, я ценил бы некоторое руководство от разработчиков WPF, чтобы помочь мне понять управление сеансами в WPF (идеально указывающий на меня на некоторые хорошие примеры кода).

Большое спасибо,

Tim

14
задан Tim Coulter 12 February 2010 в 15:51
поделиться