LINQPad で LINQ2SQL クエリからキャッシュされていない結果を取得するにはどうすればよいですか?
シナリオは次のとおりです。
1) いくつかのデータを調べます (MyThings の a から ... select a).First(); 2) (サービス コール) の直後に LINQPad の外部でデータを変更します。
結果をキャッシュしているようです。:-/
LINQPad は、F5 キーを押すたびに新しい DataContext をインスタンス化するため、クエリの実行間でキャッシュが発生する可能性はありません。ただし、同じクエリで 2 回ダンプすると、2 番目の結果がキャッシュされます。
Customers.First (c => c.Name == "John").Dump();
Thread.Sleep (5000);
Customers.First (c => c.Name == "John").Dump(); // Result will be cached
これは、LINQ to SQL のオブジェクト トラッキングによるものです。通常と同じように、オブジェクト追跡をオフに切り替えることで無効にできます。
ObjectTrackingEnabled = false;
Customers.First (c => c.Name == "Tom").Dump();
Thread.Sleep (5000);
Customers.First (c => c.Name == "Tom").Dump(); // Result will not be cached