Код EF сначала вставляет много строк

Сначала я использую код EF, и мне нужно вставить много строк в таблицу, пару тысяч записей, которые у меня есть в общем списке. Просто выполнение цикла foreach и добавление каждой сущности в таблицу и завершение с помощью SaveChanges() занимает довольно много времени.

Есть ли громоздкий способ сделать это сначала с помощью EF или кода, или вместо этого мне следует использовать SqlCommand или SqlBulkCopy? Кроме того, есть ли что-то, что я могу сначала отключить в коде EF, чтобы ускорить вставку?

Спасибо за помощь!


person Johan Danforth    schedule 23.02.2011    source источник
comment
Я хотел бы получить еще несколько советов о том, как ускорить вставку строк с кодом EF, но я думаю, что это невыполнимо.   -  person Johan Danforth    schedule 28.02.2011


Ответы (1)


Вы можете звонить SaveChanges() реже.

Однако ничто из того, что вы можете сделать с EF, не сравнится по производительности с чем-то вроде SqlBulkCopy.

person Craig Stuntz    schedule 23.02.2011
comment
+1 ORM никогда не был и не будет эффективным решением для массовых операций. - person Jesse C. Slicer; 23.02.2011
comment
Простое выполнение 4000 раз dbContext.Entityname.Add() занимает 20-30 секунд. SaveChanges() после цикла занимает более 10 секунд. Вероятно, пойдет на SqlBulkCopy... - person Johan Danforth; 24.02.2011