LINQPad 中的非缓存结果

发布于 2024-09-15 09:21:58 字数 205 浏览 6 评论 0原文

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

场景是这样的:

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

它似乎是缓存结果。 :-/

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. :-/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尝蛊 2024-09-22 09:21:58

每次按 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

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文