I'm trying to make user identity seeding in OnModelCreating
.
First: ApplicationDbInitializer
is the class dedicated to seed a user using UserManager
and looks like this:
public class ApplicationDbInitializer
{
public UserManager<AppUser> userManager { get; set; }
public ApplicationDbInitializer(UserManager<AppUser> _userManager)
{
userManager = _userManager;
}
public void SeedUsers()
{
string Email = Environment.GetEnvironmentVariable("Email");
if (userManager.FindByEmailAsync(Email).Result == null)
{
AppUser user = new AppUser
{
Id = SeedingIDs.ManagerID,
Name = Environment.GetEnvironmentVariable("Name"),
UserName = "test",
NormalizedUserName = "test".ToUpper(),
PhoneNumber = Environment.GetEnvironmentVariable("Phone"),
PhoneNumberConfirmed = true,
Email = Email,
NormalizedEmail = Email.ToUpper(),
EmailConfirmed = true,
Bio = "...",
Pic = "/assets/img/Me.jpg",
Title = "Full-Stack Web Developer",
IsManager = true,
PasswordHash = "test@123",
};
IdentityResult result = userManager.CreateAsync(user, "adrg*&$IUHB475").Result;
if (result.Succeeded)
{
userManager.AddToRoleAsync(user, "Admin").Wait();
}
}
}
}
OnModelCreating
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.ApplyConfiguration(new SeedingRoles());
//builder.Entity<AppUser>().HasData(Initialize);
ApplicationDbInitializer.SeedUsers();
builder.Entity<IdentityUserRole<string>>().HasData(new IdentityUserRole<string>
{
RoleId = SeedingIDs.RoleID,
UserId = SeedingIDs.ManagerID
});
builder.ApplyConfiguration(new SeedingCategories())
.ApplyConfiguration(new SeedingBootstrapCategory())
.ApplyConfiguration(new SeedingTopics())
.ApplyConfiguration(new SeedingBootstrapTool())
.ApplyConfiguration(new SeedingPosts());
}
The problem: I get this error as shown here
It's not a problem if the ApplicationDbInitializer
class is static or non-static but I need to include it into OnModelCreating
.