即时切换NHibernate连接

时间:2012-01-17 16:08:14

标签: sql-server nhibernate database-connection orchardcms

我们有WebServer(基于Orchard CMS)和两个SQL Server数据库:master(读写操作)和slave(只读操作)。数据库通过复制进行同步。 WebServer使用NHibernate作为ORM。

我们希望通过以下架构分离这两个数据库之间的负载。在请求处理期间,我们应该:

  1. USE奴隶
  2. SELECT FROM T1
  3. 从T2中选择
  4. 使用主人
  5. BEGIN TRANSACTION
  6. 更新T1
  7. 更新T2
  8. COMMIT TRANSACTION
  9. 因此,我们的想法是在第一个更改语句(UPDATE,DELETE,INSERT)之前切换到master数据库。重要提示,现有基础架构使用.Net TransactionScope 类来组织事务。

    那么如何用NHibernate来实现呢?

1 个答案:

答案 0 :(得分:2)

一些起点:

  • session.Disconnect(); session.Reconnect(connection)切换连接。
  • 也许使用NHibernate.shards