MVCの開発で、Npgsqlを使ったトランザクションスコープの作成を考えています。トランザクションスコープクラス内のコンストラクタでコネクションとトランザクションを作成し、トランザクションスコープが破棄されるまで、データベースアクセス時にはトランザクションスコープクラスが作成したコネクションとトランザクションを使用するようにしたいです。ThreadStaticというものがあると知ったのですが、こちらを使い、コネクションとトランザクションを制御すれば大丈夫でしょうか。(1)そうすることでどういうメリットがあるのか教えていただけませんか。するという原則に従えばよさそうに思いますが。11:51ConnectionでなくTransactionの管理が目的です。複数のクラスで行われるデータベースへの処理を同一のトランザクションで行いたいとき、トランザクションとトランザクションを開始したコネクションを、引数で渡す方法しか思いつきませんが、それが不要になります。16:22回答をありがとうございました。目的は理解しました・・・が、やはり自分的には、せっかく回答してもらったのにすみませんが、そういうことをすることには納得できてないです。簡単に、かつリスクなく渡せる手段がいくらでもあるのだから、変なこと(失礼)はしない方がいいと思ってしまいます。18:37標準であるTransactionScopeの代替みたいなものでしょう。18:45ええとつまり、別に昔からある一般的な考え方だって事です。引数をなくすことそのものが目的というわけではありませんが。一つのトランザクションに束ねるのではなさそうなので、それなら接続やトランザクションを渡して処置することが可能なはずだから、危険な匂いのする変なこと(失礼)はしない方がいいと思ったのですが。20:16自動トランザクションは異なる接続を束ねるだけが目的ではありませんし、今回のは違う方でしょう。20:21ああ、トランザクションスコープへの対応が始まってるってことですね。これがあるなら確かに評価はしてみた方がいいかもしれません。早すぎるかもしれないのでそこは微妙ですが。20:36早すぎるリスクと独自でやるリスクどっちをとるかですね。更新順1とりあえずいくつか注意した方がいい点ですが。・スレッドなどに保存するデータは専用にクラスを作成して、単一のインスタンスで判断できるようにする方がよい。※中途半端に片方だけ残ったりす余地をなくすためです。・保存場所はThreadStaticではなく、CallContextかHttpContextが望ましい。意味的にはHttpContextがより望ましい。※単純なスレッドローカルだと、予期せぬ例外などで消し損ねた場合がまずいです。非同期コントローラその他でのスレッド切り替えも考慮するなら、HttpContextの方が良いです。したからと言って必ず問題なくうまく行くとは限りませんが。最低限この辺りですかね。本当は入れ子とかに対応する方が汎用性が高くなって望ましいと思いますけど。限られた用途に限定してシンプルにしておくのもそれはそれでありかもしれません。16:251ThreadStaticというものがあると知ったのですが、こちらを使い、コネクションとトランザクションを制御すれば大丈夫でしょうか。使う場合、期待した動作を得られないはずです。(1)ウォッチこの質問への回答やコメントをメールでお知らせします。