5

Ho un'applicazione Web ASP.NET MVC 5 e utilizzo EF 6.1 per accedere al mio DB.
Ho alcune query LINQ piuttosto complesse che richiedono fino a 10 secondi per essere compilate, ma che vengono eseguite in pochi millisecondi. EF memorizza correttamente questa query e la seconda volta che viene eseguita la query restituisce entro pochi millisecondi.
Ma questa cache non è persistente, quindi su ogni app, il riavvio della query deve essere ricompilato, il che richiede ancora 10 secondi.Cache query persistente Entity Framework

C'è un modo per mantenere questa cache di query in modo che sopravviva a un riavvio dell'app?

query
+0

http://www.fusonic.net/en/blog/2014/07/09/three-steps-for-fast-entityframework-6.1-first-query-performance/ –

+0

Grazie per il link, ma ho già fa la maggior parte di questo e non gestisce la cache della query, ma solo la cache del modello ... – ChrFin

+1

La cache della query è un dizionario all'interno di QueryCacheManager. Ho provato a salvarlo utilizzando reflection, ma poiché QueryCacheKey e QueryCacheEntry non sono pubblici e non sono contrassegnati come Serializable, non è possibile. Salvare/caricare la cache del piano di query sarebbe una funzione molto utile, quindi dovresti creare un problema su http://entityframework.codeplex.com/workitem/list/advanced –

risposta

0

È possibile utilizzare compilati: see here o here

Ma, come accennato here l'oggetto query non deve andare fuori portata. Puoi gestirlo conservandolo nella cache nella sessione o come variabile dell'applicazione.

+1

Siamo spiacenti, ma questo NON aiuta, poiché durante l'esecuzione della mia app sono già memorizzati nella cache di EF. Voglio conservare questo * persistentemente * in modo che sopravviva al riavvio dell'app ... – ChrFin

+0

Puoi compilarlo durante l'avvio dell'app in background, quindi è pronto quando lo usi. Se ciò non è possibile, è possibile serializzare l'oggetto query compilato su file e ripristinarlo da lì. Pertanto solo il primo utilizzo è lento. Tuttavia questo può essere fatto solo con query compilate. – Vanice