2010-08-24 3 views
1

Comment puis-je forcer LINQPad à me donner un résultat non mis en cache à partir d'une requête LINQ2SQL?Les résultats non mis en cache dans LINQPad

Le scénario est le suivant:

1) examiner certaines données (d'un à MyThings où ... sélectionnez a) .Premier(); 2) modifier les données en dehors de LINQPad immédiatement après (appel de service) 3) réexaminer certaines données (d'un dans MyThings où ... select a) .First();

Il semble que ce soit des résultats de mise en cache. : -/

+0

J'utilise LP quotidiennement et je n'ai jamais utilisé ce scénario. Sans plus de détails, c'est difficile de répondre. Je peux vous assurer que LP ne cache rien. Peut-être que vous êtes nouveau à Linq to SQL et qu'il se comporte d'une manière inattendue. (ie: chargement différé) – John

Répondre

5

LINQPad instancie un nouveau DataContext chaque fois que vous appuyez sur F5, il n'y a donc aucune chance de mise en cache entre les exécutions de requête. Cependant, si vous videz deux fois dans la même requête, le second résultat cache:

Customers.First (c => c.Name == "John").Dump(); 
Thread.Sleep (5000); 
Customers.First (c => c.Name == "John").Dump(); // Result will be cached 

C'est en vertu de LINQ au suivi d'objets de SQL. Vous pouvez le désactiver en désactivant le suivi des objets - comme vous le feriez normalement:

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

Oublié de dire: merci! :-) –

Questions connexes