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的批量更新性能更好了。

posted @ 2022-11-14 22:22  cnblogsName  阅读(406)  评论(0编辑  收藏  举报