1

여기에서 게시물을 살펴보면 Entity Framework 시드를 통해 ASP.NET ID 역할을 만드는 두 가지 방법을 보았습니다. 한 가지 방법은 RoleManager을 사용하고 다른 하나는 RoleStore을 사용합니다. 나는 둘 사이에 차이가 있는지 궁금해했다. 후자를 사용하면 덜 초기화되는 것을 피할 수 있습니다.시드 역할 (RoleManager vs RoleStore)

string[] roles = { "Admin", "Moderator", "User" }; 

// Create Role through RoleManager 

var roleStore = new RoleStore<IdentityRole>(context); 
var manager = new RoleManager<IdentityRole>(roleStore); 

foreach (string role in roles) 
{ 
    if (!context.Roles.Any(r => r.Name == role)) 
    { 
     manager.Create(new IdentityRole(role)); 
    } 

// Create Role through RoleStore 

var roleStore = new RoleStore<IdentityRole>(context); 

foreach (string role in roles) 
{ 
    if (!context.Roles.Any(r => r.Name == role)) 
    { 
     roleStore.CreateAsync(new IdentityRole(role)); 
    } 
} 

답변

2

구체적인 경우 두 가지 방법을 모두 사용하면 동일한 결과를 얻을 수 있습니다.

단, 올바른 사용법은 다음과 같습니다 당신이 관리자에 역할을 추가 할 때

var context = new ApplicationIdentityDbContext(); 
var roleStore = new RoleStore<IdentityRole>(context); 
var roleManager = new RoleManager<IdentityRole>(roleStore); 

string[] roles = { "Admin", "Moderator", "User" }; 

foreach (string role in roles) 
{ 
    if (!roleManager.RoleExists(role)) 
    { 
      roleManager.Create(new IdentityRole(role)); 
    } 
} 

RoleManagerRoleStore에 대한 래퍼는, 그래서, 당신은 실제로 에서 그들을 삽입하는을 저장하지만 차이점은 RoleManagerIIdentityValidator<TRole>역할 확인 도구을 구현할 수 있다는 점입니다.

그래서, 검증을 구현마다 당신이 관리자 통해 역할을 추가, 먼저 가게에 추가되기 전에 검증됩니다.