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 });

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

  1. efcore 批量_EFcore使用EFCore.BulkExtensions 批量增加、删除、修改

    EFCore.BulkExtensions 简介 EntityFrameworkCore扩展:批量操作(插入,更新,删除,读取,更新,同步)和批处理(删除,更新). 库是轻量级的,并且非常高效,具有所 ...

  2. 使用EntityFrameworkCore实现Repository, UnitOfWork,支持MySQL分库分表

    昨天(星期五)下班,19:00左右回到家,洗个澡,然后20:30左右开始写代码,写完代码之后,上床看了<生活大爆炸10季>17.18两集,发现没有更新到19集,瞄了一眼手机,竟然已经是凌晨 ...

  3. MySQL兼容服务器_服务器不支持 MySql 数据库的解决方法

    php.ini文件没有参数没有配置正确 解决方法: (1) 打开php.ini文件,找到: extension_dir = "./" 将其改为: extension_dir = & ...

  4. linux系统不支持mysql,提示不支持mysql的解决方法

    提示不支持mysql的解决方法 发布时间:2007-11-14 00:01:33来源:红联作者:vdnuiv 照我这里做了 (X:\Server_Core) 这里是你安装的目录 第一步: (1) 测试 ...

  5. php联系mysql配置_php支持mysql配置

    想在Centos5.2上装一个discuz论坛,在突破了apache权限问题后,发现discuz的提示信息里显示不支持mysql: mysql_connect() 不支持 请检查mysql 模块是否正 ...

  6. gitlab mysql启动不了_gitlab不支持mysql,这就是我学习PostgreSQL的原因

    Gitlab 官方宣布,将从 12.1 版本开始不再支持 MySQL 数据库.早在 2017年7月,Gitlab 就计划将弃用对 MySQL 的支持.而目前这个决定将从 12.1 版本开始. 编辑注: ...

  7. php7不支持mysql扩展了么_php7不支持mysql扩展需要改成mysqli扩展

    最近升级php7发现不支持mysql扩展,需要改成用mysqli扩展 看代码class Db{ private $username = ''; private $password = ''; priv ...

  8. oracle在线sql数据库设计,一款在线ER模型设计工具,支持MySQL、SQLServer、Oracle、Postgresql...

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 介绍一个在线ER模型生成工具,该工具可以在线为多个数据库的DDL文件生成ER模型图,并支持MySQL,SQLServ ...

  9. 支持mysql的报表开发工具_你不知道的mysql的3W法,内附超好用的报表工具

    WHAT? 什么是MySQL? MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性. WHY?为什么需要MySQL ...

最新文章

  1. hadoop2.8 ha 集群搭建
  2. C语言函数——常用数学函数
  3. Linux的chmod与chgrp
  4. IOS之AFNetworking,SDWebImage,Kingfisher,Alamofire,FMDB框架的使用
  5. python面向对象程序设计实训学生自我总结_Python面向对象程序设计示例小结
  6. PHP memcached memcache 扩展安装
  7. Win11如何开启聚焦功能?Win11开启聚焦功能的方法
  8. 【JavsScript】webapp的优化整理
  9. 不高兴INTEL挤牙膏,技术天才Jim Keller愤而辞职
  10. vue项目在浏览器地址栏设置图标
  11. linux内核无法识别声卡,伪输出,检测不到集成声卡
  12. Excel单元格区域快速导出为PDF
  13. 深入 CoreML 模型定义
  14. Sqlite字段长度填坑
  15. 深度学习—神经网络和卷积神经网络简单介绍
  16. powerBI使用概览
  17. 使用XMind打开.mmap文件不显示问题
  18. 期权常见的六大交易误区
  19. 木兰在线英语词典 -- 溯源拆分记单词
  20. 论文笔记:MPRNet: Multi-Stage Progressive Image Restoration

热门文章

  1. C 和 C++ 宏 详解
  2. Linux安装配置类似mac下的docky
  3. Arthas-MathGame
  4. Java中的mapreduce没了_MapReduce的过程总结
  5. C++学习之路 | PTA乙级—— 1025 反转链表 (20分)(精简)
  6. python算24点穷举法_关于24点去重的算法?
  7. rserve php,使用Rserve远程执行R脚本
  8. mybatis调用oracle过程,使用MyBatis调用Oracle存储过程
  9. [前台]---js+jquery校验姓名,手机号,身份证号
  10. nginx 判断手机端跳转_nginx基本功能和工作原理