Quando eseguiamo una query LINQ in Entity Framework Core, questo la compila e ne mette in cache il risultato della compilazione così da non doverla ricompilare ogni volta in quando il processo di compilazione di una query LINQ è molto oneroso. Tuttavia, se una query viene eseguita molto spesso, questo significa che Entity Framework Core fa altrettanto spesso il lookup della query in cache per estrarne il risultato compilato. Sebbene il lookup sia estremamente veloce, questo ha comunque un costo che per query usate di frequente può diventare oneroso.
Per ottimizzare ulteriormente le performance possiamo precompilare la query via codice e associarne il risultato della compilazione a una variabile così da utilizzarla direttamente nel codice.
private static Func<MyContext, int, Person> _getPersonById = EF.CompileQuery((MyContext ctx, int id) => ctx.People.First(p => p.Id == id)); using (var ctx = new MyContext()) { var person = _getPersonById(ctx, 1); }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Disabilitare automaticamente un workflow di GitHub
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Gestire domini wildcard in Azure Container Apps
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
Aggiornare a .NET 9 su Azure App Service
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Sfruttare al massimo i topic space di Event Grid MQTT
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Cambiare la chiave di partizionamento di Azure Cosmos DB
Disabilitare automaticamente un workflow di GitHub (parte 2)