为什么角色显示为 "not exist" 即使存在于数据库中 (asp.net mvc)

Why does a role shows as "not exist" even when present in the database (asp.net mvc)

我在注册用户时尝试将用户添加到角色,所以我在 migrations.cs class

中使用下面的代码为角色播种并更新了数据库
        var RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
        string[] roleNames = { "Admin", "Reviewer", "User" };
        IdentityResult roleResult;
        foreach (var roleName in roleNames)
        {
            if (!RoleManager.RoleExists(roleName))
            {
                roleResult = RoleManager.Create(new IdentityRole(roleName));
            }
        }

我试图将角色名称提取到我的帐户控制器中的下拉列表中 class

public ActionResult Register()
{
    var model = new RegisterViewModel();
        model.RolesList = new SelectList(_db.Roles, "Id", "Name");

    return View(model);
}

//
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
    if (ModelState.IsValid)
    {
        var user = new ApplicationUser()
        {
            UserName = model.UserName,
            PortalUser = new PortalUser()
            {
                Email = model.Email,
                UserName = model.UserName
            }
        };
        var result = await UserManager.CreateAsync(user, model.Password);
        if (result.Succeeded)
        {
            UserManager.AddToRole(user.Id, model.Roleid);                
            return RedirectToAction("Index", "ApplicationReview");
        }
        else
        {
            AddErrors(result);
        }
    }
    model.RolesList = new SelectList(_db.Roles, "Id", "Name");
    // If we got this far, something failed, redisplay form
    return View(model);
}

然而调试器此时显示错误

UserManager.AddToRole(user.Id, model.Roleid); Role bec759ac-55ca-40f0-a8b8-00de314dd2b3 does not exist.

但是这个角色存在于数据库中,所以我对问题出在哪里感到困惑

第二个参数是字符串角色,如"Reviewer"不是角色的id。它出错了,因为实际上没有 Name 等于该 GUID 的角色。

参见:https://msdn.microsoft.com/en-us/library/dn497483(v=vs.108).aspx