ABP .NET6 使用 EF Core 7 ExecuteUpdate实现批量更新并监测生成的SQL

九、Abp 之Mysql数据库批量操作 在实际项目中,不可避免会遇到数据导入的需求,如果是大量数据导入,就必须引用批量处理的功能;efcore本身不提供批量处理功能,而abp框架虽然提供InsertMany和UpdateMany方法,但本质上仍然是分解成单条insert和update操作,在处理稍大量的数据时,耗时就会明显增加; 本章节将介绍如何在abp中实现mysql的批量处理功能,首先需要引用第三方efcore扩展包,github上使用最广泛的开源扩展包是borisdj / EFCore.BulkExtensions,但是不支持Mysql. 阅读详情

记录一个简单的使用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的批量更新性能更好了。

EFCore postgresql 批量删除、插入、更新 我用的.net 6configValueHostconfigValuePortconfigValueDataBaseconfigValueUserNameconfigValuePassword。 阅读详情

相关推荐

C#系列-C#EF批量增加修改删除数据(32)

对于大量数据的批量操作,EF 可能不是最优选择。在这种情况下,你可以考虑使用原生SQL命令或者数据库特定的批量操作API来提高性能。中,批量增加、修改和删除数据可以通过几种不同的方法来实现。:对于重要的批量操作,考虑记录日志和监控性能,以便在出现问题时能够迅速定位和解决问题。:如果你需要确保所有操作都成功,或者部分失败时能够回滚,你应该将批量操作放在事务中。批量修改数据意味着你需要更新多个实体的属性,并将这些更改保存到数据库中。:确保你的代码能够妥善处理可能出现的任何异常,并适当回滚事务。

赵玉的专栏 1642

EF Core 7.0 新特性之批量修改

EF Core 7.0 提供了一个可以将LINQ查询和批量修改相结合的方法ExecuteUpdate。由于数据修改是以批量更新的方式完成,所以可以减少数据库的往返次数。 本文将主要介绍ExecuteUpdate的使用方法。

weixin_43263355的博客 3409

EF批量更新、批量插入、 批量删除使用的是EFUtilities,免费的操作简单,速度超级快

EF批量更新、批量插入、 批量删除 使用的是EFUtilities,免费的。 操作简单,速度超级快

EF core批量更新

