Sto usando EF6 rc1 con la strategia Code First, senza visualizzazioni precompilate e il problema è: Se compilo ed eseguo l'applicazione exe ci vuole come 15 secondi per eseguire la prima query (va bene, visto che sto ancora lavorando alle viste pre-generate). Ma se io uso Visual Studio 2013 Anteprima per eseguire il debug la stessa applicazione esatto ci vogliono quasi due minuti prima di eseguire la prima query:EF6/Codice Primo: Super slow durante la prima query, ma solo in Debug
Dim Context = New MyEntities()
Dim Query = From I in Context.Itens '' <--- The debug takes 2 minutes in here
Dim Item = Query.FirstOrDefault()
C'è un modo per rimuovere questo tempo in più? Sto facendo qualcosa di sbagliato qui?
Ps .: Il contesto in sé non è complicato, è solo pieno di oltre 200 tabelle.
Modifica: Scoperto che il problema è che durante il tempo di debug l'EF sembra generare le Views ignorando quelle pre-generate. Utilizzando il codice sorgente da EF ho scoperto che la proprietà:
IQueryProvider IQueryable.Provider
{
get
{
return _provider ?? (_provider = new DbQueryProvider(
GetInternalQueryWithCheck("IQueryable.Provider").InternalContext,
GetInternalQueryWithCheck("IQueryable.Provider").ObjectQueryProvider));
}
}
è dove il tempo viene consumato. Ma questo è strano poiché ci vuole solo del tempo nel debug. Mi sto perdendo qualcosa qui?
Modifica: Trovato più informazioni relative alla domanda: Utilizzo di Process Monitor (di Sysinternals) Ho scoperto che esiste il processo "desenv.exe" che sta consumando un sacco di tempo. Per essere più specifici il suo tempo di consumo con un 'Thread Exit'. Ripete 36 volte lo stack Esci thread. Non so se questa informazione è molto utile, ma ho salvato un file .cvs con lo stack, ecco il suo corpo: [...] (edit: rimosso il corpo di '.cvs', posso postarlo di nuovo dai commenti se qualcuno pensa davvero che sarà utile, ma è stato confuso e troppo grande.)
Modifica: installato VS2013 Ultimate e Entity Framework 6 RTM. Installato l'Entity Framework Power Tools Beta 4 e lo ha utilizzato per generare le Visualizzazioni. Nulla è cambiato ... Se eseguo l'exe ci vogliono 20 secondi, se I 'Start' debug richiede 120 secondi.
Modifica: creato un piccolo progetto per simulare l'errore: http://sdrv.ms/16pH9Vm Basta eseguire il progetto all'interno dell'ambiente e direttamente tramite l'exe, fare clic sul pulsante e confrontare il tempo di caricamento.
Questo è un problema comune che ha afflitto EF per un bel po 'di tempo, ho pensato che stavano per affrontare in EF6 .. ma forse no .. Una cosa EF6 offre è la possibilità di rompere il vostro modello in più modelli, che potrebbe essere la soluzione migliore. –
http://entityframework.codeplex.com/wikipage?title=Multi-tenant%20Migrations –
L'interruzione in più contesti non ha cambiato nulla.Tutti i contesti seguono la "regola", quindi impiega quasi lo stesso tempo per caricarli, a meno che non carichi su richiesta, ma ho bisogno di caricarli tutti, poiché ci sono molte chiavi esterne tra di loro. –