スキップしてメイン コンテンツに移動

トランザクション スコープを使うと分散トランザクションにされてしまう

データベースでトランザクションを実行するとき、C#ではTransactionScopeを使うと便利。


デバッグしているときも、最後のCompleteメソッドを呼ばなければ、何も変わらないから助かる。

「begin transaction」で始めると「end」を忘れてしまうのよね。その間、ずっとトランザクションしているのだろうか。

ただし、ひとつ気をつけないといけないのは、コネクションを何回も開くと、たとえローカルなデータベースにしかアクセスしていなくても、分散トランザクションと誤解されてしまうこと。
スコープの中でコネクションを1回だけ開けば問題なしです。

     using(TransactionScope scope = new TransactionScope())
     {
          sqlConnection cn = new sqlConnection(xxx);
          cn.Open();
          // いろいろ実行
          scope.Complete();
     }


コメント

このブログの人気の投稿

SQLでは文字列の前に「N」が必要だ

SQLServerのテーブルにテキストを登録したら一部の文字が文字化けした。環境依存文字だと化けるみたい。

コンボボックスのDataSourceプロパティの使い方

コンボボックスに表示するデータを設定するのを簡単にする工夫をまとめます。コンボボックスのDataSourceプロパティを上手に使いましょう。(2017/8/30追記)