使用 HotChocolate 从 UserManager 获取用户

Getting users from UserManager using HotChocolate

如何使用 [ScopedService]

Microsoft.AspNetCore.Identity 获取 UserManager 的用户列表

以下是我已经尝试过的:

using System.Linq;
using hostapp.Data;
using hostapp.Models;
using HotChocolate;
using HotChocolate.Data;
using Microsoft.AspNetCore.Identity;

namespace hostapp.GraphQL
{
    public class Query
    {
        // 1.
        [UseDbContext(typeof(DataContext))]
        public IQueryable<AppUser> Users([ScopedService] UserManager<AppUser> userManager)
        {
            return (IQueryable<AppUser>)userManager.Users;
        }
        
        // 2.
        [UseDbContext(typeof(DataContext))]
        public async Task<List<AppUser>> Users([ScopedService] UserManager<AppUser> userManager)
        {
            return await userManager.Users.ToListAsync();
        }

    }
}

输入:

query {
  users {
    emailConfirmed
  }
}

输出:

{
  "errors": [
    {
      "message": "Unexpected Execution Error",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "users"
      ]
    }
  ],
  "data": {
    "users": null
  }
}

您不需要使用 [ScopedService] 而是 [Service]DBContextUseDbContext 组合的情况下,您实际上什至只需要使用 [ScopedService]。 我们会在下一个版本中解决这个问题