NHibernate 和数据库连接故障转移?

2023-12-01

我正在使用 NHibernate 连接到旧的 RDBMS 系统。在高生产负载下,rdbms 服务失败。为了保持可用性,我们提供了故障转移 RDBMS 服务。有没有办法将 NHibernate 配置为在主连接关闭时使用故障转移连接字符串?

附加信息:我使用 Castle 而不是 NHibernate。如果 Castle 提供故障转移连接的处理,那么这也适合我。


您可以构建自己的NHibernate.Connection.IConnectionProvider它提供故障转移支持。

这应该是一个子类ConnectionProvider这会覆盖CloseConnection() GetConnection() and Configure().

连接提供者在您的休眠中指定配置作为财产connection.provider.

这是一个未经测试的基于 DriverConnectionProvider 的实现。

public class FailoverConnectionProvider : ConnectionProvider
{
    static string FailoverConnectionStringProperty = "connection.failover_connection_string";
    string failover_connstring;

    public override void CloseConnection(IDbConnection conn)
    {
        base.CloseConnection(conn);
        conn.Dispose();
    }

    public override IDbConnection GetConnection()
    {
        try {
            return GetConnection( ConnectionString );
        } catch {
            return GetConnection( failover_connstring );
        }
    }

    IDbConnection GetConnection( string connstring )
    {
        log.Debug("Obtaining IDbConnection from Driver");
        IDbConnection conn = Driver.CreateConnection();
        try {
            conn.ConnectionString = connstring;
            conn.Open();
        } catch (Exception) {
            conn.Dispose();
            throw;
        }

        return conn;
    }

