数据库项目开发时避免不了使用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()); //执行