¿Cuándo debo llamar a SaveChanges () al crear miles de objetos de Entity Framework? (como durante una importación)

Estoy ejecutando una importación que tendrá miles de registros en cada ejecución. Solo busco alguna confirmación en mis suposiciones:

Cuál de estos tiene más sentido:

correrSaveChanges() cadaAddToClassName() llamada.correrSaveChanges() cadan número deAddToClassName() llamadascorrerSaveChanges() despuéstodos delAddToClassName() llamadas

La primera opción es probablemente lenta ¿no? Ya que tendrá que analizar los objetos EF en la memoria, generar SQL, etc.

Supongo que la segunda opción es la mejor de los dos mundos, ya que podemos hacer una prueba de eso.SaveChanges() Llama, y ​​solo pierde.n Número de registros a la vez, si uno de ellos falla. Tal vez almacenar cada lote en una lista <>. Si elSaveChanges() llamada exitosa, deshacerse de la lista. Si falla, registra los elementos.

La última opción probablemente también terminará siendo muy lenta, ya que cada objeto EF debería estar en la memoria hastaSaveChanges() se llama. Y si fallara la salvación no se cometería nada, ¿verdad?

Respuestas a la pregunta(5)

Su respuesta a la pregunta