ef.extensions mysql_EFcore 使用 EFCore.BulkExtensions(不支持mysql)或 EntityFramework-Plus 批量增加、删除、修改...

EFCore.BulkExtensions,EntityFramework-Plus  都是Microsoft推荐的EFcore扩展 。

可以通过nuget安装

一、EFCore.BulkExtensions

使用方法如下:

实体批量操作:

context.BulkInsert(entitiesList); context.BulkInsertAsync(entitiesList);

context.BulkUpdate(entitiesList); context.BulkUpdateAsync(entitiesList);

context.BulkDelete(entitiesList); context.BulkDeleteAsync(entitiesList);

context.BulkInsertOrUpdate(entitiesList); context.BulkInsertOrUpdateAsync(entitiesList);//Upsert

context.BulkInsertOrUpdateOrDelete(entitiesList); context.BulkInsertOrUpdateOrDeleteAsync(entitiesList); //Sync

context.BulkRead(entitiesList); context.BulkReadAsync(entitiesList);

context.Truncate(); context.TruncateAsync();

按条件批量操作

//Delete

context.Items.Where(a => a.ItemId > 500).BatchDelete();

context.Items.Where(a=> a.ItemId > 500).BatchDeleteAsync();//Update (using Expression arg.) supports Increment/Decrement

context.Items.Where(a => a.ItemId <= 500).BatchUpdate(a => new Item { Quantity = a.Quantity + 100});//can be as value '+100' or as variable '+incrementStep' (int incrementStep = 100;)//Update (via simple object)

context.Items.Where(a => a.ItemId <= 500).BatchUpdate(new Item { Description = "Updated"});

context.Items.Where(a=> a.ItemId <= 500).BatchUpdateAsync(new Item { Description = "Updated"});//Update (via simple object) - requires additional Argument for setting to Property default value

var updateColumns = new List { nameof(Item.Quantity) }; //Update 'Quantity' to default value('0'-zero)

var q = context.Items.Where(a => a.ItemId <= 500);int affected = q.BatchUpdate(new Item { Description = "Updated" }, updateColumns);//result assigned to variable

当直接使用这些操作是独立的事务和自动提交。不需要手动savechange

然后如果我们需要多个操作单一过程应该使用显式事务。如下

using (var connection =(SqliteConnection)context.Database.GetDbConnection())

{

connection.Open();using (var transaction =connection.BeginTransaction())

{var bulkConfig = new BulkConfig() { SqliteConnection = connection, SqliteTransaction =transaction };

context.BulkInsert(entities, bulkConfig);

context.BulkInsert(subEntities, bulkConfig);

transaction.Commit();

}

}

二、EntityFramework-Plus

主要是mssql和mysql都支持

//using Z.EntityFramework.Plus;//Don't forget to include this.//DELETE all users which has been inactive for 2 years

ctx.Users.Where(x => x.LastLoginDate < DateTime.Now.AddYears(-2))

.Delete();//DELETE using a BatchSize

ctx.Users.Where(x => x.LastLoginDate < DateTime.Now.AddYears(-2))

.Delete(x=> x.BatchSize = 1000);//using Z.EntityFramework.Plus;//Don't forget to include this.//UPDATE all users which has been inactive for 2 years

ctx.Users.Where(x => x.LastLoginDate < DateTime.Now.AddYears(-2))

.Update(x=> new User() { IsSoftDeleted = 1 });

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505800.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sqlyog怎么连接mysql错误2003_网站突然连不上,MySQL连接错误经常内存不够宕机

阿里云服务器 MySQL 经常自动停止、挂掉、重启。打开 MySQL 的 error.log 错误信息&#xff0c;在阿里云 CentOS 的路径为 /alidata/log/mysql/error.log,如下&#xff1a;2016-03-13 00:16:37 0[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use--e…

华为抓截屏_原来这才是华为截屏的正确姿势,今天才知道,千万别不当回事

