EF6 批量更新删除数据
首先看改进前的版本以批量更新为例:
[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 批量更新删除数据相关推荐
- 用python批量更新es数据根据id_Python Elasticsearch批量操作客户端
基于Python实现的Elasticsearch批量操作客户端 by:授客 QQ:1033553122 1.代码用途 Elasticsearch客户端,目的在于实现批量操作,如下: <1> ...
- DML风格的批量更新/删除
Hibernate提供的HQL语句也支持批量的UPDATE和DELETE语法. 批量UPDATE 和 DELETE语句的语法格式如下: UPDATE | DELETE FROM? <ClassN ...
- c 更新mysql数据_MySQL插入更新删除数据
数据插入 插入完整的行 INSERT INTO customers VALUES(NULL, 'Pep E. LaPew', '100 Main Street', 'Los Angeles', 'CA ...
- 批量更新mysql数据(万条数据秒完成)
1.常规方法,利用executemany批量更新数据(数据量小用这个就够了) import pymysql import pandas as pd conn = pymysql.connect(hos ...
- oracle条件批量更新表数据
更新表数据,当t2.t3的条件符合时更新t1为null update table_name t set t.t1 = null where t.t2 = '是' or t.t3='否' 在plsql工 ...
- pymysql(part1)--pymysql初识之检索/增加/更新/删除数据
利用python调用pymysql来对数据库进行操作. 首先在cmd中查看我们将要操作的数据表infor: 查看infor表列的定义: 现在使用pymysql对mysql进行操作. (一) SELE ...
- php+mysqli实现批量执行插入、更新及删除数据的方法
本文实例讲述了php+mysqli实现批量执行插入.更新及删除数据的方法.分享给大家供大家参考.具体如下: mysqli批量执行插入/更新/删除数据,函数为 multi_query(). 下面的代码只 ...
- mysql删除新添加数据,MySQL添加、更新与删除数据
添加.更新与删除数据 添加数据 为表中所有字段添加数据 INSERT INTO 表名(字段名1,字段名2,--) VALUES(值1,值2,--); insert into 表名 values(值1, ...
- eclipse给mysql修改表数据_Eclipse中java向数据库中添加数据,更新数据,删除数据...
ASP.NET网页动态添加.更新或删除数据行 看过此篇 http://www.cnblogs.com/insus/p/3247935.html的网友,也许明白Insus.NET是怎样实现动态添加数据行 ...
最新文章
- HTML中checked1001无标题,是否可以一键切换两个CSS`:checked`伪类?
- Linux IO多路复用之epoll网络编程(含源码)
- tensorflow model save and restore
- Android内存分析工具:Memory Profiler
- 天池四月读书会|数据分析金融量化,6场直播,6位大咖,6个项目实战
- 【Hibernate】getHibernateTemplate.find()和session.createQuery()方法总结
- 【学习笔记】Docker - 01. Docker是啥
- arm9重启ssh服务_部署ssh使用rsa登录配置
- 关于“xxx”object is not callable的异常
- Top命令找出CPU占用较高的Java线程信息
- Java:应用Observer接口实现Observer模式
- dos怎么退出debug_电脑主板坏了怎么办?浅谈主板常见的故障以及应对办法
- 要是有力气的话可以做装卸工,月入过万不是梦
- PyTorch——Ubuntu上Pytorch的安装教程
- MacBook pro HTML 编写,老司机血泪劝告:买MacBook Pro一定不要买顶配!
- eova1.4版本下拉框没有滚动条
- Stata统计学软件
- K650C I7 D4 黑苹果折腾记录
- Python 计算 AMR 文件的时长
- 变分法 (Calculus of Variations)