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