2016-06-30 4 views
0

내 응용 프로그램에서 ID 역할을 만들고 있지만 동일한 이름 중 하나가 존재하지 않는지 확인하려고합니다. 여기에 나는 그것이 중복 때문에 Role이 다른 경우 작동 이후, 그것은 오류를 알고 있지만, 왜이 경우/다른 절을 사용하지 보인다Identity 역할이 생성되기 전에 존재하는지 확인하려면 어떻게합니까?

public ActionResult Create() 
{ 
    var Role = new IdentityRole(); 
    return View(Role); 
} 

[HttpPost] 
public ActionResult Create(IdentityRole Role) 
{ 
    var roleStore = new RoleStore<IdentityRole>(_context); 
    var roleManager = new RoleManager<IdentityRole>(roleStore); 
    if (!roleManager.RoleExists(Role.ToString())) 
    { 
     _context.Roles.Add(Role); 
     _context.SaveChanges(); //error points here 
     return RedirectToAction("Index"); 
    } 
    else 
    { 
     TempData["message"] = "This role already exists. Please check your roles and try again"; 
     return RedirectToAction("Index"); 
    } 

} 

을 시도 무엇?

답변

1

Exists 함수에 역할 이름을 전달하지 않으면 Role.ToString()이 클래스 이름 (아마도 Microsoft.AspNet.Identity.EntityFramework.IdentityRole)으로 전달됩니다. 대신 다음과 같이 Role.Name을 전달해야합니다.

if (!roleManager.RoleExists(Role.Name)) 
{ 
    _context.Roles.Add(Role); 
    _context.SaveChanges(); //error points here 
    return RedirectToAction("Index"); 
}