EntityFramework中使用ExecuteSqlCommand执行语句条件带IN的处理

本文介绍了一种在Entity Framework中使用SQL IN条件进行数据更新的方法。通过构造动态SQL语句并结合SqlParameter参数,有效地避免了SQL注入风险。

数据库项目开发时避免不了使用sql语句,为了避免SQL注入,通常采用SqlParameter参数。EntityFramework同样可以通过ExecuteSqlCommand执行sql语句。

最近在纠结存在IN的时候这个参数的处理方式,网上找个多钟解决方案未果,无奈用一下方法解决

var _param = new List<object>();                                    //定义ExecuteSqlCommand参数
_param.Add(1);                                                      //给in条件前面的参数赋值,根据实际情况
var _in = new object[] { "test@qq.com", "a@gmail.com","b@163.com" };//in条件
_param.AddRange(_in);                                               //给in参数赋值
var sql = "UPDATE users SET islocked={0} WHERE email IN ({1})"
          .Replace("{1}",_in.Select((v,i)=>"{"+(i+1)+"}").Join(","));//给in条件的增加占位符,{"+(i+1)+"}中的1根据in条件前面有几个占位符而定
this.db.ExecuteSqlCommand(sql, _param.ToArray());                    //执行


转载于:https://my.oschina.net/lianggengbin/blog/648651

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值