对于数据的批量增删改最慢的就是操作一条就提交一次事务。
以下是对增删改操作的优化测试
同样的300条数据
批量新增只提交一次事务
用时:10673.5444ms
批量新增只提交一次事务并把context.Configuration.AutoDetectChangesEnabled = false
用时:5284.5425ms
批量修改只提交一次事务
用时:3472.8314ms
批量修改只提交一次事务并把context.Configuration.AutoDetectChangesEnabled = false
用时:1993.7855ms
批量删除只提交一次事务
用时:5961.3264ms
批量删除只提交一次事务并把context.Configuration.AutoDetectChangesEnabled = false
用时:1346.8273ms
删除有一点特别提醒,我的删除方法使用的是替身删除,而不是先从数据库查出数据再来删除。
两种删除的方法对比
慢
var stu=context.Students.SingleOrDefault(s=>s.StudentNo==23230);
context.Students.Remove(stu);
context.SaveChanges();
快
var stu=new Student{StudentNo=23230};
context.Students.Attach(stu);
context.Students.Remove(stu);
context.SaveChanges();
显然效率的提升是很明显的。