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