Здравствуйте, Аноним, Вы писали:
А>Хотелось узнать у многоуважаемого All best practice в использовании nHibernate с WinForms либо WPF приложениями, которые активно отображают/редактируют данные из БД посредством байндинга.
Поищите по фразе
session per business transaction. Такой подход
рекомендует разработчик NHibernate Fabio Maulo.
В одном проекте мы использовали такой подход, и все вроде как роботает. Но, пожалуй, его недостатком является то, что он не всегда очевиден, появляется инфраструктурный код, какие то новые абстракции.
Я бы посоветовал вместо классов предметной области (которые мапятся на БД) использовать в GUI специальные DTO или ViewModel классы, которые грузятся напрямую из БД с помощою NHibernate projections (или вообще загружать эти новые классы не используя NHibernate). То есть после загрузки, сессию NHibernate можно закрывать. Но тогда, изменять данные уже нельзя просто изменив состояние объекта — нужно использовать специальные команды для изменения.