2010-08-24 23 views
1

如何強制LINQPad給我一個來自LINQ2SQL查詢的非緩存結果?LINQPad中的非緩存結果

的場景是這樣的:

1)檢查一些數據(從一個在其中MyThings ...選擇一個)。首先(); (服務調用) 3)重新檢查一些數據(從MyThings where ... select a中選擇一個).First();

它似乎是緩存結果。 : -/

+0

我每天都會使用LP並且從未遇到過這種情況。沒有更多的細節,這很難回答。我可以向你保證,LP不會緩存任何東西。也許你是Linq to SQL的新手,它的行爲方式你沒有預料到。 (即:延期加載) – John 2010-08-25 01:13:52

回答

5

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到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 
+0

忘了說:謝謝! :-) – 2010-09-21 07:17:26