2011-01-21 22 views
1

私は現在、VB.NET 2.0のレガシープロジェクトに取り組んでいます。 プロジェクトには、トランザクションを組み込んでいない非常に面白いDAL層があります。 とにかく、プログラムのいくつかの部分をトランザクションにするのは私の仕事ですが、 はDALレイヤーコードにアクセスできません。 私は単一のTransactionScopeの中にコードのセクション全体を置こうとしています。TransactionScope内のSqlException

ここに問題があります: DALレイヤーの深いところからSqlExceptionがスローされると、トランザクションは常にロールバックされます。同じTransactionScope内で例外を捕捉して処理したとしても。

私の質問:これは正常な動作ですか? これについて私ができることは何ですか?

私はそれは例外がこれらの範囲内で取り扱われている場合、例外がのTransactionScopeの境界を越えて投げではなく、取得したときにトランザクションがロールバックされていることを、通常のだと思います!

ご協力いただければ幸いです。

編集:SqlExceptionは実際にはSystem.Data.Common.SqlCommand内からスローされているため、実際に発生することはありません。

よろしく、 LDX

答えて

0

まあ、私はneccessaryよりも多くの人を混乱を避けるために出て、編集を済ませた、以下の持っていた答えを撤回するつもりです... :)

より後通常の例外がキャッチされて処理された場合(再投げられない場合)、トランザクションは期待どおりに完了すると判断しました。特定のクラスの例外(そのトランザクションに参加しているSQL例外など)は、処理されてもルートスコープのトランザクションを常に無効にすることができますが、その理論を確認できないことをテストしていません。

大変申し訳ございません。

はい、これはデザインであるように見えるん。 transactionScopeのドキュメントから:

[間違った情報を切り捨て]