IdentityDbContext 没有从我的数据库初始化程序中调用种子方法

IdentityDbContext doesn't call the seed method from my database initializer

我正在尝试使用 Entity Framework、Autofac 和 Identity 2.0 将初始用户设置为管理员角色 这是我的应用程序上下文 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
    }
}

还有我的自定义初始化程序:

class MyContextInitializer : DropCreateDatabaseIfModelChanges<ApplicationContext<IdentityUser>>
{
    protected override void Seed(ApplicationContext<IdentityUser> context)
    {
        //seeding data
    }
}

问题是从未调用种子方法。这是怎么回事,如何解决?感谢您的提前!

根据我的理解,您必须在创建任何实例之前调用Database.SetInitializer() (包括在构造函数中)。

一种方法是使用静态构造函数:

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
  }
}