I'm trying to set initial user with admin role using Entity Framework, Autofac and Identity 2.0 Here my Application Context class:
public class ApplicationContext<TUser> : IdentityDbContext<TUser> where TUser : IdentityUser
{
public ApplicationContext(string conectionString) : base(conectionString)
{
Database.SetInitializer(new MyContextInitializer());
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//entities builder and configuration
}
}
And my custom initializer:
class MyContextInitializer : DropCreateDatabaseIfModelChanges<ApplicationContext<IdentityUser>>
{
protected override void Seed(ApplicationContext<IdentityUser> context)
{
//seeding data
}
}
The problem is that the seed method is never called. Whats going on and how to fix that? Thanks for advance!
From my understanding, you must call Database.SetInitializer()
before any instance is created (including in the constructor).
One way is to use a static constructor:
public class ApplicationContext : IdentityDbContext<TUser>
where TUser : IdentityUser
{
static ApplicationContext()
{
Database.SetInitializer<ApplicationContext>(new MyContextInitializer());
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//entities builder and configuration
}
}