Как проверить мой NHIbernate с помощью WebSessionContext - PullRequest
0 голосов
/ 02 мая 2018

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

1) Как выполнить модульное тестирование кода уровня данных, поскольку модульные тесты не являются веб-приложениями, поэтому нет HttpSession, который может использовать NHibernate. (Я думаю, что параметризация типа SessionContext и использование различных SessionContext s для тестирования и тестирования - плохая идея, поскольку это приведет к тому, что не будет проверяться реальное поведение в реальной среде).

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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...