Compilare una query LINQ to Entities è un'operazione molto lenta. Per migliorare le cose possiamo effettuare la compilazione una volta sola e riutilizzare la versione compilata sfruttando il metodo statico Compile della classe CompiledQuery.
var compQuery = CompiledQuery.Compile<OrderITEntities, string, IQueryable<Customer>>( (ctx, name) => ctx.Customers.Where(c => c.Name.StartsWith(name)) );
Il metodo Compile accetta n parametri generici dove il primo è il tipo del contesto, l'ultimo è il tipo restituito dalla query e quelli in mezzo sono i parametri da passare alla query.
Per invocare la query compilata basta usare il metodo Invoke della variabile restituita dal metodo Compile.
var items = compQuery.Invoke(ctx, "Custo").ToList();
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Eseguire una GroupBy per entity in Entity Framework
Utilizzare la libreria Benchmark.NET per misurare le performance
Le novità di Entity Framework 8
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework