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
}
}
我正在尝试使用 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
}
}