2012-01-17 85 views
1

我們有WebServer(基於Orchard CMS)和兩個SQL Server數據庫:master(讀寫操作)和slave(只讀操作)。數據庫通過複製進行同步。 WebServer使用NHibernate作爲ORM。實時切換NHibernate連接

我們希望通過以下模式來分離這兩個數據庫之間的負載。在請求處理我們應該有:

  1. USE從屬
  2. SELECT FROM T1
  3. SELECT FROM T2
  4. USE主
  5. BEGIN TRANSACTION
  6. UPDATE T1
  7. UPDATE T2
  8. COMMIT TRANSACTION

所以我們的想法是在第一次更改語句(UPDATE,DELETE,INSERT)之前切換到master數據庫。重要提示:現有基礎架構使用.Net TransactionScope類來組織事務。

那麼如何用NHibernate實現呢?

回答

2

一些出發點:

  • session.Disconnect();session.Reconnect(connection)切換連接。
  • 也許使用NHibernate.shards