原标题&#xff1a;原来这才是华为截屏的正确姿势&#xff0c;今天才知道&#xff0c;千万别不当回事大家都知道我们的华为手机有很多好用的功能&#xff0c;截屏就是其中一个&#xff0c;那么你知道华为手机截屏的正确姿势吗&#xff1f;今天小编就带大家一起看看吧&#xff0…

python显示图片列表_python读取图片任意范围区域

使用python进行图片处理&#xff0c;现在需要读出图片的任意一块区域&#xff0c;并将其转化为一维数组&#xff0c;方便后续卷积操作的使用。下面使用两种方法进行处理&#xff1a;convert 函数from PIL import Imageimport numpy as npimport matplotlib.pyplot as pltdef Im…

mysql进阶3_MySQL进阶

1.视图概述&#xff1a;视图就相当于一个临时表&#xff0c;但是只定义了对应关系&#xff0c;用这个视图的时候&#xff0c;就会自行执行视图里定义好的sql语句&#xff0c;视图是只能去查原表的数据&#xff0c;不能去修改原表里面的数据的&#xff1b;视图的增删改查&#x…

python 反射和动态加载_Python的反射

什么是反射反射是一个很重要的概念&#xff0c;它可以把字符串映射到实例的变量或者实例的方法然后可以去执行调用、修改等操作。它有四个重要的方法&#xff1a;getattr 获取指定字符串名称的对象属性setattr 为对象设置一个对象hasattr 判断对象是否有对应的对象(字符串)dela…

oracle和mysql通用建表语句_mysql建表语句到oracle怎么写?

mysql建表语句到oracle怎么写&#xff1f;CREATE TABLE Advertisment ( AdId int(8) NOT NULL auto_increment, AderId int(8) default NULL, AdName varchar(50) default NULL, AdKind varchar(30) default NULL, CreateMan varchar(30) default NULL, StartDate date d…

onenote快捷键_高效飞快地使用onenote快捷键:快捷键功能架构解析

默认快捷键有近200组&#xff0c;涉及到的功能如此之多&#xff0c;但真正频繁使用的&#xff0c;可能也就几十组。如何从这么多快捷键中选择出自己需要的呢&#xff1f;你需要一张功能架构参考图。1默认快捷键功能架构图官方文档已对快捷键做了初步分类&#xff0c;但比较抽象…

怎么设置php.ini允许sql语句插入空值到mysql里_php读取.sql文件,写入mysql,navicat显示乱码,编码设置...

案例&#xff1a;php文件&#xff1a;install.php--------编码&#xff1a;php保存文件的编码、php header编码、php程序的默认编码、php写入数据库的编码php读取的sql代码文件&#xff1a;php.sql--------编码&#xff1a;sql保存文件的编码mysql数据库&#xff1a;test1-----…

ueditor如何设置上传图片的高度宽度_上百张图片上传并对齐,你加班2小时没搞定,同事简单三步就完成...

Excel除了汇总数据还可以上传保存相片&#xff0c;比如我们在人力信息表中将每个人的相片放到表格里面去&#xff0c;或者我们需要将宠物对应的相片放到表格里面去&#xff0c;这就涉及到图片的批量上传以及对齐的操作。如图所示&#xff0c;我们需要将每个动物对应的图片&…

pdf在线翻译_如何免费快速地翻译pdf英文文档,并保留很好的格式?

对于那些科研工作者&#xff0c;每天阅读外文文献是必须要做的&#xff0c;大家都知道&#xff0c;一份外文的pdf文献内容是很多的&#xff0c;阅读量也是非常大&#xff0c;边看边翻译的话&#xff0c;这个任务还是很艰巨的&#xff0c;面对如此大的阅读量&#xff0c;该怎么快…

java的super_Java中this和super的用法总结

