Согласно http://nhibernate.info/doc/nh/en/index.html#manipulatingdata-exceptions, после исключения из базы данных сеанс следует отбросить.
Теперь в нашем веб-приложении в некоторых случаях нормально генерировать и перехватывать исключения ADOException.Например, для нарушения ограничений.
Согласно документу, связанному с нами, мы должны затем прекратить сеанс.Тем не менее, мы все еще хотим поработать с базой данных, если получим нарушение ограничения, поэтому мне нужен новый сеанс.
В наших тестах мы делаем это, вызывая
CurrentSessionContext.Unbind(SessionFactory).Close();
CurrentSessionContext.Bind(SessionFactory.OpenSession());
, но в веб-приложении мы не используем CurrentSessionContext, мы используем LazySessionContext .Поэтому мы не можем напрямую ссылаться на CurrentSessionContext в наших бизнес-классах, поскольку он не используется в Интернете, и мы не можем ссылаться на LazySessionContext, поскольку HttpContext недоступен во время интеграционного тестирования.
Есть ли способ удалить и воссоздать сеанс и подключить его к текущему контексту, без прямой ссылки на класс контекста ?У меня есть объект SessionFactory и объект Session.