ABP .NET6 升级 EF Core 7 使用ExecuteUpdate实现批量更新并监测生成的SQL
记录一个简单的使用EFCore7批量更新的例子
EF7 面向 .NET 6,因此可与 .NET 6 (LTS) 或 .NET 7 一起使用。
详见:官方文档
先更新如下包
Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 7.0.0
Install-Package Microsoft.EntityFrameworkCore.Tools -Version 7.0.0
Install-Package Microsoft.EntityFrameworkCore.Design -Version 7.0.0
在Controller中添加引用
using Microsoft.EntityFrameworkCore;
方法体代码
//更新所有实体的CreationTime为当前时间
_roleRepository.GetAll()
//.Where(entity => entity.Id > 0)编写where语句
.ExecuteUpdate(update => update.SetProperty(entity => entity.CreationTime, DateTime.Now));
执行前的数据
执行后的数据
可以看到2条数据的CreationTime都被修改成了相同的值
看一下生成的SQL日志
更新了2条数据,只生成了1条update语句。
如果是EFCore7之前的版本更新n条数据时,会生成1条查询语句和n条update语句。
这说明EFCore7的批量更新性能更好了。