Добавить комментарий - CodeHelper

Добавить комментарий

Я обычно в конструкторе веб приложения (класс, который наследуется от System.Web.HttpApplication) добавляю следующий код:

BeginRequest += (sender, args) =>
{
    try
    {
    	CurrentSession = NHibernateManager.OpenSession();
    }
    catch (Exception ex)
    {
    	_log.Error(ex);
    	throw;
    }
};
EndRequest += (sender, args) =>
{
    if (CurrentSession != null) CurrentSession.Dispose();
};

Который при каждом новом запросе создает сессию. И при выполнении запроса уничтожает её. Сессия NHibernate хранится в контексте текущего запроса, и доступна везде в приложении. Для доступа к ней я использую StructureMap, но это уже детали.

    public static ISession CurrentSession
    {
        get { return (ISession)HttpContext.Current.Items["current.session"]; }
        set { HttpContext.Current.Items["current.session"] = value; }
    }
Внимание! Вы собираетесь отправить информацию от имени анонимного пользователя.
v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.