【发布时间】:2020-09-15 14:23:44
【问题描述】:
varname 的正确语法是什么才能使这个查询工作? 我可以让它与单个变量一起工作,例如
string varname = "TOTAL_NORWAY"
但是,如果我想在其中包含一些变量,我会返回一个空数组:
string varname = "'TOTAL_NORWAY', 'TOTAL_SWEDEN'";
return await _Context.theDataModel.FromSqlRaw(@"
select data
from data_table
where Variable in ({0})
", varname).ToListAsync();
【问题讨论】:
-
因为它被翻译成
select data from data_table where Variable in ('''TOTAL_NORWAY'', ''TOTAL_SWEDEN''')... google for"ef core" where in array -
string varname = "'TOTAL_NORWAY', 'TOTAL_SWEDEN'";是一个字符串,而不是两个值。参数是 - 函数的参数,而不是字符串替换占位符。这就是他们保护免受 SQL 注入攻击的原因。这些参数中的任何内容都不会包含在查询本身中,它作为单独的参数发送到对服务器的 RPC 调用 -
这对 ErikEJ 很有帮助,谢谢。我现在的问题是我需要包含额外的 where 子句。
标签: c# sql entity-framework