Управление сессиями NHibernate в ASP.NET MVC
В настоящее время я играю с классом HybridSessionBuilder, который можно найти в блоге Джеффри Палермо:
http://jeffreypalermo.com/blog/use-this-nhibernate-wrapper-to-keep-your-repository-classes-simple/
Используя этот класс, мой репозиторий выглядит так:
public class UserRepository : IUserRepository
{
private readonly ISessionBuilder _sessionBuilder;
public UserRepository(ISessionBuilder sessionBuilder)
{
_sessionBuilder = sessionBuilder;
}
public User GetByID(string userID)
{
using (ISession session = _sessionBuilder.GetSession())
{
return session.Get<User>(userID);
}
}
}
Это лучший способ управления сессией / фабрикой NHibernate? Я слышал кое-что о модуле работы и создании сеанса для каждого веб-запроса и его сбросе в конце. Из того, что я могу сказать, моя текущая реализация не делает ничего из этого. По сути, он полагается на то, что репозиторий извлекает сеанс из фабрики сеансов и использует его для выполнения запросов.
Есть ли подводные камни для доступа к базе данных таким образом?