Как проверить мой NHIbernate с помощью WebSessionContext
Я использую NHibernate с WebSessionContext. У меня есть 2 вопроса:
1) Как выполнить модульное тестирование кода уровня данных, поскольку модульные тесты не являются веб-приложениями, поэтому нет HttpSession
что NHibernate может использовать. (Я думаю, что параметризация типа SessionContext
и используя разные SessionContext
s для prod и test - плохая идея, так как это приведет к тому, что мы не протестируем реальное поведение в реальной среде).
2) Должен ли я вручную удалять любой сеанс, полученный от GetCurrentSession()
или я могу оставить его, и когда будет удален HttpContext, то и сессия тоже будет удалена?
Моя фабрика запросов выглядит так:
public class HibernateSessionFactory
{
private readonly ISessionFactory sessionFactory;
public HibernateSessionFactory(string connectionString)
{
var msSqlConfiguration = MsSqlConfiguration.MsSql2012.ConnectionString(connectionString);
// msSqlConfiguration.ShowSql().FormatSql();
this.sessionFactory = Fluently.Configure()
.Database(msSqlConfiguration)
.CurrentSessionContext<WebSessionContext>()
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<HibernateSessionFactory>())
.BuildSessionFactory();
}
public ISession GetCurrentSession()
{
if (!CurrentSessionContext.HasBind(this.sessionFactory))
{
CurrentSessionContext.Bind(this.sessionFactory.OpenSession());
}
return this.sessionFactory.GetCurrentSession();
}
public void DisposeCurrentSession()
{
var currentSession = CurrentSessionContext.Unbind(this.sessionFactory);
currentSession.Close();
currentSession.Dispose();
}
}