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
Applicare un filtro per recuperare alcune issue di GitHub
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Le novità di Angular: i miglioramenti alla CLI
Gestione dell'annidamento delle regole dei layer in CSS
Change tracking e composition in Entity Framework
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Gestione degli stili CSS con le regole @layer
Creare una libreria CSS universale: i bottoni
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Gestire la cancellazione di una richiesta in streaming da Blazor
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary