Ogni volta che aggiungiamo un oggetto al contesto e ogni volta che salviamo i dati sul database, Entity Framework effettua una comparazione tra i dati degli oggetti e i dati che sono nel contesto per verificare se qualcosa è cambiato. Quando lavoriamo con un piccolo set di oggetti, questa comparazione è velocissima e il suo impatto sulle performance è insignificante.
Tuttavia, quando dobbiamo fare un inserimento massivo di oggetti nel contesto, quest'operazione comincia a diventare pesante in quanto ripetuta ad ogni singola aggiunta di un oggetto. Quindi, supponendo di dover inserire 1000 oggetti, questa operazione viene ripetuta mille volte.
Per ottimizzare le prestazioni possiamo usare il metodo AddRange di DbSet. Questo metodo disabilita il controllo delle modifiche, inserisce gli oggeti nel context e successivamente riabilita e scatena il controllo delle modifiche. In questo modo si incrementano notevolmente le prestazioni.
ctx.People.AddRange(_people);
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Le novità di Angular: i miglioramenti alla CLI
.NET Conference Italia 2023
Utilizzare Model as a Service su Microsoft Azure
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Le novità di Entity Framework 8
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Verificare la provenienza di un commit tramite le GitHub Actions
Utilizzare database e servizi con gli add-on di Container App
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Estrarre dati randomici da una lista di oggetti in C#
Usare le collection expression per inizializzare una lista di oggetti in C#
Evitare la script injection nelle GitHub Actions