Когда мне следует вызывать SaveChanges () при создании тысяч объектов Entity Framework? (как во время импорта)

Я запускаю импорт, который будет иметь 1000 записей при каждом запуске. Просто ищу подтверждение моих предположений:

Что из этого имеет наибольшее значение:

БегатьSaveChanges() каждыйAddToClassName() вызов.БегатьSaveChanges() каждыйn количествоAddToClassName() звонки.БегатьSaveChanges() послевсе изAddToClassName() звонки.

Первый вариант, вероятно, медленный, верно? Так как для этого нужно будет анализировать объекты EF в памяти, генерировать SQL и т. Д.

Я предполагаю, что второй вариант является лучшим из обоих миров, так как мы можем попытаться обойти этоSaveChanges() позвони, и только проиграйn количество записей за раз, если одна из них выходит из строя. Может быть, хранить каждую партию в списке <>. ЕслиSaveChanges() вызов успешен, избавьтесь от списка. Если это не удается, зарегистрируйте элементы.

Последний вариант, вероятно, тоже будет очень медленным, поскольку каждый объект EF должен находиться в памяти доSaveChanges() называется. И если сохранение не удастся, ничего не будет совершено, верно?

Ответы на вопрос(5)

Ваш ответ на вопрос