Используя FluentNHibernate в веб-приложении, я создал одноэлементный класс SessionFactory, который имеет следующие возможности:
SessionFactory.Instance //returns ISessionFactory
Является ли обычной / лучшей практикой открывать / закрывать сессии следующим образом?
using(ISession session = SessionFactory.Instance.OpenSession())
{
using(ITransaction transaction = session.BeginTransaction())
{
//some operation
}
}
Приведенный выше код будет жить в соответствующих классах хранилища для данной сущности.
Я заметил, что есть тема создания HttpModule для открытия сеанса при запуске и остановке приложения, но мне интересно, является ли это ситуативным или более распространенным.
UPDATE
Продолжая работу с HttpModule, у меня возникает похожая мысль:
С классом репозитория я в основном делаю следующее (config использует WebSessionContext):
using(ISession session = SessionFactory.Instance.GetCurrentSession())
{
using(ITransaction transaction = session.BeginTransaction())
{
//some operation
}
}