Если вы хотите использовать метод OnModelCreating
с методом HasData
, вы можете сделать это следующим образом:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
ApplicationUser appUser = new ApplicationUser
{
UserName = "tester",
Email = "tester@test.com",
NormalizedEmail = "tester@test.com".ToUpper(),
NormalizedUserName = "tester".ToUpper(),
TwoFactorEnabled = false,
EmailConfirmed = true,
PhoneNumber = "123456789",
PhoneNumberConfirmed = false
};
PasswordHasher<ApplicationUser> ph = new PasswordHasher<ApplicationUser>();
appUser.PasswordHash = ph.HashPassword(appUser, "Your-PW1");
modelBuilder.Entity<IdentityRole>().HasData(
new IdentityRole { Name = "Admin", NormalizedName = "ADMIN" },
new IdentityRole { Name = "User", NormalizedName = "USER"}
);
modelBuilder.Entity<ApplicationUser>().HasData(
appUser
);
}
Если вы создаете пользователя вне метода HasData
, вы можете использоватьPasswordHasher
.Он будет хэшировать пароль для вас.Затем просто поместите созданного пользователя в HasData
вместо создания нового там.Я не знаю, лучше ли это, чем посев при запуске, но это один из способов сделать это.