Улучшение производительности массовой вставки в платформе Entity - PullRequest
109 голосов
/ 24 мая 2011

Я хочу вставить 20000 записей в таблицу по структуре объекта, и это займет около 2 минут. Есть ли способ, кроме как использовать SP для улучшения его производительности. Это мой код:

 foreach (Employees item in sequence)
 {
   t = new Employees ();
   t.Text = item.Text;
   dataContext.Employees.AddObject(t);                  
 }
 dataContext.SaveChanges();

Ответы [ 12 ]

0 голосов
/ 17 октября 2017

Хоть и поздний ответ, но я выкладываю ответ, потому что страдал от той же боли.Я создал новый проект GitHub только для этого, на данный момент он поддерживает прозрачную вставку / обновление / удаление сервера Sql с использованием SqlBulkCopy.

https://github.com/MHanafy/EntityExtensions

Есть и другиеТакже, я надеюсь, это будет расширено, чтобы сделать больше в будущем.

Использовать его так же просто, как

var insertsAndupdates = new List<object>();
var deletes = new List<object>();
context.BulkUpdate(insertsAndupdates, deletes);

Надеюсь, это поможет!

0 голосов
/ 30 июля 2015
 Use : db.Set<tale>.AddRange(list); 
Ref :
TESTEntities db = new TESTEntities();
List<Person> persons = new List<Person> { 
new  Person{Name="p1",Place="palce"},
new  Person{Name="p2",Place="palce"},
new  Person{Name="p3",Place="palce"},
new  Person{Name="p4",Place="palce"},
new  Person{Name="p5",Place="palce"}
};
db.Set<Person>().AddRange(persons);
db.SaveChanges();
...