В настоящее время я играю с классом 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/ factory? Я слышал о "Единице работы" и создании сеанса для каждого веб-запроса, а также в конце. Из того, что я могу сказать, моя текущая реализация не делает ничего из этого. В основном он полагается на репозиторий, чтобы захватить сеанс из сеанса factory и использовать его для запуска запросов.
Есть ли какие-либо проблемы с доступом к базе данных таким образом?