EF6添加了批量添加/删除实体集合的方法,咱们能够使用DbSet.AddRange()方法将实体集合添加到上下文,同时实体集合中的每个实体的状态都标记为Added,在执行SaveChange()方法时为每一个实体执行Insert操做;一样的咱们使用DbSet.RemoveRange()方法将集合中的全部实体都标记为deleted状态,在执行SaveChange()方法时为每一条数据执行delete操做。html
经过AddRange()和RemoveRange()方法能够有效提高性能,因此建议在进行批量数据的添加/删除时采用这两种方法。数据库
一个批量添加的栗子:post
IList<Student> newStudents = new List<Student>() { new Student() { StudentName = "Steve" }; new Student() { StudentName = "Bill" }; new Student() { StudentName = "James" }; }; using (var context = new SchoolDBEntities()) { context.Students.AddRange(newStudents); context.SaveChanges(); }
一个批量删除的栗子:性能
IList<Student> studentsToRemove = new List<Student>() { new Student() { StudentId = 1, StudentName = "Steve" }; new Student() { StudentId = 2, StudentName = "Bill" }; new Student() { StudentId = 3, StudentName = "James" }; }; using (var context = new SchoolDBEntities()) { context.Students.RemoveRange(studentsToRemove); context.SaveChanges(); }
特别注意:EF Core的AddRange()和RemoveRange()只访问一次数据库,因此性能比EF6更高。spa
EF系列目录连接:Entity Franmework系列教程汇总code