使用 NHibernate ISqlExceptionConverter 自定义异常

2023-12-02

我需要为 NHibernate 方言注册自定义异常。我已经实施并 注册了 ISqlExceptionConverter,如 NHibernate 测试中所示。但 当代码中抛出异常时,它不会被转换。我的转换代码 甚至不打电话。

我的代码非常简单:

try
{
        using (ISession sess = OpenSession())
        using (ITransaction tx = sess.BeginTransaction())
        {
           ....
           sess.Save(obj); // invalid object scheduled for inserting
           .....
           tx.Commit(); // exception raises here
        }
}

catch (UniquenessViolationException ex)
{
 // never came here, since exception was not converted and is of type
HibernateException

}

我的 ISqlExceptionConverter 实现:

public class SqlExceptionConverter : ISQLExceptionConverter
{
        public Exception Convert(AdoExceptionContextInfo exInfo)
        {
                var sqlEx = ADOExceptionHelper.ExtractDbException
(exInfo.SqlException) as SqlException;
                if (sqlEx != null)
                {
                        if (sqlEx.Number == 2627)
                                return new UniquenessViolationException(exInfo.Message, sqlEx,
exInfo.Sql);
                }
                return SQLStateConverter.HandledNonSpecificException
(exInfo.SqlException, exInfo.Message, exInfo.Sql);
        } 

也许我错过了什么?


您需要注册异常转换器。

In code:

configuration.SetProperty(
  Environment.SqlExceptionConverter,
  typeof(SqlExceptionConverter).AssemblyQualifiedName);

在配置文件中:

<property name="sql_exception_converter">
      Name.Space.SqlExceptionConverter, MyAssembly
</property>

直到现在我才尝试这个,只是查看了代码。希望它有效,我也需要它:-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 NHibernate ISqlExceptionConverter 自定义异常 的相关文章

随机推荐

  • 如何使用 hive 上下文有效地查询 Spark 中的 hive 表?

    我有一个 1 6T Hive 表 其中包含时间序列数据 我在用Hive 1 2 1 and Spark 1 6 1 in scala 以下是我的代码中的查询 但我总是得到Java out of memory error val sid da
  • 如何使用 OpenCV 在 Python 中向图像添加噪声(高斯/盐和胡椒等)[重复]

    这个问题在这里已经有答案了 我想知道Python中是否存在一些带有OpenCV或任何其他Python图像处理库的函数可以向图像添加高斯或椒盐噪声 例如 在 MATLAB 中 存在执行相同工作的直接函数 或者 如何使用 Python 和 Op
  • 当我向 Parse 提交新帖子时应用程序崩溃

    这是我的应用程序崩溃的唯一地方 也是更重要的功能之一 LogCat 告诉我 java lang IllegalArgumentException 您必须使用 ParseObject create 或正确的子类创建这种类型的 ParseObj
  • Unity批量注册按惯例

    我正在尝试在 Unity IoC 中执行与以下 Autofac 代码等效的操作 builder RegisterAssemblyTypes typeof DataRepository lt gt Assembly Where t gt t
  • Svelte 3 中是否存在动态道具

    当我迭代动态组件时 例如
  • 成功部署后Az​​ure Web应用程序未更新

    我在 azure 上有一个托管 Web API 的 Web 应用程序 我在 Visuall Studio 上更新了代码 然后将更新推送到 Azure 上的 Web 应用程序 它说它正在成功更新 我尝试通过 git 和 ftp 发布 它在云上
  • 二叉搜索树中的有序后继者

    给定 BST 中的一个节点 如何找到下一个更高的密钥 一般方法取决于节点中是否有父链接 如果您存储父链接 然后你选择 如果当前节点有右子节点 则为右子节点的最左子节点 如果右孩子没有左孩子 那么右孩子就是你的顺序继承人 向上导航父祖先节点
  • 如何将数据聚合到范围(分桶)?

    我有一张像这样的桌子 id value 1 118 0 2 109 0 3 113 0 4 82 0 5 60 0 6 111 0 7 107 0 8 84 0 9 91 0 10 118 0
  • 寻求以更干净/更有效的方式将字符串与整数相关联

    我该如何改进这个 这种关系是一对一的并且在 1 5 上连续 所以我正在考虑使用枚举 但我不确定如何将字符串值与枚举值进行比较 如果有更好的方法可以做到这一点 请建议 Thanks private int evaluateWord Strin
  • Firebase 功能部署失败

    每当我部署 firebase 函数时 我都会收到以下错误 错误 解析函数触发器时发生错误 Error ERR PACKAGE PATH NOT EXPORTED No exports main defined in D Proyectos
  • 为什么 for(;;) 而不是 while(1) ? [复制]

    这个问题在这里已经有答案了 可能的重复 for 比 while TRUE 快吗 如果没有 人们为什么要使用它 为什么要用丑的for 语法而不是看起来稍微好一点的while true loop 没有什么优势可以for over while 1
  • 正则表达式匹配长度超过 5 个字符且具有两个连续数字的密码

    这就是我所拥有的 有人可以告诉我哪里错了吗 let sampleWord bana12 let pwRegex w 5 d 2 Change this line let result pwRegex test sampleWord cons
  • DexArchiveMergerException:无法合并 dex

    昨天从 2 3 3 版本更新 Android studio 3 0 后 我遇到了与 DexMergerException 相关的问题 其他人也发布了相关问题this 但在这个问题中 我想分析堆栈跟踪以找到相关的解决方案 因为我是这里的新手
  • 使用 excel 插件注册带有参数描述的 UDF

    我有一个带有 UDF 的插件getRegExResult 我想向该函数添加函数描述和参数描述 因此当用户安装插件 关闭 打开 Excel 几次并进入 插入函数 对话框时 他将能够找到带有参数描述的函数 同样被问到here 我找到了一个ans
  • JSF:使用 Icefaces 组件上传文件的问题

    我想得到FileUpload与 Icefaces 配合使用的功能ace 文件条目 but my fileUploadListener服务器上未调用 代码如下 xhtml 片段
  • 在Python中循环压缩列表

    我正在研究 python 中的 zip 函数 并在使用 for 循环时发现了一个问题 这是我的代码 list1 monday tuesday wednesday thursday list2 1 2 3 4 zipped list zip
  • Excel VBA:批量重命名工作表

    有没有办法在VBA中批量重命名工作表 就像是 sheets array 1 2 3 name array hep hey heppa 将工作表 1 2 3 命名为 hep hey 和 heppa 显然它不能直接工作 和一些实验选定的表不要带
  • 发送 QUERY 数据包时出错

    我试图将一些数据插入数据库 但出现此错误 发送 QUERY 数据包时出错 insertDeta conPat gt prepare insert into table1 data VALUES data insertDeta gt bind
  • 如何使用 postgres 将时间间隔转换为小时数?

    假设我有一个像这样的间隔 4 days 10 00 00 在 postgres 中 我如何将其转换为小时数 在本例中为 106 是否有函数或者我应该硬着头皮做类似的事情 extract days my interval 24 extract
  • 使用 NHibernate ISqlExceptionConverter 自定义异常

    我需要为 NHibernate 方言注册自定义异常 我已经实施并 注册了 ISqlExceptionConverter 如 NHibernate 测试中所示 但 当代码中抛出异常时 它不会被转换 我的转换代码 甚至不打电话 我的代码非常简单