C# 使用DbContext和ADO.NET进行的良好查询不返回结果

C# 使用DbContext和ADO.NET进行的良好查询不返回结果,c#,asp.net-core,entity-framework-core,entity-framework-6,ado.net,C#,Asp.net Core,Entity Framework Core,Entity Framework 6,Ado.net,我需要在我的数据库上下文上运行以下查询 SELECT u.[Email], u.[EmailConfirmed], u.[PhoneNumber], STRING_AGG(r.[Name], ', ') AS Roles FROM [AspNetUsers] u LEFT OUTER JOIN [AspNetUserRoles] ur ON ur.UserId = u.Id LEFT OUTER JOIN [AspNetRoles] r ON r.Id = ur.RoleId GROUP BY

我需要在我的数据库上下文上运行以下查询

SELECT u.[Email],
u.[EmailConfirmed],
u.[PhoneNumber],
STRING_AGG(r.[Name], ', ') AS Roles
FROM [AspNetUsers] u
LEFT OUTER JOIN [AspNetUserRoles] ur ON ur.UserId = u.Id
LEFT OUTER JOIN [AspNetRoles] r ON r.Id = ur.RoleId
GROUP BY u.[Email], u.[EmailConfirmed], u.[PhoneNumber]
当我在查询窗口中运行它时,我得到四个结果。所以我想出了下面的代码

string UserQuery = @"SELECT u.[Email],
u.[EmailConfirmed],
u.[PhoneNumber],
STRING_AGG(r.[Name], ', ') AS Roles
FROM [AspNetUsers] u
LEFT OUTER JOIN [AspNetUserRoles] ur ON ur.UserId = u.Id
LEFT OUTER JOIN [AspNetRoles] r ON r.Id = ur.RoleId
GROUP BY u.[Email], u.[EmailConfirmed], u.[PhoneNumber]";

var conn = DbContext.Database.GetDbConnection();
using var cmd = conn.CreateCommand();
cmd.CommandText = UserQuery;
DbContext.Database.OpenConnection();
using var reader = cmd.ExecuteReader();
while (reader.NextResult())
{
    Users.Add(new UserViewModel
    {
        Email = (string)reader["Email"],
        EmailConfirmed = (bool)reader["EmailConfirmed"],
        Phone = (string)reader["PhoneNumber"],
        Role = (string)reader["Roles"]
    });
}
此代码运行时没有错误,但对
reader.NextResult()的第一次调用返回false


有人能看到我遗漏了什么吗?

应该是
reader.Read()
作为
reader.NextResult()
将返回下一个结果集

见:


您的上下文指向同一个数据库吗?您是指查询工作的同一个数据库吗?是的,当然。这四个结果证实了我正在使用的数据库,可能是字符串没有正确转义。你能试试这个吗:我不觉得自己很愚蠢。我想我已经有一段时间没有使用原始ADO.NET了。