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

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

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

var _param = new List<object>();                                    //定义ExecuteSqlCommand参数
_param.Add(1);                                                      //给in条件前面的参数赋值,根据实际情况
var _in = new object[] { "[email protected]", "[email protected]","[email protected]" };//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());                    //执行


你可能感兴趣的:(in,entityframework)