Как проверить мой NHIbernate с помощью WebSessionContext

Я использую NHibernate с WebSessionContext. У меня есть 2 вопроса:

1) Как выполнить модульное тестирование кода уровня данных, поскольку модульные тесты не являются веб-приложениями, поэтому нет HttpSession что NHibernate может использовать. (Я думаю, что параметризация типа SessionContext и используя разные SessionContexts для 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();
    }
}

0 ответов

Другие вопросы по тегам