2016-09-14 15 views
1

私のテストコードは、存在しない場合に新しいユーザーを作成するためのものです。 FindByEmailAsync()メソッドを使用して、ユーザーが存在するかどうかを確認します。 しかし、常にnullを返すので、同じ数のユーザーが作成されています。ここでFindByEmailAsync()は常にnullを返します

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

public async Task<IActionResult> Index() 
{ 
    var test = await _userManager.FindByEmailAsync("[email protected]"); 

    if (test == null) 
    { 
     // Add the user 
     var newUser = new User 
     { 
      UserName = "mark", 
      Email = "[email protected]", 
      Created = DateTime.Now, 
      Updated = DateTime.Now 
     }; 

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

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

    return View(); 
} 

は私の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(); 

    /// ... 
} 

config.User.RequireUniqueEmail = true;であることは、同じメールアドレスで複数のユーザーを作成しているため、動作していないが、私はすべてのエラーが表示されません。

私は間違っていますか?私に助言してください。

答えて

5

内部では、UserManagerは実際にはNormalizedEmailの列で検索しています。私はデータベースを見て、それが正しく挿入されているかどうかを確認します。

関連する問題