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运行似乎传递的是数字而不是字符串:
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语句?我不确定如何调整我的函数,使参数不会作为数字传递。
根据已接受的解决方案修订代码:
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();
}
发布于 2019-03-15 07:55:22
您是否尝试过显式设置SQL数据类型,如下所示:
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();
}
https://stackoverflow.com/questions/55171592
复制相似问题