在使用Entity Framework Core进行批量更新操作时,需要先查询出需要更新的数据,将其进行修改,并将其标记为已修改状态,最后调用。方法会自动将所有标记为已修改的实体更新到数据库中。由此以来就不需要没循环一个对象就去数据库操作一次,这样对性能方面也有一定的改善.然后我们遍历每个实体,对它们进行修改,并将其状态标记为已修改(在上面的代码中,我们首先查询需要更新的实体,并将它们存储在变量。

weixin_51326081的博客 1589

P+F--r2000激光雷达slam技术实现

P+F--r2000激光雷达slam技术实现

majingming123的博客 1667

Qt制作大数据可视化大屏展示电子看板

Qt制作大数据可视化大屏展示电子看板 解决当前最火的大数据可视化大屏展示,整个项目通过Qt开发,集成了QML/QChart/ECharts及自定义控件等模块,所有的可视化控件都可以集成到其中。可以随意增加和减少模块,各个模块可以随意拖拽,整体可以个性化布局。模块标题栏可自定义,包括标题文本信息、文本颜色、宽度/高度、背景颜色、按钮个数等功能,满足各个样式需求。 实例中主要展示了现成的一些仪表盘...

Qt自定义控件及应用开发 7707

EF CORE 7 中的新功能:使用 ExecuteDelete 和 ExecuteUpdate 进行批量操作

原文链接:https://timdeschryver.dev/blog/new-in-entity-framework-7-bulk-operations-with-executedelete-and-executeupdate原文作者:tim_deschryver翻译:沙漠尽头的狼(谷歌翻译加持)Entity Framework 7 包括一些已被要求的流行功能,其中之一是批量操作。Julie L...

dotNET跨平台 2875

centos7 python3.12.1 报错 No module named _ssl,坑我几个小时

网上的教程很多,但几乎是无效的,跟着我这教程,可以完美解决。

Amio_的博客 1万+

批量更新(Batch updates)

此方法同样适用于检索和更新数据。此外,在进行会返回很多行数据的查询时, 你需要使用 scroll() 方法以便充分利用服务器端游标所带来的好处。 Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction(); ScrollableResults custome

ailihx的专栏 1238

Zynq UltraScale+ MPSoC-AMP(linux+裸机)

接着 Zynq UltraScale+ MPSoC-双核裸机AMP继续 平台工具:zcu106,vitis2020.2,petalinux2019.2 文章目录1.cpu1跑裸机2.cpu0跑linux2.1petalinux设置2.2 app3.生成BOOT.bin4.zcu106测试 1.cpu1跑裸机 参照Zynq UltraScale+ MPSoC-双核裸机AMP建立的工程进行修改。BSP中stdin与out修改为uart1,uart1给裸机用,uart0给linux用。 ddr空间裸机与linu

zhuxl24的博客 5195

用Java实现森林冰火人游戏

g.drawString("游戏结束", CELL_SIZE * COLS / 2 - 100, CELL_SIZE * ROWS / 2);g.drawString("难度级别: " + difficultyLevel, 10, CELL_SIZE * ROWS + 60);g.drawString("生命值: " + playerHealth, 10, CELL_SIZE * ROWS + 20);setTitle("森林冰火人");

2401_82778412的博客 1734

分享EF Core一个超实用的扩展方法,让你的更新表达式更灵活

在EF Core 7.0中,新增加了一个非常实用的批量更新方法:ExecuteUpdate,它可以让我们直接更新数据库中的实体对象,而不需要先查询再保存。这样可以提高性能,减少网络开销,也可以避免一些并发冲突的问题。比如:await context.Blogs .Where(p=>p.BlogId >1) .ExecuteUpdateAsync(s => s...

dotNET跨平台 1244

【Zephyr电源与功耗专题】13_PMU电源驱动介绍

本文介绍的PMU芯片包含2路DCDC和6路LDO,在Zephyr实时操作系统下实现了完整的电源管理解决方案。

zero的博客 842

EF 批量更新/删除数据

在网上找了很久,得到的答案是”Entity Framework 中不能同时更新多条记录”,历经这么多版本,居然还没有这种基本功能,我真的很无语了.还要先查询出来,然后再对实体更新或删除,那效率可想而知了…… 在网上找了找解决方案,比如说这个 EF架构~性能高效的批量操作(Update篇) 感觉在剑走偏锋,里面实际是在拼Sql(当然EF最终也是拼SQL),我却不喜欢这么干,完全没有Linq的感觉

lee576的专栏 3万+

QCC304x系列开发教程(实战篇)之5.2 QCC3040之提示音

earbud_init.c中,初始化table中UiPrompts_Init /*! \brief Table of initialisation functions */ static const init_table_entry_t appInitTable[] = { ......... {UiPrompts_Init, 0, NULL}, ......... } ui_prompts.c中是提示音音处理的主要逻辑和配置源文件 函数static void uiPro...

心跳包的博客 2392

B站评论情感分析实战:Python批量爬取+BERT正负向分类,精准度92%(附完整代码)

用技术手段自动化挖掘用户真实情感,比人工分析更高效、更客观。这套方案的精度能稳定在90%左右,完全满足实际应用需求。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1025

EF Core 批量数据操作

Bulk插件 批量数据操作

cillent_boy的专栏 1620

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Entity Framework Core 7中高效地进行批量数据插入

因为之前的版本中,EF Core无法实现高效地批量插入、修改、删除数据,所以我开发了Zack.EFCore.Batch这个开源项目,比较受大家的欢迎,获得了400多个star。现在支持.NET 7了

nzzackyang的博客 1982

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ABP 在 EntityFramework 中使用扩展批量更新时的异常

报错信息:Invalid Cast. The update expression must be of type MemberInitExpression. 直译结果:无效的。更新表达式必须是MemberInitExpression类型。 下面是报错对应的写法: await projectsRepository.BatchUpdateAsync(x => new Projects(2...

研究、探索、分享与成长 1773

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ABP 在 EntityFramework 中使用扩展实现批量操作

注意:目前批量删除即使已继承 ISoftDelete 的情况下依然会物理删除,所以可以通过批量更新实现逻辑删除。 调用方法: await projectsRepository.BatchUpdateAsync(x => new Projects { Status = 2 }, x => projectIdList.Contains(x.Id)); 以下是批量更新与删除的内部实现...

研究、探索、分享与成长 5779

【Abp VNext】实战入门(十三):【2】领域层 —— 批量更新数据库记录

文章目录一、前言二、批量操作数据库记录方案1、添加开源插件:2、批量更新记录Index:三、总结 一、前言 EntityFrameWork 中没有批量操作数据库的方法,如:批量更新、批量删除等… 可以通过DbContext来执行Sql语句,不是特别优雅和推荐; 优雅的方式当然是使用开源的现成轮子… 二、批量操作数据库记录方案 1、添加开源插件: nuget 搜索添加 Z.EntityFramework.Plus 2、批量更新记录Index: /// <summary>

刘永洪的博客 1487

EF 批量更新删除(linq篇)

刚开始用EF很多东西都不会用,事后想想都很简单的东西总是用很麻烦的方式实现 1: EF的联合查询 inner join   很久很久以前我是这么写一个列表展示的,其中有两个字段Contractor和Maintaniner是需要inner join 链接查询,   但是当时太年轻不会用ef的链接,所以用了最笨的方法,代码如下 [Permission("L_Business...

weixin_30802171的博客 333

.net abp 更新数据库指令

.net abp 更新数据库指令 打开程序包管理器控制台 输入代码

tomalis的博客 303

EFCore常见用法

EFCore常见操作

气氛组,yyds 2400

EF Core在SQL Server里的timestamp数据类型转移到Mysql中怎么使用

Mysql中的Timestamp数据类型只是单纯的一个时间戳类型,没有防止并发冲突的作用;如果想实现SQL Server里的Timestamp数据类型需要自定义一个并发冲突字段,并通过重写EF Core中的SaveChanges方法进行实现1、Entity里声明并发冲突字段:声明自定义并发冲突字段后,在更新时where条件里会带上该字段,与TimeStamp效果类似。

qq_36695087的博客 568
上一篇: 锐浪报表,用脚本处理字段
下一篇: 麒麟银河Excel对应的Content-Type
ZZHSourceCode
博客等级 码龄9年 8粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值