FindByEmailAsync()始终返回null

Exp*_* be 5 asp.net-core

我的测试代码用于创建新用户(如果不存在).并使用FindByEmailAsync()方法检查用户是否存在.但它总是返回null,所以它创建了相同的许多用户.

 public HomeController(
    IUnitOfWork unitOfWork, 
    UserManager<User> userManager)
{
    _unitOfWork = unitOfWork;
    _userManager = userManager;
}

public async Task<IActionResult> Index()
{
    var test = await _userManager.FindByEmailAsync("admin@admin.com");

    if (test == null)
    {
        // Add the user
        var newUser = new User
        {
            UserName = "mark",
            Email = "admin@admin.com",
            Created = DateTime.Now,
            Updated = DateTime.Now
        };

        _unitOfWork.UserRepository.Insert(newUser);
        _unitOfWork.Save();

        // password is 'admin'
        await _userManager.CreateAsync(newUser, "admin");
    }

    return View();
}
Run Code Online (Sandbox Code Playgroud)

这是我的startup.cs

public void ConfigureServices(IServiceCollection services)
{
    // add Identity
    services.AddIdentity<User, IdentityRole>(config =>
    {
        config.User.RequireUniqueEmail = true;
        config.Password.RequiredLength = 4;
        config.Cookies.ApplicationCookie.LoginPath = "/Auth/Login";
    })
    .AddEntityFrameworkStores<MyContext>();

     /// ...
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UseIdentity();

    /// ...
}
Run Code Online (Sandbox Code Playgroud)

config.User.RequireUniqueEmail = true;不起作用,因为它创建了多个具有相同电子邮件地址的用户,但我没有看到任何错误.

我究竟做错了什么?请建议我.

Joe*_*tte 15

在内部,UserManager实际上是在NormalizedEmail列上搜索.我会查看数据库,看看是否正确填充.