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
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Generare la software bill of material (SBOM) in GitHub
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Gestire la cancellazione di una richiesta in streaming da Blazor
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Filtering sulle colonne in una QuickGrid di Blazor
Ottenere un token di accesso per una GitHub App
Usare il colore CSS per migliorare lo stile della pagina
Recuperare l'ultima versione di una release di GitHub
Generare una User Delegation SAS in .NET per Azure Blob Storage
Anonimizzare i dati sensibili nei log di Azure Front Door