我正在使用entity framework。有人告诉我,执行直接sql的建议方法是使用参数而不是直接将值插入到查询字符串中。我尝试制作单独的sql参数并了解到存在2100个参数限制(我的列表中有8000个字符串参数)...我可以通过将值直接传递给mySQLQuery字符串来使其工作,但我想知道如何将其作为参数传递以避免sql注入攻击?我尝试了下面的代码
var mySQLQueryString = "...WHERE DataID IN (@mySQLVariable)";
List<string> dataList = new List<string>();
SqlParameter param = new SqlParameter("@mySQLVariable", string.Join(",", dataList.ToArray()));
return context.Database.SqlQuery<ConcretePOCO>(mySQLQueryString, param).ToList();
在使用分析器查看时,发送到 SQL 的数据是'1,2,3,4'...我需要它变成'1','2','3','4'...
当作为参数发送时,我该怎样实现这一点呢?
'1', '2', '3', '4'
可能无法解决您的问题。您是否尝试过在SSMS中硬编码该值并运行查询?如果是这样,它是否有效?如果没有真正掌握您要做什么的整个想法,很难建议解决方案。但我有一个问题:dataList
中将有多少项的上限范围是多少?它会超过2100吗? - Casey Crookston