Ответы - CodeHelperСписок последних 15 ответов на вопрос с сайта CodeHelperuuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=992012-09-25T10:07:53Zuuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=100Управление жизненным циклом сессии NHibernate в веб приложении (ASP.NET)2009-12-04T06:21:47-06:002009-12-04T06:21:47-06:00admaxКак правильно организовать открытие/закрытие сессии NHibernate в приложении на ASP.NETuuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=101Ответ от Чак Норрис на вопрос с сайта CodeHelper2009-12-15T04:06:19-06:002009-12-15T04:06:19-06:00Чак НоррисNHibernate, как и большинство ORM-библиотек, использует шаблон UnitOfWork, чтобы управлять жизненным циклом таких объектов как сессия и транзакция. Обычно, чтобы не привязывать логику отображения к логике ORM, в приложениях пишется собственный класс UnitOfWork , являющийся оберткой над сущностямиuuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=102Ответ от Чак Норрис на вопрос с сайта CodeHelper2009-12-15T04:12:44-06:002009-12-15T04:12:44-06:00Чак НоррисДля веб-приложения логично привязать время жизни сессии NHibernate ко времени жизни запроса (request). Новая сессия открывается при запросе к серверу и закрывается когда запрос обработан и пользователю вернулся ответ. Практически все web-каркасы поддерживают механизм слежения за жизненным цикломuuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=103Ответ от gor на вопрос с сайта CodeHelper2010-09-23T06:03:05-05:002010-09-23T06:03:05-05:00gorЯ обычно в конструкторе веб приложения (класс, который наследуется от System.Web.HttpApplication) добавляю следующий код: BeginRequest += (sender, args) => { try { CurrentSession = NHibernateManager.OpenSession(); } catch (Exception ex) { _log.Error(ex); throw; } }; EndRequest += (sender, args)