現在TransactionScopeを使用して、DependentTransactionを作成し、MSDTCを使用してThreadで分散トランザクションを
実装していましたが・・・結果としてかなりはまりました。
なにやら複数回問い合わせていると、以下のエラーが発生するのです。
トランザクション コンテキストを他のセッションが使用中です。
(Transaction context in use by another session.)
情報を探しに探してみたら、以下の記事がヒットしました。
System.Transaction may fail in multiple-thread environment
(http://blogs.msdn.com/b/asiatech/archive/2009/08/10/system-transaction-may-fail-in-multiple-thread-environment.aspx)
結果として私が実装している事は無理そうとorz
WCFへの問い合わせでTransactionFlowを設定して、いくつかのサービスをThreadで呼び出していたのですが、
上記の理由から実装が不可能っぽいので、どうしたもんかと悩み中・・・
けど、これが無理だとTransactionFlowとWCFの非同期呼び出し用のBeginがあまり意味が無い気がしてならない。
完全に無意味とまではいわないけれど、いまいち使いどころが無いような気がしてならないです。
別々のDBにアクセスする時に必要なくらいなのかな。
サービスの入り口を部品単位にまとめて、TransactionFlowを設定して、サービス問い合わせクラスを、サービスの入り口単位に
部品化して、使用側が呼び出し単位を組み合わせによって、指定できるようにして、
サービス問い合わせ自体はThread化したけども、エラーが発生したりしなかったりするので、お蔵入りしそう。