2

如何强制 LINQPad 为我提供 LINQ2SQL 查询的非缓存结果?

场景是这样的:

1)检查一些数据(来自 MyThings where ... select a).First(); 2) 在(服务调用)之后立即修改 LINQPad 之外的数据 3) 重新检查一些数据(来自 MyThings 中的 a ... select a).First();

它似乎正在缓存结果。:-/

4

1 回答 1

10

LINQPad 每次按下 F5 时都会实例化一个新的 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
于 2010-08-25T01:29:42.613 回答