如何将角色 ID 添加到模型

How To Add Role Id to Models

我已经获得了用户的角​​色 ID,我想更新另一个包含角色 ID 列的模型,但它总是说无法将通用列表转换为字符串,我将获得的角色 ID 转换为字符串,但没有获取值,我想将其添加到模型中。

这是我目前所拥有的

var role = await _userManager.GetRolesAsync(user); 
var roleIds = _roleManager.Roles
    .Where(r => role.AsEnumerable().Contains(r.Name))
    .Select(r => r.Id)
    .ToList();

这是异常代码。当我更改为未获得任何值的 ToString 时

var roleIds = _roleManager.Roles
    .Where(r => role.AsEnumerable().Contains(r.Name))
    .Select(r => r.Id)
    .ToString(); 

userEmployee.Stations.Add(new Models.AppModel.StaffStation { RoleId = roleIds })

     

而且我只想更新甚至不创建新的。我是 .net 新手

继续 Fabio 的回答,你可以在添加到你的模型之前检查用户是否在角色中,如下所示

     //Get All User Roles
        var userRoles = roleManager.Roles.Where(r => role.AsEnumerable().Contains(r.Name));

        //Loop on All User Roles
        foreach (var userRole in userRoles)
        {
            //Check if User not in role so we will add it
            if(!await userManager.IsInRoleAsync(user, userRole.Name))
            {
                var station = new Models.AppModel.StaffStation { RoleId = userRole.Id };
                userEmployee.Stations.Add(station);
            }
            else
            {
                //here you can check if you don't need this role for this user anymore so delete it
                //or keep it as is
            }
            
        }