使用实体框架核心迁移创建角色

维旺迪

我正在使用EF Core(2.0.0)创建我的第4个迁移脚本。在这里,我想向数据库添加一些角色。

问题是,我不确定如何执行此操作。目前我有这个:

protected override void Up(MigrationBuilder migrationBuilder)
{
    // todo: Pass connection string somehow..?
    var opt = new DbContextOptions<ApplicationContext>();
    var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationContext(opt)));

    //if (!roleManager.RoleExists("ROLE NAME"))
    //{
        // todo: create the role...
    //}
}

但是创建RoleManager类似这样的代码会给我以下错误:

没有给出与'RoleManager.RoleManager(IRoleStore,IEnumerable>,ILookupNormalizer,IdentityErrorDescriber,ILogger>)'的所需形式参数'roleValidators'相对应的参数

我不确定如何解决此问题。我找不到有关如何使用迁移在.NET Core中正确执行此操作的任何信息。

我在此代码中面临两个问题:

  • 我正在尝试以某种方式创建DbContext的实例。我是否应该能够从迁移代码中获取DbContext?
  • 实例化RoleManager这样是行不通的,需要解决。

我该如何解决这些问题?

格特·阿诺德

Up方法基本上是一个指令文件,该文件告诉EF的数据库迁移器如何生成数据库升级脚本。生成脚本时执行该方法。在那里进行任何数据操作绝对是不合适的。EF内核不支持尚未播种,所以你必须添加缺少的角色,应用程序启动时,例如通过像这样

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章