EntityFramework中添加或删除多个实体
Entity Framework 6引入了一次性添加和删除实体集合的方法。DbSet.AddRange()方法将一个实体集合附加到具有Added状态的上下文中,它将在数据库中为SaveChanges()上的所有实体执行INSERT命令。以同样的方式,DbSet.RemoveRange()方法附加了一个具有Deleted状态的实体集合,该集合将依次为SaveChanges()上的所有实体执行DELETE命令。
使用AddRange和RemoveRange方法添加或删除实体可以提高性能。如果您想使用Entity Framework从数据库中插入或删除大量记录,建议使用这些方法。
下面的示例演示如何保存多个实体。
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通过对单个数据库往返中的所有实体执行INSERT和DELETE命令来提高AddRange和RemoveRange方法的性能。
注意:AddRange和RemoveRange方法并不是只执行一条sql语句,而是EF会以循环的方式遍历批量插入、删除的集合多次执行sql
参考
https://www.entityframeworktutorial.net/
https://msdn.microsoft.com/