即时切换 NHibernate 连接
我们有WebServer(基于Orchard CMS)和两个SQL Server数据库:master(读写操作)和slave(仅读操作)。数据库通过复制进行同步。 WebServer 使用 NHibernate 作为 ORM。
我们希望通过以下模式来分离这两个数据库之间的负载。在请求处理期间,我们应该:
- USE Slave
- SELECT FROM T1
- SELECT FROM T2
- USE master
- BEGIN TRANSACTION
- UPDATE T1
- UPDATE T2
- COMMIT TRANSACTION
所以我们的想法是在之前切换到主数据库第一个更改语句(UPDATE、DELETE、INSERT)。重要提示:现有基础设施使用 .Net TransactionScope 类来组织事务。
那么如何使用 NHibernate 来实现这一点呢?
We have WebServer (based on Orchard CMS) and two SQL Server databases: master (read-write operations) and slave (only read operations). Databases are synchronized by replication.
WebServer uses NHibernate as an ORM.
We want to separate load between these two databases by the following schema. During request processing we should have:
- USE slave
- SELECT FROM T1
- SELECT FROM T2
- USE master
- BEGIN TRANSACTION
- UPDATE T1
- UPDATE T2
- COMMIT TRANSACTION
So the idea is to switch to the master database before first change statement (UPDATE, DELETE, INSERT). Important note that existing infrastructure uses .Net TransactionScope class to organize transaction.
So how to achieve this with NHibernate?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一些起点:
session.Disconnect();
session.Reconnect(connection)
切换连接。some starting points:
session.Disconnect();
session.Reconnect(connection)
to switch connection.