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