Entity framework 中如何提高批量插入性能

116

我希望通过Entity Framework在表中插入20000条记录,但需要2分钟左右。除了使用存储过程之外,是否有其他方法来提高性能?这是我的代码:

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

3
请查看此解决方案 关于如何使用 SqlBulkCopy 处理 Generic List<T> 。适用于 Code First POCOs,速度会更快。 - shox
我在一些数据上使用了这个,将我的插入时间从半小时以上改进到了约15秒(大约50K行)。 - shox
SqlBulkCopy是(并且一直是)将记录插入SQL Server的最快方法,我认为我在下面的答案中提供的实现比@dubbreak的实现更好。我描述的陷阱也适用于那段代码。 - Mick
11个回答

-2
 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();

请添加描述。 - zohar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接