【问题标题】:Cannot get data from stored procedure with SqlQuery无法使用 SqlQuery 从存储过程中获取数据
【发布时间】:2021-06-20 14:39:15
【问题描述】:

这是存储过程:

public partial class AddedSP: DbMigration
{
    public override void Up()
    {
        CreateStoredProcedure("dbo.GetTopRecommendingUsers"
          // These are stored procedure parameters
          ,null,
          // Here is the stored procedure body
          @" SET NOCOUNT ON;
             BEGIN
             SELECT promoter.Id, promoter.Email, promoter.PhoneNumber, promoter.UserName, promoter.FirstName, promoter.LocationId, promoter.RegionId, promoter.ProfilePhotoId, promoter.LastName, COUNT(u.RecommendedById) AS Recommendations
             FROM AspNetUsers AS promoter 
             INNER JOIN AspNetUsers AS u ON u.RecommendedById = promoter.Id
             GROUP BY promoter.Id, promoter.Email, promoter.PhoneNumber,promoter.RegionId, promoter.UserName, promoter.LocationId, promoter.ProfilePhotoId, promoter.FirstName, promoter.LastName
             ORDER BY COUNT(u.RecommendedById) DESC
             END");
    }
    public override void Down()
    {
        DropStoredProcedure("dbo.GetTopRecommendingUsers");
    }
} 

这是我的课:

public class RecommenderViewModel
{
    public string Id { get; set; }
    public string Email { get; set; }
    public string PhoneNumber { get; set; }
    public string UserName { get; set; }
    public string FirstName { get; set; }
    public string LocationId { get; set; }
    public string RegionId { get; set; }
    public string ProfilePhotoId { get; set; }
    public string LastName { get; set; }
    public int Recommendations { get; set; }
}

这是进行调用的方法:

    public List<RecommenderViewModel> GetTopRecommendingUsers()
    {
        List<RecommenderViewModel> model = new List<RecommenderViewModel>();
        using (var context = new ApplicationDbContext())
        {
            model = context.Database.SqlQuery<RecommenderViewModel>("GetTopRecommendingUsers").ToList();
        }
        return model;
    }

但我在 GetTopRecommendingUsers() 方法的模型变量中得到一个空列表 (Count=0)。

我做错了什么?

【问题讨论】:

  • 也许你没有数据?您是否在 SSMS 中运行过该过程并验证了正确的结果?
  • 我已经在 SSMS 中执行了查询,它返回了大约三行数据
  • 您真的需要对所有这些字段进行分组吗?看来id就够了。
  • 我不知道为什么,但是当我尝试在 SSMS 中执行查询时,它会给我一个错误,添加分组字段可以解决这个问题。
  • @Steve GROUP BY 是正确的。 SQL 将期望分组查询中的每个输出字段都是聚合的一部分或包含在 GROUP BY 子句中

标签: c# sql asp.net .net asp.net-mvc


【解决方案1】:

你能显示 ConnectString 吗?可能是我认为您在本地访问另一个与您的数据库名称相同的数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    相关资源
    最近更新 更多