2013-08-08 4 views
11

Sono interessato all'utilizzo di AsNoTracking con le mie query LINQ select per migliorare le prestazioni. Sto utilizzando Entity Framework 5 con Code First.AsNoTracking tramite LINQ Sintassi delle query anziché Sintassi dei metodi

Tuttavia, tutte le mie query vengono scritte utilizzando la sintassi Query LINQ e tutti gli esempi AsNoTracking vengono visualizzati utilizzando la sintassi del metodo. Sono a conoscenza del fatto che AsNoTracking è stato creato per la sintassi del metodo, ma come ottengo lo stesso risultato con la sintassi Query?

+0

AsNoTracking non migliora le prestazioni, perché permette EF contatto l'origine dati per ogni chiamata. Il monitoraggio è quindi anche il caching e migliora le prestazioni. – Robert

+0

Ciao Robert, è interessante perché ho letto molti articoli che puntano ad AsNoTracking() che offre un miglioramento delle prestazioni quando si usano SELECT senza dover effettuare alcun aggiornamento. cioè http://blog.staticvoid.co.nz/2012/4/2/entity_framework_and_asnotracking – Mitch

+0

Ok, per essere precisi: AsNoTracking è davvero più veloce quando si prelevano i dati che non sono stati recuperati prima, perché non è necessario controllare se il i dati desiderati sono già presenti (che sarebbe il più veloce, ovviamente). – Robert

risposta

18

si applica AsNoTracking() al DbSet:

+0

Mille grazie, questa era la risposta che stavo cercando! – Mitch

1

La sintassi delle query viene sostituita con la sintassi del metodo da parte del compilatore, quindi non c'è alcuna differenza alla fine.

+0

Ho provato ad utilizzare AsNoTracking() con la mia sintassi Query ma non viene nemmeno visualizzato su Intellisense come opzione. – Mitch

+0

Su ulteriori pensieri, forse non sto usando correttamente o mi manca una libreria? ie var result = (dalla persona in ctx.Persone seleziona persona) .AsNoTracking(). ToList() – Mitch