    public override void Configure(IDictionary<string, string> settings)
    {
        base.Configure( settings );

        settings.TryGetValue(FailoverConnectionStringProperty, out failover_connstring);

        if (failover_connstring == null) {
            throw new HibernateException("Could not find connection string setting (set " + FailoverConnectionStringProperty + " property)");
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NHibernate 和数据库连接故障转移? 的相关文章

  • NHibernate / ActiveRecord:如何在不获取整个对象的情况下设置外键?

    假设我有以下 ActiveRecord 类 ActiveRecord public class Account BelongsTo CustomerId public Customer Customer get set 目前 要设置 Cus
  • 如何为 NHibernate 制作内部映射类?

    我为我的映射创建了内部类 并在各处放置了 default lazy false 一段时间后 我决定完全懒惰并删除了此设置 突然之间 几乎所有事情都无法执行 我得到的异常是 无法执行查询 System TypeLoadException 访问
  • NHibernate 中的有序多对多关系

    假设我有两个类 Item 和 ItemCollection 其中 ItemCollection 包含一个ordered具有索引的 Item 对象列表 即列表按用户指定的方式排序 我们还假设它们具有多对多关系 一个 ItemCollectio
  • 更新数据库后 NHibernate 查询缓存不起作用

    我在 FluentNHibernate 中启用了二级缓存 Fluently Configure Database MsSqlConfiguration MsSql2005 ConnectionString connectionString
  • 增加 SQL 命令的命令超时

    我有一个小问题 希望有人能给我一些建议 我正在运行一个 SQL 命令 但由于数据量很大 该命令似乎需要大约 2 分钟才能返回数据 但默认的连接时间是 30 秒 我如何增加这个时间 并将其应用到这个命令 public static DataT
  • 多列多对一

    我有一个遗留数据库和两个表之间一对一的关系 问题是关系使用两列 而不是一列 在 nhibernate 中是否有某种方法可以说 当获取引用的实体时 它在 join 语句中使用了两列 而不是一列 我有一个类似的表结构 任务进度 进度ID Tas
  • 为什么 NHibernate 在选择时删除然后插入复合元素?

    有人可以向我解释一下关于 NHibernate 如何处理复合元素的这个小谜团吗 我的课程看起来像这样 public class Blog public virtual int Id get private set public virtua
  • Nhibernate:2 列总和的限制

    我可以使用 HNibernate Criteria 创建此 sql 查询吗 从表 1 中选择 其中列 1 gt 列 2 列 3 所有 3 列都是 int32 谢谢 好吧 在第 n 次阅读了这个问题的问题后 我决定编写一个不包括编写 SQL
  • Nhibernate ICriteria 和在查询中使用 Lambda 表达式

    你好 我是 NHibernate 的新手 我有点困惑 假设我们有一个product桌子 让product表有 2 列价格1 和价格2 然后我可以通过 HQL 查询映射的产品实体 如下所示 string queryString from pr
  • 枚举解析似乎不适用于 Fluent NHibernate

    我有一个数据访问类 带有一个名为 Salutation 的枚举 public enum Salutation Unknown 0 Dame 1 etc Mr 5 etc 我正在使用 NHibernate 保留该类 直到今天早上我还在使用 h
  • NHibernate 表更新事件

    我有这个表映射 我认为细节并不重要 WithTable COPACKER FACILITY Id x gt x FacilityNumber FACILITY NUM GeneratedBy Sequence FACSEQ Map x gt
  • 每个会话的 Nhibernate 会话示例

    您好 nhibernate 的一些专业人士能给我每个会话的 Nhibernate 会话实现示例还是 unhaddins 实现吗 或者解释如何做到这一点 此致 恩迪斯 我使用 NHibernate 工作了 4 年 此前我曾与 每次操作打开会话
  • NHibernate 会话线程安全

    我已经使用 NHibernate 一段时间了 并且不时发现如果我尝试同时请求两个页面 或尽可能接近 偶尔会出错 所以我认为这是因为我的会话管理不是线程安全的 我以为这是我的课 所以我尝试使用与这篇博客文章不同的方法http pwigle w
  • 软删除 Nibernate

    我想对我的数据库表进行软删除 我应用了以下语句 如此处所述http nhibernate info blog 2008 09 06 soft deletes html http nhibernate info blog 2008 09 06
  • 如何从 C# 连接到 SQL 数据库?

    我正在尝试为我的家庭网络编写一个本地程序管理和安装系统 并且我认为我已经确定了技术 C NET WPF 客户端 Lua 用于安装脚本支持 通过 LuaInterface SQL Server Express 用于维护程序数据库 但是我不确定
  • 如何在 ADO.NET 对象上调用 Dispose?

    实现的数据库访问类IDbConnection IDbCommand and IDataReader全部实施IDisposable 但显然 Command 和 Reader 依赖于 Connection 我的问题是 我是否必须单独对每个对象进
  • 获取ADO.NET中的参数前缀

    我想使用列名作为参数基于列列表生成多个 SQL 语句 Edit C var columns new string COL1 COL2 var tableName TABLE 1 var prefix TODO get this from t
  • 如何对给定列和方向的数据表进行排序?

    我需要在内存中使用基于来自 GridView 的列和方向的 DataTable 该函数需要如下所示 public static DataTable resort DataTable dt string colName string dire
  • SAP Hana DB SQL 中声明数组/表变量值时出现错误

    我试图添加一个声明的变量来替换 where in 子句中的硬编码值列表 研究 Hana 如何处理数组变量 似乎我可以通过声明一个数组 然后直接在其上使用选择或首先将其取消嵌套到表中来做到这一点 但我不断收到无法解决的错误 当我这样尝试时 D
  • NHibernate 忽略长度属性

    运行 SQL Profiler 后 我意识到 NHibernate 正在将字符串映射到nvarchar 4000 我通过指定修复了它type AnsiString and length 在 hbm 文件中 现在正在生成varchar 800

随机推荐

  • 使用 AWT Robot 在 Mac 上切换应用程序有时有效

    我正在尝试使用机器人来切换应用程序 然后输入一些文本 为此 在我的 Mac 上 我按 Meta Tab 然后按以下顺序释放 Tab Meta Robot robot new Robot robot keyPress KeyEvent VK
  • 刚性类型变量不匹配

    我有以下失败的 Haskell 代码Couldn t match type a with a1 error bar Int gt a gt Int gt a gt a gt a bar ns fp ap snd foldl fn fp ap
  • 如何使用Python只读取目录中的wav文件?

    from scipy io wavfile import read files f for f in os listdir if os path isfile f print files for i in range 0 1 w read
  • 自动映射器 - 继承映射器不与类型转换器一起使用

    不能同时使用映射继承和 TypeConverter 我有这个代码 BaseClassTypeConverter cs public class BaseClassTypeConverter ITypeConverter
  • TRUE 用作矩阵索引时如何解释?

    我在某处看到一些 错误的 代码 结果调用了一个执行的函数mymatrix TRUE 一路上 事实证明 至少在我测试的样本中 这被解释为选择矩阵的所有元素 清楚地 不是胁迫TRUE to 1 因为那样我只会得到返回的第一个元素 而不是整个矩阵
  • PlayN 字体支持

    PlayN 或支持库 如 TriplePlay 等 对非标准字体 特别是自定义 TrueType 字体 提供何种支持 您必须在要使用的每个后端上以不同的方式注册字体 但是一旦按名称注册了字体 您就可以像任何内置字体一样使用它 只需调用Pla
  • 如何在片段内实现viewpager?

    我一直在寻找并很难找到一个明确的例子 我试图了解如何在从我的 mainActivity 作为抽屉项目打开的片段中创建视图分页器 这是我的尝试 但我认为我做错了什么 无论是我错误地包含它还是将它放在错误的位置 public class Ran
  • 如何根据组合框选择更改多个标签?

    我希望你知道如何根据不同的标签在不同的标签中拥有多个值Combobox下拉列表选择 例如 假设您有一个Combobox与值 car house computer 和多个Label选择时反映不同尺寸和颜色Combobox 如果我选择car 我
  • 极坐标图在 matplotlib 中给出错误的角度

    我正在尝试用Python绘制赤经 赤纬极坐标图 其中角度表示赤经 半径表示赤纬 范围在 30之间 我的代码是 import numpy import matplotlib pyplot as pyplot ra 345 3895474541
  • 无论如何,保持导航栏中的 Bootstrap Dropdown 打开

    我有一个嵌套在导航栏中的下拉菜单 我在页面加载期间通过添加以下内容打开该菜单open类到li包含下拉菜单的元素 我希望无论用户单击什么内容或单击页面上的哪个位置 此菜单都保持打开状态 我尝试过在 Stackoverflow com 上找到的
  • 如果添加另一个数据流,解析器无法解析

    我正在尝试使用解析器来根据路由保存的给定参数检索数据 不幸的是 当我添加另一个数据流时 我的数据依赖于解析器 但实际上从未解析 如果我直接返回一个立即解析值 一切都会正常 我调试了这种情况 发现我收到了所有部分信息 但最终未能真正解决 这是
  • 使用 compgen 获取另一个命令的自动完成功能,使用哪个标志?

    我有一个自定义自动完成命令 称之为commandA in commandB我想窃取命令第一个参数的自动完成选项 因此 例如 commandA 的 argument1 的选项是 abcdef abcabc abc123 我想要类似的东西com
  • ActiveMQ 的 NoSuchMethodError

    java lang NoSuchMethodError org apache activemq thread TaskRunnerFactory setThreadClassLoader Ljava lang ClassLoader V a
  • 侧面加载即时应用程序失败:读取捆绑包超时

    无法使用 Android 模拟器来测试即时应用程序 每次我得到 侧面加载即时应用程序失败 读取捆绑包超时 我在用着 Android Studio 3 0 金丝雀 5 Emulator 运行 Android 6 0 API 级别 23 x86
  • 如何使用流畅的 NHibernate 将枚举映射为 int 值?

    问题确实说明了一切 默认情况下它映射为string但我需要它映射为int 我目前正在使用PersistenceModel如果这有什么区别的话 我可以设定我的惯例 Update发现从主干获取最新版本的代码解决了我的困境 定义这个约定的方式以前
  • 如何从自定义视图(NSView)中制作缩略图视图?

    如何制作缩略图视图 不是图像 形成自定义视图 NSView 如果自定义 NSView 的内容发生更改 缩略图视图也会发生更改 看起来像ibook作者 谢谢大家 https plus google com u 0 photos 1147559
  • 用于生成唯一 ID 的 iOS 硬件参数

    您好 我想使用任何设备硬件参数为 iOS 设备生成一个唯一的 ID 我不想使用 MAC 地址 因为 MAC 地址也有可能被更改 那么您能否告诉我是否有任何其他唯一的硬件参数可以用来生成唯一的 ID 我相信类似的事情this是普遍接受的 UU
  • 无法对已卸载的组件执行 React 状态更新。这是一个无操作

    这是控制台中的警告 警告 无法对已卸载的组件执行 React 状态更新 这是一个空操作 但它表明应用程序中存在内存泄漏 要修复此问题 请取消 useEffect 清理函数中的所有订阅和异步任务 这是我的代码 const index setI
  • 将大型 XML 文件拆分为 Hadoop 的可管理部分

    是否有一个输入类可以根据 Hadoop 中的树结构处理 多个 大型 XML 文件 我有一组具有相同架构的 XML 文件 但我需要将它们拆分为数据部分 而不是分解这些部分 例如 XML 文件为
  • NHibernate 和数据库连接故障转移?

    我正在使用 NHibernate 连接到旧的 RDBMS 系统 在高生产负载下 rdbms 服务失败 为了保持可用性 我们提供了故障转移 RDBMS 服务 有没有办法将 NHibernate 配置为在主连接关闭时使用故障转移连接字符串 附加