NHibernate Webapp с несколькими базами данных, какой SessionContext использовать - PullRequest
0 голосов
/ 06 февраля 2012

Мы используем NHibernate с быстрой конфигурацией в нашем веб-приложении.

У нас есть одна база данных конфигурации и множество различных баз данных, содержащих данные клиентов.

Для каждой базы данных мы создаем свободную конфигурациюи SessionFactory при его первом использовании.

Мы получаем сеансы, вызывая для него метод OpenSession, и удаляем его, когда с ним покончено.

Однако иногда мы получаем сообщение об ошибке, котороеустройство чтения данных ADO все еще активно, когда мы пытаемся читать.Указывает, что NHibernate пытается (повторно) использовать то же соединение, чего мы стараемся избегать.

Как мы можем убедиться, что наши запросы к базе данных обрабатываются соединением атомарным способом.(Нет повторного использования другими запросами)

Я думаю, что воссоздание SessionFactory может работать, но это кажется дорогим

1 Ответ

2 голосов
/ 06 февраля 2012

Несколько вопросов

  • Вы используете разные строки подключения, так что это отдельные пулы приложений?
  • Какое точное сообщение об ошибке вы получаете?

Я не понимаю, как это должно быть по вине nHibernate. Если проблема легко воспроизводима, возможно, вы можете попробовать:

  • Трассировка со стороны базы данных, чтобы увидеть что происходит (особенно sp_resetconnection)
  • Отключить пул соединений, чтобы увидеть, если это имеет значение
...