Получить идентификатор роли из идентификатора AspNet и обновить роль пользователя

#asp.net-identity

#asp.net-identity

Вопрос:

Я создал пользователей и назначил одну роль для каждого пользователя, используя приведенное ниже: я должен обновить userinfo и роль, остающуюся у пользователя admin.

             var userDet = new ApplicationUser
        {

            Email = model.Email,
            UserName = model.Email,
            TenantId = tenantId,
            IsAdmin = false


        };

        var result = await _userManager.CreateAsync(userDet, model.Password);

        if (model.Role == "ADMIN")
            throw new NullReferenceException("Can't Add Admin Role to User!");

        var assignRole = await _userManager.AddToRoleAsync(userDet, model.Role);
  

Но я не могу обновить созданную роль пользователя, поскольку я не могу получить идентификатор роли и имя роли из идентификатора пользователя из приведенного ниже кода:

         var user = await _userManager.FindByEmailAsync(model.Email);
        var admin = await _userManager.FindByEmailAsync(model.AdminEmail);
        bool IsAdmin = admin.IsAdmin;

        var userDet = new ApplicationUser
        {

            OrganizationName = model.OrganizationName,
        };

        var result = await _userManager.UpdateAsync(userDet);

        var user = await _userManager.FindAsync(model.Email);
        string oldRoleName = await _userManager.GetRoles(user.Id).FirstOrDefault();
        var removerole= await _roleManager.RemoveRoleAsync(user.Id, oldRoleName);
        var result2 = await _userManager.AddToRoleAsync(user.Id, model.Role);
  

Я не могу повторно получить RoleName, roleid из приведенного выше кода.
Как я могу обновить пользователя на основе идентификатора модели.Пользователь электронной почты от другого пользователя.

Ответ №1:

 var user =await _userManager.FindByEmailAsync(model.Email);
var roles = await _userManager.GetRolesAsync(user);
await _userManager.RemoveFromRoleAsync(user, roles[0]);
await _userManager.AddToRoleAsync(user, model.Role);