У нас есть WebServer (на основе Orchard CMS) и две базы данных SQL Server: master (операции чтения-записи) и ведомые (только операции чтения). Базы данных синхронизируются путем репликации. WebServer использует NHibernate как ORM.Переключение соединения NHibernate на лету
Мы хотим разделить нагрузку между этими двумя базами данных на следующую схему. Во время обработки запроса мы должны иметь:
- ИСПОЛЬЗОВАНИЕ ведомое
- SELECT FROM T1
- выбрать из T2
- USE мастер
- BEGIN TRANSACTION
- ОБНОВЛЕНИЕ Т1
- UPDATE T2
- COMMIT TRANSACTION
Итак, идея состоит в том, чтобы переключиться на основную базу данных перед операцией смены (UPDATE, DELETE, INSERT). Важно отметить, что существующая инфраструктура использует .Net TransactionScope класс для организации транзакции.
Итак, как достичь этого с помощью NHibernate?