Ottimizzare le bulk insert con Entity Framework 6

di Stefano Mostarda, in LINQ, Entity Framework,

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

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