2012-01-17 1 views
1

WebServer (Orchard CMS 기반)와 두 개의 SQL Server 데이터베이스 : 마스터 (읽기 - 쓰기 작업)와 슬레이브 (읽기 작업 만 가능)가 있습니다. 데이터베이스는 복제에 의해 동기화됩니다. WebServer는 NHibernate를 ORM으로 사용합니다.즉시 NHibernate 연결 전환

다음 스키마를 통해이 두 데이터베이스 간의로드를 분리하려고합니다. 요청을 처리하는 동안, 우리는 있어야 :

  1. USE 슬레이브
  2. SELECT T1
  3. SELECT FROM USE 마스터
  4. BEGIN TRANSACTION
  5. UPDATE T1
  6. UPDATE
  7. T2
  8. FROM T2
  9. 커밋 트랜잭션

따라서 첫 번째 변경 문 (UPDATE, DELETE, INSERT) 전에 마스터 데이터베이스로 전환하는 것이 좋습니다. 중요한 참고 사항은 기존 인프라에서 .Net TransactionScope 클래스를 사용하여 트랜잭션을 구성하는 것입니다.

그래서 어떻게 NHibernate 함께 이것을 달성하기 위해?

답변

2

일부 출발점 :

  • session.Disconnect();session.Reconnect(connection) 연결을 전환합니다.
  • 아마 NHibernate.shards를 사용할 수있다.