具有Entity Framework的ASP.NET MVC Core項目中的種子角色

asp.net-core-mvc c# 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沒有給出的參數對應於'RoleManager.RoleManager(IRoleStore,IEnumerable>,ILookupNormalizer,IdentityErrorDescriber,ILogger>,IHttpContextAccessor)所需的形式參數'roleValidators'。

即使我使用其他重載(其他參數為空值),RoleManager似乎也沒有“Create”方法。

所以,我陷入了困境。我需要做什麼?角色管理器的ASP.NET MVC Core實現中有什麼變化嗎?我用錯了嗎?

一般承認的答案

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


    }
}

然後在startup.cs Configure()中的大部分代碼下面

Seed.Initialize(app.ApplicationServices);

HTH(希望有所幫助)。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow