2012-01-17 2 views
1

У нас есть WebServer (на основе Orchard CMS) и две базы данных SQL Server: master (операции чтения-записи) и ведомые (только операции чтения). Базы данных синхронизируются путем репликации. WebServer использует NHibernate как ORM.Переключение соединения NHibernate на лету

Мы хотим разделить нагрузку между этими двумя базами данных на следующую схему. Во время обработки запроса мы должны иметь:

  1. ИСПОЛЬЗОВАНИЕ ведомое
  2. SELECT FROM T1
  3. выбрать из T2
  4. USE мастер
  5. BEGIN TRANSACTION
  6. ОБНОВЛЕНИЕ Т1
  7. UPDATE T2
  8. COMMIT TRANSACTION

Итак, идея состоит в том, чтобы переключиться на основную базу данных перед операцией смены (UPDATE, DELETE, INSERT). Важно отметить, что существующая инфраструктура использует .Net TransactionScope класс для организации транзакции.

Итак, как достичь этого с помощью NHibernate?

ответ

2

некоторые отправные точки:

  • session.Disconnect();session.Reconnect(connection) для переключения соединения.
  • Возможно использование NHibernate.hards
Смежные вопросы