即时切换 NHibernate 连接

发布于 2024-12-27 11:57:22 字数 601 浏览 0 评论 0原文

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

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

  1. USE Slave
  2. SELECT FROM T1
  3. SELECT FROM T2
  4. USE master
  5. BEGIN TRANSACTION
  6. UPDATE T1
  7. UPDATE T2
  8. 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:

  1. USE slave
  2. SELECT FROM T1
  3. SELECT FROM T2
  4. USE master
  5. BEGIN TRANSACTION
  6. UPDATE T1
  7. UPDATE T2
  8. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无边思念无边月 2025-01-03 11:57:22

一些起点:

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

some starting points:

  • session.Disconnect(); session.Reconnect(connection) to switch connection.
  • maybe use NHibernate.shards
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文