无法使用 SqlQuery 从存储过程获取数据

Cannot get data from stored procedure with SqlQuery

提问人:melmelissa242 提问时间:3/24/2021 最后编辑:John Saundersmelmelissa242 更新时间:3/24/2021 访问量:89

问:

这是存储过程:

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

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

我做错了什么?

C# SQL asp.net ASP.NET-MVC

评论

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

答:

0赞 Tùng Phạm Thanh 3/24/2021 #1

你能显示ConnectString吗?也许我认为您访问了与数据库同名的本地另一个数据库。