gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:37:35 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com