Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework

di Stefano Mostarda, in LINQ, Entity Framework,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi