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
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Mappare una complex property di una entity su un campo JSON
Utilizzare ExecuteUpdate per aggiornare colonne JSON in Entity Framework
Eseguire query in contemporanea con EF
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Mischiare codice server side e client side in una query LINQ con Entity Framework
Usare la parola chiave field per semplificare la scrittura di proprietà in C#




