首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >EF核心2.2,将字符串参数传递给FromSql语句

EF核心2.2,将字符串参数传递给FromSql语句
EN

Stack Overflow用户
提问于 2019-03-15 04:40:02
回答 1查看 592关注 0票数 1
代码语言:javascript
复制
public List<JC_PHASE_MASTER_TOTAL1_MC> GetAllByCompanyCodeJobNumber()
{
    return _context.JC_PHASE_MASTER_TOTAL1_MC.FromSql(
        $"SELECT * FROM JC_PHASE_MASTER_TOTAL1_MC WHERE (Job_Number = '  123')"
    ).ToList();
}

Corresponding SQL:

SELECT *
FROM JC_PHASE_MASTER_TOTAL1_MC
WHERE
    (Job_Number = '  123')

表中的Job_Number字段是一个可变字符,并与任何未使用的数字的前导空格一起存储。当我使用Job_Number硬编码运行上面的函数时,查询会按预期运行。但是,通过将相同的值作为参数传递而生成的SQL如下所示,并且SQL运行似乎传递的是数字而不是字符串:

代码语言:javascript
复制
public List<JC_PHASE_MASTER_TOTAL1_MC> GetAllByCompanyCodeJobNumber(string jobNumber)
{
    return _context.JC_PHASE_MASTER_TOTAL1_MC.FromSql(
        $"SELECT * FROM JC_PHASE_MASTER_TOTAL1_MC WHERE (Job_Number = {jobNumber})"
    ).ToList();
}

Corresponding SQL with '   123' passed to the jobNumber string parameter:

SELECT *
FROM JC_PHASE_MASTER_TOTAL1_MC
WHERE
    (Job_Number = 123)

为什么字符串参数作为123而不是‘123’传递给SQL语句?我不确定如何调整我的函数,使参数不会作为数字传递。

根据已接受的解决方案修订代码:

代码语言:javascript
复制
public List<JC_PHASE_MASTER_TOTAL1_MC>GetAllByCompanyCodeJobNumber(string jobNumber)
{
    var jobNumberParameter = new SqlParameter("@jobNumber", SqlDbType.VarChar);
    jobNumberParameter.Value = jobNumber;

    return _context.JC_PHASE_MASTER_TOTAL1_MC.FromSql(
        $"SELECT * FROM JC_PHASE_MASTER_TOTAL1_MC WHERE (Job_Number = {jobNumberParameter})"
    ).ToList();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-15 07:55:22

您是否尝试过显式设置SQL数据类型,如下所示:

代码语言:javascript
复制
public List<JC_PHASE_MASTER_TOTAL1_MC>GetAllByCompanyCodeJobNumber(string jobNumber)
{
    var jobNumberParameter = new SqlParameter("@jobNumber", SqlDbType.VarChar);
    jobNumberParameter.Value = jobNumber;

    return _context.JC_PHASE_MASTER_TOTAL1_MC.FromSql(
        $"SELECT * FROM JC_PHASE_MASTER_TOTAL1_MC WHERE (Job_Number = {jobNumberParameter})"
    ).ToList();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55171592

复制
相关文章

相似问题

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