Я действительно борюсь с NHibernate здесь. Я пытаюсь сделать мою DAL-сборку очень общей, чтобы она работала в веб-тексте, в WCF и в WinForms / WPF. Моя проблема здесь в сессиях.
Ленивая загрузка - это хорошо, и я действительно этого хочу, но после закрытия сеанса, в который вы загрузили объект, вы не можете больше загружать. Для меня это очень важно, так как я не знаю, в каком объеме мне начинать / заканчивать свои сессии.
Я видел много людей, начинающих их на HttpContext.Begin и заканчивающих их на .End, но это нереально для меня, так как я не хочу, чтобы моя сборка ссылалась на System.Web или была связана вызываться в HttpContext.
Другой вариант - оставить один сеанс на весь жизненный цикл сборки DAL. Какие плюсы и минусы в этом подходе? Сборка будет в основном работать в качестве бэкэнда на веб-сайте, но также будет выполнять некоторую работу для приложения WinForms.
Кто-нибудь? :)
[EDIT]
Другой вариант для меня - написать собственные прокси-коллекции с отложенной загрузкой, которые, в свою очередь, откроют новый сеанс и получат все данные, которые должны быть в коллекции. Любые комментарии по этому подходу?