Dapper批量更新
本次示例项目使用Dappe1.50.5和Dapper.Contrib1.50.5
数据库执行的脚本检测工具是SQL Server Prifiler
1.使用Where In 实现批量更新
1.1代码如下:
/// <summary>
/// 把多个用户的isvalid置为0
/// </summary>
public void UpdateUsersByWhereInTest()
{
var sql = @"UPDATE dbo.[user] SET isvalid=0 WHERE UserId IN @UserId ;";
var userIdArr = new int[] { 3013, 3012, 3011, 3010 };
var res = Repository.Execute(sql, new { UserId = userIdArr });
Assert.True(res > 0);
}
1.2检测到数据库执行的脚本
exec sp_executesql N'UPDATE dbo.[user]
SET isvalid=0
WHERE UserId IN (@UserId1,@UserId2,@UserId3,@UserId4) ;',
N'@UserId1 int,@UserId2 int,
@UserId3 int,@UserId4 int',
@UserId1=3013,@UserId2=3012,
@UserId3=3011,@UserId4=3010
2.更新多条数据,每一条数据更新的内容可不相同
2.1代码如下
/// <summary>
/// 分别把用户Id是3013的用户名称更新为张三,用户Id是3012的用户名称更新为李四
/// </summary>
[Fact]
public void UpdateUsersTest()
{
var sql = @"UPDATE dbo.[user] SET UserName=@UserName WHERE UserId = @UserId ;";
var users = new List<User> {
new User { UserId=3013, UserName = "张三", },
new User { UserId =3012, UserName = "李四", },
};
var res = Repository.Execute(sql,users);
Assert.True(res > 0);
}
2.2检测到数据库执行的脚本
生成两条Update脚本执行
exec sp_executesql N'UPDATE dbo.[user]
SET UserName=@UserName
WHERE UserId = @UserId ;',
N'@UserId int,@UserName nvarchar(4000)',
@UserId=3013,@UserName=N'张三'
exec sp_executesql N'UPDATE dbo.[user]
SET UserName=@UserName
WHERE UserId = @UserId ;',
N'@UserId int,@UserName nvarchar(4000)',
@UserId=3012,@UserName=N'李四'
示例代码下载地址
Dapper批量更新的更多相关文章
- Dapper, 批量插入,批量更新, 以及in, like
1. 批量插入 public async Task CreateBusinessItemAsync(IEnumerable<BusinessItemsEntity> businessIte ...
- c#mysql批量更新的两种方法
总体而言update 更新上传速度还是慢. 1: 简单的insert 速度稍稍比MySqlDataAdapter慢一点 配合dapper 配置文件 <?xml version="1 ...
- SQL批量更新 关系表更新
很多人在做数据的批量更新时..如果更新的内容是从其他表查出来的..很容易这么写.. UPDATE TABLE1 SET COLUMN1=(SELECT SUM(SOMETHING) FROM TABL ...
- SQL 将2张不相关的表拼接成2列,批量更新至另一张表
update SO_Master set LotteryNo=t2.LotteryNo,UpdateTime=GETDATE() --select sm.LotteryNo,sm.SysNo,t2.L ...
- [PDO绑定参数]使用PHP的PDO扩展进行批量更新操作
最近有一个批量更新数据库表中某几个字段的需求,在做这个需求的时候,使用了PDO做参数绑定,其中遇到了一个坑. 方案选择 笔者已知的做批量更新有以下几种方案: 1.逐条更新 这种是最简单的方案,但无疑也 ...
- Ado.net[登录,增删改查,Get传值,全选,不选,批量删除,批量更新]
[虽然说,开发的时候,我们可以使用各种框架,ado.net作为底层的东西,作为一个合格的程序员,在出问题的时候我们还是要知道如何调试] 一.增删改查 cmd.ExecuteReader();执行查询, ...
- MongoDB学习笔记~大叔分享批量添加—批量更新—批量删除
回到目录 说它是批量操作,就是说将集合对象一次提交到服务器,并对数据进行持久化,如果您的代码是一次一次的提交,那不算是批量操作!在之前的mongodb仓储中并没有对批量更新和批量删除进行实现,而今天在 ...
- jdbc-批量插入、批量删除、批量更新
一.JDBC的批量插入 JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等. 我用Mysql5.1.5的JDBC driver 分别对三种比较常用的方法做了测试 方法 ...
- MYSQL 处理批量更新数据的一些经验。
首先,我们需要了解下MYSQL CASE EXPRESSION 语法. 手册传送门:http://dev.mysql.com/doc/refman/5.7/en/control-flow-functi ...
随机推荐
- [转] Java 的泛型擦除和运行时泛型信息获取
原文链接 https://my.oschina.net/lifany/blog/875769 前言 现在很多程序员都会在简历中写上精通 Java.但究竟怎样才算是精通 Java 呢?我觉得不仅要熟练掌 ...
- Linux基础操作命令
一.系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 – (SMBIO ...
- Asp.Net WebApi核心对象解析(二)
在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...
- Java安全编码:糟糕的在线建议和令人困惑的APIs
对于程序员和软件开发人员来说,网络论坛提供了一个交流知识和寻找具体编码难题答案的好地方.遗憾的是,他们并不总是准确信息的来源. 弗吉尼亚理工大学的一组研究人员分析了数百篇关于Stack Overflo ...
- Jenkins获取运行job的用户名
1. Jenkins获取运行job的用户名 需要安装user build vars plugin 插件,然后就可以取到$BUILD_USER_ID变量. user build vars plugin下 ...
- Android NDK学习(七):NDK 编译支持 C++特有的库
如果你的C++代码中出现了很多C++特有的库,例如<iostream>,<list>等,那么你还需要在jni的文件夹下添加一个Application.mk文件,文件内容为: A ...
- Vue过渡mode属性踩坑
近期学习Vue的过渡效果的时候,mode属性的"in-out"."out-in"设置了不起作用,官网上的例子让我看了有点迷,问题解决后以此文记录之. 首先我们看 ...
- 使用CSS样式的三种方式
外部样式表 当样式需要被应用到很多页面的时候,外部样式表将是理想的选择.使用外部样式表,你就可以通过更改一个文件来改变整个站点的外观. 内部样式表 当单个文件需要特别样式时,就可以使用内部样式表.你可 ...
- 排序函数 sort() 和 高阶函数sorted()
· sorted():该函数第一个参数iterable为任意可以迭代的对象,key是用于比较的关键字,reverse表示排序结果是否反转. · L.sort():该函数的三个参数和 sorted() ...
- Java回调机制总结
调用和回调机制 在一个应用系统中, 无论使用何种语言开发, 必然存在模块之间的调用, 调用的方式分为几种: 1.同步调用 同步调用是最基本并且最简单的一种调用方式, 类A的方法a()调用类B的方法b( ...