私はデータベースにデータを保存するときに、IsolationLevelをSerializableに設定してTransactionScopeを使用しました。トランザクション完了後のTransactionScope IsolationLevelの変更
TransactionOptions options = new TransactionOptions
{
IsolationLevel=IsolationLevel.Serializable
};
using (var transaction = new TransactionScope(TransactionScopeOption.Required,options))
{
transation.Complete();
}
実行が終了した後、私はTransactionScopeIsolationLevelを変更したいと思います。
編集私が理解することである
これ、IsolationLevelをその後、トランザクションを完了した後、接続オブジェクトが閉じられ、接続プールに戻り、他のいくつかの要求が到着したとき、それはからその接続オブジェクトをフェッチシリアライズに設定している場合以前のIsolationLevelによって影響を受けます。だから私はすべてのトランザクションの後に分離レベルをデフォルトに変更したい。
私は他のより良いオプションを受け入れる準備ができていますが、明示的なトランザクションですべての接続を開くように提案しているので、システムでオーバーヘッドが大きくなるとは思わないでしょう。私は膨大な数のエンドポイントを持つ巨大なアプリケーションを持っていますが、TransactionScopeを使用しているシナリオは2つしかありません。あなたはそのようなことについて何をお勧めしますか? – MegaMind
トランザクションのオーバーヘッドは、すべてのステートメントが暗黙のトランザクションを使用するため、ほとんど何もありません。すべてを移行できない場合は、実際にはアプローチが良いアイデアかもしれません。ハックですが、実用的な解決策です。私はそれに大きな問題は見当たらない。 – usr
はconn.ExecuteCommand( "SET TRANSACTION ISOLATION LEVEL XXX")を実行します。作業?誰もそれを試しましたか? – hazimdikenli