【问题标题】:SqlException inside TransactionScopeTransactionScope 中的 SqlException
【发布时间】:2011-01-21 10:23:50
【问题描述】:

我目前在 VB.NET 2.0 中处理一个遗留项目。 该项目有一个非常有趣的 DAL 层,它不包含交易:-| 无论如何,让程序的某些部分具有事务性是我的工作,而我没有 可以访问 DAL 层代码。 所以我试图将整个代码部分放在单个 TransactionScope 中。

现在问题来了: 当从 DAL 层深处的某个地方抛出 SqlException 时,我的事务总是被回滚!即使我在同一个 TransactionScope 内捕获并处理异常。

我的问题:这是正常行为吗? 对此我能做些什么吗?

我认为当异常被抛出超出 TransactionScope 的范围时事务回滚是正常的,但如果在这些范围内处理异常则不是!

任何帮助将不胜感激!

编辑:SqlException 实际上是从 System.Data.Common.SqlCommand 中抛出的,所以我无法真正阻止它的发生。

问候, ldx

【问题讨论】:

    标签: vb.net exception .net-2.0 transactionscope


    【解决方案1】:

    好吧,我将收回我在下面得到的答案,我已经编辑了它以避免不必要地混淆任何人...... :)

    经过更多测试,我确定如果正常异常被捕获并处理(而不是重新抛出),事务将按预期完成。可能某些类别的异常(例如参与该事务的 sql 异常)即使处理也可能总是使根范围内的事务无效,但我没有测试过,因此无法证实该理论。

    对不起!

    是的,这似乎是设计使然。来自 transactionScope 文档:

    [截取错误信息]

    【讨论】:

      猜你喜欢
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多