EF 6 DB-First系列--EntityFramework中添加或删除多个实体

本文介绍了EntityFramework6中的DbSet.AddRange()和RemoveRange()方法,用于一次性的添加和删除实体集合,以提高性能,避免了频繁的数据库往返。通过示例展示了如何使用这两个方法进行批量操作并注意其工作原理。
摘要由CSDN通过智能技术生成

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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值