如何在创建身份角色之前检查它是否存在?
How do I check to see if an Identity role exists before it is created?
在我的应用程序中,我正在创建身份角色,但想确保不存在同名角色。这是我试过的
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");
}
}
我知道它出错是因为它是重复的,因为它在 Role
不同时有效,但为什么它似乎没有使用 if/else 子句?
你的问题是你没有将角色名称传递给 Exists
函数,你传递的是 Role.ToString()
解析为 class 的名称,可能类似于Microsoft.AspNet.Identity.EntityFramework.IdentityRole
。相反,你应该传递 Role.Name
,像这样:
if (!roleManager.RoleExists(Role.Name))
{
_context.Roles.Add(Role);
_context.SaveChanges(); //error points here
return RedirectToAction("Index");
}
在我的应用程序中,我正在创建身份角色,但想确保不存在同名角色。这是我试过的
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");
}
}
我知道它出错是因为它是重复的,因为它在 Role
不同时有效,但为什么它似乎没有使用 if/else 子句?
你的问题是你没有将角色名称传递给 Exists
函数,你传递的是 Role.ToString()
解析为 class 的名称,可能类似于Microsoft.AspNet.Identity.EntityFramework.IdentityRole
。相反,你应该传递 Role.Name
,像这样:
if (!roleManager.RoleExists(Role.Name))
{
_context.Roles.Add(Role);
_context.SaveChanges(); //error points here
return RedirectToAction("Index");
}