2013-08-08 8 views
11

Ich bin interessiert an der Verwendung von AsNoTracking mit meinen LINQ Select-Abfragen, um die Leistung zu verbessern. Ich benutze Entity Framework 5 mit Code zuerst.AsNoTracking mit LINQ Abfragesyntax anstelle der Methodensyntax

Alle meine Abfragen werden jedoch unter Verwendung der LINQ-Abfragesyntax geschrieben, und alle AsNoTracking-Beispiele werden mit der Methodensyntax angezeigt. Mir ist bewusst, dass AsNoTracking für die Methodensyntax erstellt wurde, aber wie erreiche ich dasselbe mit der Abfragesyntax?

+0

AsNoTracking Leistung nicht verbessern, weil es bei jedem Aufruf EF Kontakt die Datenquelle ermöglicht. Tracking ist somit auch Caching und verbessert die Performance. – Robert

+0

Hallo Robert, das ist interessant, weil ich eine Menge Artikel gelesen habe, die auf AsNoTracking() zeigen, was eine Leistungsverbesserung bei der Verwendung von SELECTs ohne Aktualisierung bedeutet. dh http://blog.staticvoid.co.nz/2012/4/2/entity_framework_and_asnotracking – Mitch

+0

Ok, um genau zu sein: AsNoTracking ist in der Tat schneller beim Abrufen von Daten, die zuvor nicht abgerufen wurde, weil es nicht überprüft werden muss, ob gewünschte Daten sind bereits vorhanden (was natürlich am schnellsten wäre). – Robert

Antwort

18

Sie gelten AsNoTracking() zum DbSet:

+0

Vielen Dank, das war die Antwort, die ich suchte! – Mitch

1

Die Abfragesyntax wird durch den Compiler in der Methodensyntax ersetzt, sodass am Ende kein Unterschied besteht.

+0

Ich habe versucht, AsNoTracking() mit meiner Abfrage-Syntax, aber es erscheint nicht einmal auf Intellisense als eine Option. – Mitch

+0

Auf weitere Gedanken, vielleicht verwende ich es nicht richtig oder ich vermisse eine Bibliothek? ie var result = (von Person in ctx.People wählen Person) .AsNoTracking(). ToList() – Mitch

Verwandte Themen