Vb.net TransactionScope内的SqlException

Vb.net TransactionScope内的SqlException,vb.net,exception,.net-2.0,transactionscope,Vb.net,Exception,.net 2.0,Transactionscope,我目前正在VB.NET2.0中从事一个遗留项目。 该项目有一个非常有趣的DAL层,它不包含事务:-| 无论如何,我的工作是让程序的某些部分具有事务性,而我不这样做 可以访问DAL层代码。 所以我试图将整个代码段放在单个TransactionScope中 现在问题来了: 当SqlException从DAL层的深处抛出时,我的事务总是被回滚!即使我捕获并处理同一TransactionScope中的异常 我的问题:这是正常的行为吗? 对此我能做些什么吗 我认为,当抛出的异常超出TransactionS

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

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

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

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

任何帮助都将不胜感激

编辑:SqlException实际上是从System.Data.Common.Sql命令中抛出的,因此我无法真正阻止它发生。

问候,,
ldx

好吧,我要收回我下面的答案,我已经编辑掉了,以避免把任何人弄糊涂,而不是必要的…:)

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

对不起

是的,这似乎是故意的。从transactionScope文档中:

[截取错误信息]