我正在尝试使用C#和EF Core执行一个带有参数的SQL查询。我认为这个参数被忽略了
我使用的代码是
string sqlQuery = @"SELECT ""Studies"".*
FROM ""Studies""
INNER JOIN ""Searches"" on ""Searches"".""StudyId"" =""Studies"".""StudyId""
WHERE ""Searches"".""Document"" @@ to_tsquery('@text')";
IQueryable<Study> studies = _studiesContext.Studies.FromSqlRaw(sqlQuery, new NpgsqlParameter("@text", "fire"));我期望发生的情况是,我从数据库中得到相同的行,就像我在Postgres控制台中运行以下命令一样:
SELECT "Studies"."StudyId",
"Studies"."Title",
"Studies"."Author"
FROM "Studies"
INNER JOIN "Searches" on "Searches"."StudyId" ="Studies"."StudyId"
WHERE "Searches"."Document" @@ to_tsquery('fire');但我不知道。相反,我得到的结果与我在Postgres控制台中键入以下内容的结果相同:
SELECT "Studies"."StudyId",
"Studies"."Title",
"Studies"."Author"
FROM "Studies"
INNER JOIN "Searches" on "Searches"."StudyId" ="Studies"."StudyId"
WHERE "Searches"."Document" @@ to_tsquery('@text');我相信在我的查询中没有用fire替换@text
EF核心日志显示:
Executed DbCommand (10ms) [Parameters=[@text='?'], CommandType='Text', CommandTimeout='30']
SELECT "Studies".*
FROM "Studies"
INNER JOIN "Searches" on "Searches"."StudyId" ="Studies"."StudyId"
WHERE "Searches"."Document" @@ to_tsquery('@text')我觉得我错过了一些应该很明显的东西?
发布于 2020-11-21 22:02:45
我认为@text周围的单引号才是问题所在,试着去掉它们
https://stackoverflow.com/questions/64942487
复制相似问题