6

WCF サービスで Entity Framework 6.1 を使用しており、SELECT クエリを READ UNCOMMITTED 分離レベルで囲みたいと考えていました。これは、他のバッチ更新が読み取り中のテーブルに挿入され、それらのバッチ更新が発生しないようにロックしたくないためです。テーブルに対して READ が実行されたとき。これは基本的に SELECT WITH NOLOCK をシミュレートします。

このコードは、非同期方式でも使用されていました。したがって、単純に TransacactionScope を使用することはできませんでした。.Net 4.5.1 フレームワークも使用していることに注意してください。

TransactionScope の Isolation Level を ReadUncommitted に設定できますが、TransactionScopeOption のデフォルトは ReadCommitted です。分離レベルを変更する方法がわかりません。

分離レベルを変更する方法はありますか? 分離レベルを設定できない場合、上記の状況でクエリを実行しても問題ありませんか?

実際、Isolation レベルを「NOLOCK」に設定できない場合は、TransactionScopeAsyncFlowOption を含める必要さえありません。

4

1 に答える 1

14

最初のパラメーターではなく、3 番目のパラメーターとして指定された TransactionScopeAsyncFlowOption でコンストラクター オプションを使用します。

using (var scope = new TransactionScope(
    TransactionScopeOption.Required,  
    new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted },
    TransactionScopeAsyncFlowOption.Enabled)) 
{
}
于 2016-04-08T22:40:02.990 に答える