c# - 使用 DbContext 和 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 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!
谁能看到我错过了什么?
解决方案
推荐阅读
- terraform - 地形 | 0.12.2 | 升级问题
- php - Laravel 403 无效签名仅在 Nginx Web 服务器上
- javascript - VSCode & Flow - 转到定义不起作用
- java - JavaFX - 围绕特定的 X 和 Y 旋转画布
- azure - Azure 中的内部负载均衡器
- ios - didFailProvisionalNavigation 错误未本地化
- node.js - 使用 Node.js、ImageMagick 和 PDFKit 将 PDF 转换为 JPEG 并压缩和流式传输结果
- python - 如何在python中读回字节文件?
- aws-sdk-go - 配置 aws-sdk-go http 客户端连接池?
- alfred - 以编程方式将 Google File Stream 链接复制到剪贴板