Dapper批量更新
2024-08-26 11:59:36
本次示例项目使用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'李四'
示例代码下载地址
最新文章
- jq size()与length的区别
- HMAC加密的消息摘要码
- PHP5.6启动失败
- linux echo命令的-n、-e两个参数
- python报错ordinal not in range(128)
- 支持IE,FireFox,Chrome三大主流浏览器,通过js+Flash方式将table导出Excel文件
- virtualBox ubuntu 文件共享
- java记事本1.2版
- Centos7 利用crontab定时执行任务及配置方法
- PHP生成HTML文件, SummerHtml
- linux ——shell 脚本
- Mysql 数据库复制
- numpy总结
- [OpenCV-Python] OpenCV 中的图像处理 部分 IV (六)
- python day02作业
- Python入门-模块2(sys模块、shutil 模块)
- springboot maven
- 第219天:Angular---过滤器
- 用http.get()简单实现网络验证防止客户不给尾款_电脑计算机编程入门教程自学
- 【MySQL笔记】用户管理