这几天看到类在继承时会用到this和super&#xff0c;这里就做了一点总结&#xff0c;与各位共同交流&#xff0c;有错误请各位指正~thisthis是自身的一个对象&#xff0c;代表对象本身&#xff0c;可以理解为&#xff1a;指向对象本身的一个指针。this的用法在java中大体可以分…

服务器具有挂起的重新启动_ESP8266与网络服务器实时通讯

背景知识视频教程Bootstrap 4布局&#xff1a;响应式单页设计​viadean.comNode.js&#xff0c;Express&#xff0c;MongoDB等&#xff1a;2020年完整的训练营 - 国外课栈​viadean.com高级Express - 国外课栈​viadean.com目前&#xff0c;所有已呈现的通信都是基于请求响应方…

java除号_Java的运算符

1.算数运算符 加(正号)  - 减(符号)  * 乘  / 除% 取模(取余)   自增  -- 自减号的几种作用&#xff1a;加法运算  表示为一个正数  还可以用来作字符串的拼接整数相除只能得到整数。如果想得到小数&#xff0c;必须把参与计算的数据变化为浮点类型的数据。自增和…

strace命令_在软件部署中使用 strace 进行调试

我最喜欢的用来解决“为什么这个软件无法在这台机器上运行&#xff1f;”这类问题的工具就是 strace。-- Simon Arneaud&#xff08;作者&#xff09;我的大部分工作都涉及到部署软件系统&#xff0c;这意味着我需要花费很多时间来解决以下问题&#xff1a;这个软件可以在原开发…

java 写文件filewriter_使用FileWriter写文件

package textMyself;//使用FileWriter写文件import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class text2 {public static void main(String[] args) {// TODO 自动生成的方法存根try {/** 先产…

procreate 笔刷_Procreate新手漫画入门:笔刷,图层,上色

上个月新入手了一个新的ipad&#xff0c;又打开了一种关于漫画的新的可能性~同时验证了那句话&#xff1a;对生活保持好奇&#xff0c;你将收获更多。于是就有一些喜欢画画的小伙伴有私信这样的漫画怎么画的&#xff1f;这个秘密工具就是&#xff1a;ipad ➕ Apple pencil ➕ a…

pycharm中python的默认安装路径_mac PyCharm添加Python解释器及添加package路径的方法...

一、背景PyCharm执行Python时&#xff0c;找不到自己安装的package&#xff0c;例如pandas、numpy、scipy、scikit等&#xff0c;在执行时报如下错误ImportError: No module named pandas&#xff1a;Traceback (most recent call last):File "", line 1, in File &q…

java kettle6_java 调用kettle 6.1 转换

有人用过java 调用kettle6.1 转换脚本吗&#xff1f; 我用同样的代码&#xff0c;可以执行kettle 4.1的脚本&#xff0c;可6.1始终不行&#xff1f; 是6.1 不支持了&#xff1f;还是写法变了&#xff1f;如下这段代码4.1可以&#xff0c;6.1就不行。求解&#xff01;&…

transactional注解的使用_Java:Spring @Transactional工作原理

本文将深入研究Spring的事务管理。主要介绍Transactional在底层是如何工作的。之后的文章将介绍&#xff1a;propagation(事务传播)和isolation(隔离性)等属性的使用事务使用的陷阱有哪些以及如何避免JPA和事务管理很重要的一点是JPA本身并不提供任何类型的声明式事务管理。如果…

java 2d划线 刷子_月光软件站 - 编程文档 - Java - Java图形设计中,利用Bresenham算法实现直线线型,线宽的控制(NO 2D GRAPHICS)...

Java 2D Graphics提供了强大的画线功能&#xff0c;可以控制线型&#xff0c;线宽&#xff0c;刷子的形状等&#xff0c;但在JDK1.2以前&#xff0c;没有提供这样一个功能&#xff0c;为了保持与旧版JDK的相容&#xff0c;实现一个可控制线型&#xff0c;线宽的画直线方法还是…