首先看改进前的版本以批量更新为例:

[Obsolete]public void DeleteRoleUser2(string roleId){IRepository<UserEntity> userRepo = RepositoryFactory<UserEntity>.Create();IEnumerable<UserEntity> users = userRepo.FindList(x => x.F_RoleId.Equals(roleId));foreach (var u in users){u.F_RoleId = null;}userRepo.Update(users, x => x.F_RoleId);}

通过miniprofiler检测可以看到:

数据库执行先查询,后多次update 的SQL 操作,耗时84.9ms, 本可以一行update sql 执行的功能却分开成了多次sql执行,效率受到影响。

下面看使用EF-plus的做法,不要用EntityFramework.Extended,会报异常:未能从程序集“EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.Data.Entity.Core.Mapping.EntityContainerMapping”。且这个Extneded GitHub上明确提示2015年后就不再维护了。

推荐使用 https://entityframework-plus.net/:

改进后的批量更新代码如下:

 IRepository<UserEntity> userRepo = RepositoryFactory<UserEntity>.Create();Expression<Func<UserEntity, bool>> express = x => x.F_RoleId.Equals(roleId);userRepo.Update(express, u => new UserEntity() { F_RoleId= null });public int Update<T>(Expression<Func<T, bool>> condition, Expression<Func<T, T>> updateExpression) where T : class, new(){IQueryable<T> query = dbcontext.Set<T>().Where(condition);return  query.Update<T>(updateExpression);            }

执行同样的操作,且都是运行后非首次执行比较测试,发现EF plus 效率上要快2~3倍的样子,值得推荐使用。<完>

EF6 批量更新删除数据相关推荐

  1. 用python批量更新es数据根据id_Python Elasticsearch批量操作客户端

    基于Python实现的Elasticsearch批量操作客户端 by:授客 QQ:1033553122 1.代码用途 Elasticsearch客户端,目的在于实现批量操作,如下: <1> ...

  2. DML风格的批量更新/删除

    Hibernate提供的HQL语句也支持批量的UPDATE和DELETE语法. 批量UPDATE 和 DELETE语句的语法格式如下: UPDATE | DELETE FROM? <ClassN ...

  3. c 更新mysql数据_MySQL插入更新删除数据

    数据插入 插入完整的行 INSERT INTO customers VALUES(NULL, 'Pep E. LaPew', '100 Main Street', 'Los Angeles', 'CA ...

  4. 批量更新mysql数据(万条数据秒完成)

    1.常规方法,利用executemany批量更新数据(数据量小用这个就够了) import pymysql import pandas as pd conn = pymysql.connect(hos ...

  5. oracle条件批量更新表数据

    更新表数据,当t2.t3的条件符合时更新t1为null update table_name t set t.t1 = null where t.t2 = '是' or t.t3='否' 在plsql工 ...

  6. pymysql(part1)--pymysql初识之检索/增加/更新/删除数据

    利用python调用pymysql来对数据库进行操作. 首先在cmd中查看我们将要操作的数据表infor: 查看infor表列的定义: 现在使用pymysql对mysql进行操作. (一)  SELE ...

  7. php+mysqli实现批量执行插入、更新及删除数据的方法

    本文实例讲述了php+mysqli实现批量执行插入.更新及删除数据的方法.分享给大家供大家参考.具体如下: mysqli批量执行插入/更新/删除数据,函数为 multi_query(). 下面的代码只 ...

  8. mysql删除新添加数据,MySQL添加、更新与删除数据

    添加.更新与删除数据 添加数据 为表中所有字段添加数据 INSERT INTO 表名(字段名1,字段名2,--) VALUES(值1,值2,--); insert into 表名 values(值1, ...

  9. eclipse给mysql修改表数据_Eclipse中java向数据库中添加数据,更新数据,删除数据...

    ASP.NET网页动态添加.更新或删除数据行 看过此篇 http://www.cnblogs.com/insus/p/3247935.html的网友,也许明白Insus.NET是怎样实现动态添加数据行 ...

最新文章

  1. HTML中checked1001无标题,是否可以一键切换两个CSS`:checked`伪类?
  2. Linux IO多路复用之epoll网络编程(含源码)
  3. tensorflow model save and restore
  4. Android内存分析工具:Memory Profiler
  5. 天池四月读书会|数据分析金融量化,6场直播,6位大咖,6个项目实战
  6. 【Hibernate】getHibernateTemplate.find()和session.createQuery()方法总结
  7. 【学习笔记】Docker - 01. Docker是啥
  8. arm9重启ssh服务_部署ssh使用rsa登录配置
  9. 关于“xxx”object is not callable的异常
  10. Top命令找出CPU占用较高的Java线程信息
  11. Java:应用Observer接口实现Observer模式
  12. dos怎么退出debug_电脑主板坏了怎么办?浅谈主板常见的故障以及应对办法
  13. 要是有力气的话可以做装卸工,月入过万不是梦
  14. PyTorch——Ubuntu上Pytorch的安装教程
  15. MacBook pro HTML 编写,老司机血泪劝告:买MacBook Pro一定不要买顶配!
  16. eova1.4版本下拉框没有滚动条
  17. Stata统计学软件
  18. K650C I7 D4 黑苹果折腾记录
  19. Python 计算 AMR 文件的时长
  20. 变分法 (Calculus of Variations)

热门文章

  1. vmware模板机创建及标题快照克隆(非常详细)
  2. Making Youden Plots in R
  3. 管理者的角色修炼-第一课总结
  4. R语言使用epiDisplay包的kap函数(kap.2.raters函数)计算Kappa统计量的值(总一致性、期望一致性)、对两个评分对象的结果进行一致性分析、评分的类别为多个类别
  5. Python读取Excel日期列读出来是数字的处理
  6. 怎么远程计算机控制系统,电脑远程控制怎么弄 电脑进行远程控制详细教程
  7. Windows 纤程详解
  8. JVM 垃圾回收详解
  9. Spring基础篇:高级注解编程
  10. ROS-introduction