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
Change tracking e composition in Entity Framework
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Loggare le query più lente con Entity Framework
Eseguire query in contemporanea con EF
I più letti di oggi
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- .NET Conference Italia 2025 - Milano
- The Agentic Day - Milano
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Documentare i servizi REST con Swagger e OpenAPI con .NET 9