SQL 2008 R2 と Entity Framework 4 を使用して次のテストを実行しました (データベースの READ_COMMITTED_SNAPSHOT オプションがオンになっています)。
コンテキスト分離レベルを返すために、次のストアド プロシージャを作成しました (オリジナルはhereから)。
Create Procedure TempTestIsolation
AS
Begin
DECLARE @UserOptions TABLE(SetOption varchar(100), Value varchar(100))
INSERT @UserOptions
EXEC('DBCC USEROPTIONS WITH NO_INFOMSGS')
SELECT Value
FROM @UserOptions
WHERE SetOption = 'isolation level'
End
そして、次のテストをコーディングしました。
static void Main(string[] args)
{
var entities = new MyEntities();
// Execute the SP to get the isolation level
string level = entities.TempTestIsolation().First().Value;
Console.WriteLine("Without a transaction: " + level);
var to = new TransactionOptions() { IsolationLevel = System.Transactions.IsolationLevel.Snapshot };
using (var ts = new TransactionScope(TransactionScopeOption.Required, to))
{
// Execute the SP to get the isolation level
level = entities.TempTestIsolation().First().Value;
Console.WriteLine("With IsolationLevel.Snapshot: " + level);
}
to = new TransactionOptions() { IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted };
using (var ts = new TransactionScope(TransactionScopeOption.Required, to))
{
// Execute the SP to get the isolation level
level = entities.TempTestIsolation().First().Value;
Console.WriteLine("With IsolationLevel.ReadCommitted: " + level);
}
Console.ReadKey();
}
その出力は次のとおりです。

ご覧のとおり、 TransactionOptionsでIsolationLevelをSnapshotに設定すると、ストアド プロシージャは "スナップショット" 分離レベルで実行され、"コミットされたスナップショットの読み取り"では実行されません。
代わりに、IsolationLevelをReadCommittedに設定すると、 「コミットされたスナップショットの読み取り」で実行されます。
それが役に立てば幸い。