Nello script 683 abbiamo visto che Entity Framework 10 introduce un ulteriore modo di tradurre il metodo Contains in una IN SQL. La strategia di default è quella di usare i singoli parametri nella IN, ma questa strategia può non andare bene per i nostri scopi e magari vogliamo usarne un'altra. Possiamo configurare la nostra strategia di efault durante la fase di configurazione del contesto.
optionsBuilder
.UseSqlServer(connString, o => o.UseParameterizedCollectionMode(ParameterTranslationMode.Constant));L'enum ParameterTranslationMode ha tre possibili valori:
- MultipleParameters: usa i singoli parametri nella in "select * from table where id in (@p1, @p2, @p3)". Questo è il valore di default;
- Constant: usa i valori costanti nella in "select * from table where id in (1, 2, 3)";
- Parameter: serializza i valori in json "select * from table where id in "select value from OPENJSON(@ids) WITH (value int '$')".
Possiamo anche decidere di addottare una specifica strategia per una singola query usando i metodi della classe statica EF.
- Constant: usa i valori costanti nella in "select * from table where id in (1, 2, 3)";
- Parameter: serializza i valori in json "select * from table where id in "select value from OPENJSON(@ids) WITH (value int '$')".
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.




