EF Core 2.2调用存储过程返回0个结果

时间:2019-06-18 22:20:31

标签: c# asp.net-core entity-framework-core

我似乎无法从存储过程中得到任何结果。

代码如下:

public JsonResult SearchBudgetRequests(int BudgetRequestNumber, int FiscalYearId)
{
    var result = _db.Search.FromSql($"EXECUTE spSearchGeneral {0}, {1}, {2}", BudgetRequestNumber, _sessionUser.DepartmentId, FiscalYearId)
                .ToList();

    return Json(result);
}

我可以验证存储过程是否返回数据:

enter image description here

上下文:

public DbQuery<Search> Search { get; set; }

模型类:

 public partial class Search
 {
        public int BudgetRequestId { get; set; }
        public string BudgetRequestNumber { get; set; }
        public string RequestStatus { get; set; }
        public string CurrentOwner { get; set; }
        public string ContactUser { get; set; }
        public string BudgetDescription { get; set; }
        public string RequestType { get; set; }
        public string CapsUnits { get; set; }
        public string ObjectCategory { get; set; }
        public string RecurringType { get; set; }
        public string CoreType { get; set; }
        public decimal Expenditure { get; set; }
}

我在做什么错?预先感谢!

更新:

认为我的存储过程格式有问题,当我跟踪调用时,查询还显示0个结果,这就是生成的查询的样子:

exec sp_executesql N'EXECUTE spSearchGeneral 0, 1, 2',N'@p0 int,@p1 int,@p2 int',@p0=37124,@p1=1,@p2=2015

1 个答案:

答案 0 :(得分:2)

您在此错误地使用了string interpolation

_db.Search.FromSql($"EXECUTE spSearchGeneral {0}, {1}, {2}", BudgetRequestNumber, _sessionUser.DepartmentId, FiscalYearId)

只需删除$

_db.Search.FromSql("EXECUTE spSearchGeneral {0}, {1}, {2}", BudgetRequestNumber, _sessionUser.DepartmentId, FiscalYearId)

要正确使用字符串插值:

_db.Search.FromSql($"EXECUTE spSearchGeneral {BudgetRequestNumber}, {_sessionUser.DepartmentId}, {FiscalYearId}")