ADO.NETでトランザクションを実現する手段には、DbTransaction、TransactionScopeなどがありますが一長一短です。
要件によるとは思いますが、1つのDBサーバに接続する場合のトランザクション処理のベストプラクティスとしては、以下のうちどの手段を利用すべきでしょうか?
1.DbTransaction を利用する
メリット:概念がシンプルで使いやすい
デメリット:トランザクションオブジェクトをメソッド引数に渡すなどして持ち回らないと、トランザクションに含められない
2.TransactionScope を利用する
メリット:トランザクションを意識せずに書いたコードでも、暗黙的にトランザクションに含めることができる
デメリット:処理内容や接続先DBによってはMSDTCサービスを利用する可能性があり、実行環境の違いで発生する面倒なエラーを生みやすい
3.TransactionScopeのように振る舞う仕組みを、内部的にはDbTransactionを使って自作する
メリット:上記のいいところ取り
デメリット:トランザクション維持のために1つのDbConnectionを開きっぱなしにせねばならないなど、標準的な手段とは言えない
4.その他
上記のどれでもない、もっといい手段がある?
私は基本的に1を利用していますが最近、トランザクション内で更新した内容を取得するときにそのトランザクションオブジェクトを利用せずに取得してしまい、更新後の値が取得できないというバグを発生させてしまったため、もっと良い方法がないかと質問させてもらいました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/30 23:29 編集
2019/10/31 01:54
退会済みユーザー
2019/10/31 03:04
2019/10/31 03:10
2019/10/31 10:36