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