首页 > 解决方案 > EF Core 2.2调用存储过程返回0个结果

问题描述

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

这是代码:

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);
}

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

在此处输入图像描述

语境:

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

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

解决方案


您在这里错误地使用了字符串插值

_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}")

推荐阅读