【问题标题】:Non-cached results in LINQPadLINQPad 中的非缓存结果
【发布时间】:2010-08-24 09:54:12
【问题描述】:

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

场景是这样的:

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

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

【问题讨论】:

  • 我每天都用LP,从来没有遇到这种情况。没有更多细节,这很难回答。我可以向你保证,LP 没有缓存任何东西。也许您是 Linq to SQL 的新手,它的行为方式出乎您的意料。 (即:延迟加载)

标签: caching linqpad


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    相关资源
    最近更新 更多