C# 使用实体框架的ASP.NET MVC核心项目中的种子角色

C# 使用实体框架的ASP.NET MVC核心项目中的种子角色,c#,asp.net-core-mvc,entity-framework-core,C#,Asp.net Core Mvc,Entity Framework Core,当我最初创建数据库时,我正试图将一些角色植入我的identity db上下文 为此,我尝试实现如下所述的代码: 我在Startup类中的ConfigureServices方法中尝试了以下操作: public void配置服务(IServiceCollection服务) 使用此代码段: var rolestore = new Microsoft.AspNetCore.Identity.EntityFrameworkCore. RoleStore<Microsoft.

当我最初创建数据库时,我正试图将一些角色植入我的identity db上下文

为此,我尝试实现如下所述的代码:

我在Startup类中的ConfigureServices方法中尝试了以下操作: public void配置服务(IServiceCollection服务)

使用此代码段:

var rolestore =
    new Microsoft.AspNetCore.Identity.EntityFrameworkCore.
        RoleStore<Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole>(identityContext);

var roleManager = new Microsoft.AspNetCore.Identity.RoleManager
                  <Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole>(rolestore);

//use rolemanager to insert roles etc.
var rolestore=
新的Microsoft.AspNetCore.Identity.EntityFrameworkCore。
RoleStore(identityContext);
var roleManager=新的Microsoft.AspNetCore.Identity.roleManager
(rolestore);
//使用角色管理器插入角色等。
问题是,在Visual Studio 2017创建的全新核心项目中,它似乎不起作用

它给出了以下生成错误:

CS7036未给出与所需参数相对应的参数 的形式参数“roleValidators” “RoleManager.RoleManager(IRoleStore, IEnumerable>,ILookupNormalizer, IdentityErrorDescriber,ILogger>, IHttpContextAccessor)'

即使我使用其他重载(其他参数的值为null),RoleManager似乎也不再有“Create”方法

所以,我被困在这一点上。我需要做什么?rolemanager的ASP.NET MVC核心实现是否发生了变化?我用错什么了吗

using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;

public static class Seed
{
    public static void Initialize(IServiceProvider provider)
    {
        var _context = provider.GetRequiredService<ApplicationDbContext>();
        var userManager = provider.GetRequiredService<UserManager<ApplicationUser>>();
        var roleManager = provider.GetRequiredService<RoleManager<IdentityRole>>();


    }
}

HTH(希望有帮助)。

编译后,执行Seed()可能会有问题。好的,这是为EfCore 2.0计划的。你的确切意思是什么?在初创公司内部运行应该很好,不是吗?我知道,这可能不是最好的地方,但我认为它应该会起作用。请尝试在
Configure
方法中解决它,而不是“新建”角色管理器。而且为我工作。正如您所说,您可以使用IServiceCollection重新获取您的UserManager和RoleManager。谢谢,但HTH是什么意思?HTH(希望有帮助)如何在非异步方法中处理异步调用的等待?如果您在配置中添加,不是每次发出请求时都会执行吗?是的,但是您还可以检查是否需要运行迁移,这将最小化实例化的代码。
Seed.Initialize(app.ApplicationServices);