c# - IdentityDbContext 不从我的数据库初始值设定项调用种子方法

标签 c# entity-framework autofac asp.net-identity-2

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

相关文章:

c# - 使用 AutoFac 根据构造函数参数名传递不同的实例

c# - 当文本填满框时,强制文本 block 在最右侧显示文本(不在左侧显示文本)

c# - Entity Framework - 从 m :n relationship 中删除 M 行

c# - autofac 是否支持新的 Web Api 2

c# - 如何重写查询表达式以用整数替换枚举?

C# LINQ to Entities - 从两个表中选择指定的数据,填充现有的模型类

c# - 与日志注入(inject)模块一起使用时在 Autofac 中显式解析 ILog

c# - 有没有办法使用 C# 将 PST 文件导入 Outlook?

c# - 我是作为服务运行的吗

c# - Console.WriteLine 如何影响异常堆栈