如何强制LINQPad从LINQ2SQL查询中获取非缓存结果?
情景如下:
1)检查一些数据(来自MyThings中的......选择a).First(); 2)在服务调用之后立即修改LINQPad外的数据 3)重新检查一些数据(来自MyThings中的......选择a).First();
这似乎是缓存结果。 : - /
答案 0 :(得分:8)
每次点击F5时,LINQPad都会实例化一个全新的DataContext,因此查询运行之间不可能进行缓存。但是,如果在同一查询中转储两次,则第二个结果将缓存:
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