具有Entity Framework的ASP.NET MVC Core项目中的种子角色

时间:2017-04-23 14:14:22

标签: c# asp.net-core-mvc entity-framework-core

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

为此,我尝试实现代码,如下所述: https://stackoverflow.com/a/29547994/985798

我在Startup-class中的ConfigureServices方法中试过这个:   public void ConfigureServices(IServiceCollection services)

使用此代码段:

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.

问题是,它似乎无法在使用Visual Studio 2017创建的全新Core项目中运行。

它给了我以下构建错误:

  

CS7036没有给出符合要求的论据   形式参数&#39; roleValidators&#39;的   &#39; RoleManager.RoleManager(IRoleStore,   IEnumerable&gt;,ILookupNormalizer,   IdentityErrorDescriber,ILogger&gt;,   IHttpContextAccessor)&#39;

即使我使用了另一个重载(其他参数的值为null),RoleManager也似乎没有&#34;创建&#34;方法了。

所以,我陷入了困境。我需要做什么?角色管理器的ASP.NET MVC Core实现中有什么变化吗?我用错了吗?

1 个答案:

答案 0 :(得分:4)

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>>();


    }
}

然后低于Configure()

startup.cs中的大部分代码
Seed.Initialize(app.ApplicationServices);
HTH(希望有帮助)。