Использование AddRange поверх Add - это уже большое улучшение.Он исправляет медленную часть приложения.
Тем не менее, SaveChanges
все еще занимает много времени, потому что для каждой сохраняемой сущности выполняется одно обращение к базе данных.Таким образом, если у вас есть 10 000 сущностей для вставки, будет выполнено 10 000 обращений к базе данных, что БЕЗУМНО медленно.
Отказ от ответственности : я владелециз Расширения Entity Framework
Эта библиотека не является бесплатной, но позволяет выполнять все массовые операции, включая BulkSaveChanges
и BulkInsert
:
- Массовое SaveChanges
- Массовая вставка
- Массовое удаление
- Массовое обновление
- Массовое слияние
Пример
// Easy to use
context.BulkSaveChanges();
// Easy to customize
context.BulkSaveChanges(bulk => bulk.BatchSize = 100);
// Perform Bulk Operations
context.BulkDelete(customers);
context.BulkInsert(customers);
context.BulkUpdate(customers);
// Customize Bulk Operations
context.BulkInsert(customers, options => {
options => options.IncludeGraph = true;
});
context.BulkMerge(customers, options => {
options.ColumnPrimaryKeyExpression =
customer => customer.Code;
});