dapper mysql 批量_Dapper批量更新

本文介绍了如何使用Dapper进行批量更新操作。示例中包括使用`WHERE IN`子句更新多个用户的状态,并展示了更新不同内容时如何处理多个条件。通过Dapper执行的SQL脚本在数据库中被拆分为单独的更新语句,确保了每条记录的更新内容可定制。此外,还提及了批量删除和查询的方法。
摘要由CSDN通过智能技术生成

本次示例项目使用Dappe1.50.5和Dapper.Contrib1.50.5

数据库执行的脚本检测工具是SQL Server Prifiler

1.使用Where In 实现批量更新

1.1代码如下:

///

/// 把多个用户的isvalid置为0

///

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);

}

///查询多条记录

List vs = new List();

string sql = " select * from Special_attributes where SattrId in @vs";

arrtModels = SqlConnectionFactory.Connection.Query(sql, new { vs } ).ToList();

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代码如下

///

/// 分别把用户Id是3013的用户名称更新为张三,用户Id是3012的用户名称更新为李四

///

[Fact]

public void UpdateUsersTest()

{

var sql = @"UPDATE dbo.[user] SET UserName=@UserName WHERE UserId = @UserId ;";

var users = new List {

new User { UserId=3013, UserName = "张三", },

new User { UserId =3012, UserName = "李四", },

};

var res = Repository.Execute(sql,users);

Assert.True(res > 0);

}

// 6、批量删除

public int Delete_Shopping(List CommodityID)

{

string sql = string.Empty;

sql += " delete ShoppingCommodity where CommodityID in @CommodityIDs";

int j = SqlConnectionFactory.Connection.Execute(sql,new { CommodityIDs = CommodityID.ToArray() });

return j;

}

// 7、 用where 的in 查询    参数得是数组类型  并且参数不加括号

// 8 、批量添加  List 当作参数  list里某个属性的值只能有一个

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'李四'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值