當我最初創建數據庫時,我正試圖將一些角色植入我的身份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(希望有所幫助)。