Nello script #654 abbiamo visto come fare in modo che Entity Framework generi un codice SQL che include direttamente il valore di una variabile al posto di usare un parametro. La versione 9 di EF introduce il metodo EF.Parameter che fa esattamente il lavoro opposto ovvero prende un valore costante e lo trasforma in una variabile nel SQL generato. Facciamo un esempio.
var people = await context.People .Where(e => e.LastName == "Mostarda") .ToListAsync();
In questo caso il codice SQL sarà una cosa come questa.
Select * from people where lastname = 'Mostarda'
La cosa potrebbe non rappresentare un grosso problema, ma se abbiamo diversi punti dove facciamo la stessa query ma con cognomi diversi, potremmo andare a inquinare la cache del query plan del database. In questi casi può tornare utile usare EF.Parameter per trasformare il valore costante in un parametro.
var people = await context.People .Where(e => e.LastName == EF.Parameter("Mostarda")) .ToListAsync();
In questo caso il codice SQL sarà differente da prima perchè usa un parametro.
Select * from people where lastname = @lastname
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire gli accessi con Token su Azure Container Registry
Creare una libreria CSS universale: Nav menu
.NET Aspire per applicazioni distribuite
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Change tracking e composition in Entity Framework
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Creare una libreria CSS universale: Cards
Testare l'invio dei messaggi con Event Hubs Data Explorer
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Gestione file Javascript in Blazor con .NET 9