首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用EF Core和C#使用PgSql实现Sql参数化

使用EF Core和C#使用PgSql实现Sql参数化
EN

Stack Overflow用户
提问于 2020-11-21 19:20:53
回答 1查看 56关注 0票数 0

我正在尝试使用C#和EF Core执行一个带有参数的SQL查询。我认为这个参数被忽略了

我使用的代码是

代码语言:javascript
复制
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控制台中运行以下命令一样:

代码语言:javascript
复制
SELECT "Studies"."StudyId", 
        "Studies"."Title",
        "Studies"."Author"
FROM "Studies"
INNER JOIN "Searches" on "Searches"."StudyId" ="Studies"."StudyId" 
WHERE "Searches"."Document" @@ to_tsquery('fire');

但我不知道。相反,我得到的结果与我在Postgres控制台中键入以下内容的结果相同:

代码语言:javascript
复制
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核心日志显示:

代码语言:javascript
复制
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')

我觉得我错过了一些应该很明显的东西?

EN

回答 1

Stack Overflow用户

发布于 2020-11-21 22:02:45

我认为@text周围的单引号才是问题所在,试着去掉它们

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64942487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档