2012-01-17 84 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