Я запускаю импорт, который будет иметь 1000 записей при каждом запуске. Просто ищем подтверждение моих предположений:
Какой из них имеет наибольший смысл:
-  Запустите SaveChanges()каждый вызовAddToClassName().
-  Запустите SaveChanges()каждое n число вызововAddToClassName().
-  Запустите SaveChanges()после всех вызововAddToClassName().
Первый вариант, вероятно, медленный? Поскольку он должен будет анализировать объекты EF в памяти, генерировать SQL и т.д.
Я предполагаю, что второй вариант является лучшим из обоих миров, так как мы можем обернуть попытку поймать этот вызов SaveChanges() и просто потерять n количество записей за раз, если один из них не работает. Может быть, хранить каждую партию в списке < > . Если вызов SaveChanges() завершен, избавьтесь от списка. Если это не удается, зарегистрируйте элементы.
Последний вариант, вероятно, тоже будет очень медленным, так как каждый отдельный объект EF должен быть в памяти до тех пор, пока не будет вызван SaveChanges(). И если сохранение не удалось, то ничего не было бы сделано, верно?
