我正在尝试使用 Entity Framework、Autofac 和 Identity 2.0 设置具有管理员角色的初始用户 这是我的应用程序上下文类:
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
}
}
关于c# - IdentityDbContext 不从我的数据库初始值设定项调用种子方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35874376/