Question

How do I force LINQPad to give me a non-cached result from a LINQ2SQL query?

The scenario is this:

1) examine some data (from a in MyThings where ... select a).First(); 2) modify data outside LINQPad immediately after (service call) 3) re-examine some data (from a in MyThings where ... select a).First();

It seems to be caching results. :-/

Was it helpful?

Solution

LINQPad instantiates a fresh DataContext each time you hit F5, so there's no chance of caching between query runs. However, if you dump twice in the same query, the second result will cache:

Customers.First (c => c.Name == "John").Dump();
Thread.Sleep (5000);
Customers.First (c => c.Name == "John").Dump();   // Result will be cached

This is by virtue of LINQ to SQL's object tracking. You can disable it by switching object tracking off - just as you would ordinarily:

ObjectTrackingEnabled = false;
Customers.First (c => c.Name == "Tom").Dump();
Thread.Sleep (5000);
Customers.First (c => c.Name == "Tom").Dump();   // Result will not be cached
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top