C# 使用EF-Core和C使用PgSql进行Sql参数化#
我正在尝试使用C#和EF Core执行一个SQL查询,它接受一个参数。我相信这个参数被忽略了 我使用的代码是C# 使用EF-Core和C使用PgSql进行Sql参数化#,c#,.net,entity-framework-core,npgsql,C#,.net,Entity Framework Core,Npgsql,我正在尝试使用C#和EF Core执行一个SQL查询,它接受一个参数。我相信这个参数被忽略了 我使用的代码是 string sqlQuery = @"SELECT ""Studies"".* FROM ""Studies"" INNER JOIN ""Searches"" on &qu
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');
SELECT "Studies"."StudyId",
"Studies"."Title",
"Studies"."Author"
FROM "Studies"
INNER JOIN "Searches" on "Searches"."StudyId" ="Studies"."StudyId"
WHERE "Searches"."Document" @@ to_tsquery('@text');
我相信在我的查询中,@text
不会被fire
替换
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')
我觉得我遗漏了一些显而易见的东西?我认为@text周围的单引号是问题所在,请尝试在没有它们的情况下删除单引号:
以查询(@text)
。