NHibernate, Lazy Loadind и Session as Singleton - PullRequest
1 голос
/ 25 апреля 2011

Я новичок в Nhibernate. У меня есть приложение с ленивой загрузкой. Я хочу написать метод

public User GetUser(int id)

в моем классе UserPersister. Позже в приложении я хочу использовать указанное свойство, такое как User.Role или User.Address. Это не сработает, если я закрою сеанс, который я использовал для получения пользователя Моей первой идеей было создать Singleton Session, и тогда я смогу получить все данные. Я прочитал несколько статей, что это плохая идея из-за производительности и утечки памяти. Это правда? Каково решение этой проблемы?

С уважением Martin

Ответы [ 2 ]

0 голосов
/ 26 апреля 2011

Прежде всего помните, что NH сессия! = Sqlconnection. Глобальный (одноэлементный) сеанс, как правило, не очень хорошая идея, даже в wpf, потому что вы можете достичь многопоточного сценария рано или поздно. Но я определенно не стал бы спорить с ерундой производительности в вашем случае. Я бы посоветовал вам открыть его как можно быстрее, чтобы завершить использование. Выполните вид анализа, где вы определяете варианты использования вашего приложения как «сеансы» с ограниченным сроком службы. Например, корзина. Вы начинаете, и вы заканчиваете. Вы можете сделать сеанс вживую, пока не закончите такой сценарий Тогда выбрось ...

0 голосов
/ 26 апреля 2011

Посмотрите на Effectus для простого подхода к WPF + NHibernate.

...