Ho una pagina di accesso che esegue una query EF molto semplice per determinare se un utente è valido. Alla prima esecuzione questa query impiega circa 6 secondi per essere eseguita. Nelle corse successive ci vuole molto meno di un secondo.Come inizializzare le query di Entity Framework per velocizzarle?
Ho esaminato un articolo che parlava dell'utilizzo di Application Auto-Start e la mia domanda è questa: esiste un modo per attivare questa query per causare qualsiasi occorrenza della memorizzazione nella cache senza effettivamente chiamare la query oppure è necessario per me basta chiamare la query con una serie fittizia di argomenti?
MODIFICA: Quando dico sei secondi, mi riferisco al tempo necessario per ottenere la query. Codice simile a questa (nota in questo caso è un contactID int nullable e impostare a null):
return from contact in _context.Contacts
where contact.District == Environment.District &&
contact.ContactId == (contactID ?? contact.ContactId)
select contact;
Questa è una SqlServer 2008 e ho eseguito un profiler per controllare il codice SQL e la durata restituisce è 41 ms per la query che alla fine viene eseguita. Il ritardo di 6 o 7 secondi si verifica prima che la query raggiunga anche SQL. Sto provando a impostare ora un'occhiata per vedere se può darmi ulteriori dettagli su altre cose che potrebbero accadere nello stesso momento.
Penso che valga la pena di fare un po 'di profilazione e tentare di scoprire dove si sta effettivamente verificando il ritardo. –
l'overhead di EF è piuttosto leggero e probabilmente non è il problema. Forse installare qualcosa come Glimpse (pacchetto NuGet) e vedere cosa è davvero la colpa.Potresti avere altri eventi che sono davvero in colpa (componenti aggiuntivi bootstrap?). –
@RobertHarvey Intendi il profiling SQL o il profiling .NET? – Mykroft