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 ...
随机推荐
- 前端 javascript
---恢复内容开始--- JavaScript JavaScript:是一门编译型的语言,比python语言还要弱类型的语言 JavaScript 分为三个部分:Ecmascript.dom.bom ...
- C++代码审查---审查孙晓宁马踏棋盘谜题程序
与孙晓宁同学结对审查,其代码地址如下:https://github.com/brunnhilder/-1/blob/master/%E9%A9%AC%E8%B8%8F%E6%A3%8B%E7%9B%9 ...
- java(一) 基础部分
1.11.简单讲一下java的跨平台原理 Java通过不同的系统.不同版本.不同位数的java虚拟机(jvm),来屏蔽不同的系统指令集差异而对外体统统一的接口(java API),对于我们普通的jav ...
- noip第29课资料
- OC数组的简单使用、NSArray
和上一篇文章一样,数组的重要性不言而喻,在OC编程的过程中我们会不断的使用到NSArray,和C语言不同的是,我们这里的数组只能存OC对象类型,不能存C语言基本数据类型,也不能存NSNull类型,但是 ...
- WordPress自动裁剪768w像素缩略图的解决办法
最新观赏鱼在折腾一个新的WordPress站点,即使通过后台把多媒体裁剪的宽高都设置为0时,移除主题可能存在的自动裁剪大小,WordPress依然会在上传图片的时候自动裁剪一个宽为768像素的图片.并 ...
- 1.Float精度在JS的解决方法
最近做了一个有关折扣价的计算的功能,所有的运算都是在前台通过js来做,做完之后经过手工核算发现了一个问题,当时做的一个例子是10*0.94,按照我们正常的思维,这个结果应该是9.4,但是在js中的计算 ...
- 大数据解实例决topn问题
做大数据开发经常遇上在众多数据中统计前几的问题,比如王者荣耀每个区的富豪排行榜(腾讯可以做个刺激消费,
- win32控制台程序 宽字符与短字符转化
由于vs各版本之间存在字符设置不兼容问题,特总结char与tchar的互相转换函数,如下,在之后的工程中可以使用. void TcharToChar(const TCHAR * tchar, char ...
- DevOps最佳工具集实践
在列出DevOps 工具链之前,介绍一下什么是DevOps,虽然DevOps这个概念现在还没有标准的定义,但我们可以追溯一下其过去九年的历史发展过程(从2009年-2017年),列出几个相对明确又有所 ...