我对更新数据库还很陌生,并且我构建了以下代码以将用户角色替换为新角色。我在这个问题上还是犯错了。
public void UpdateRole(string id, string newRoleID)
{
var user = Users.FirstOrDefault(u => u.Id == id);
var oldRoleId = user.Roles.FirstOrDefault().RoleId;
if (user != null && oldRoleId != newRoleID)
{
user.Roles.Remove(oldRoleId);
user.Roles.Add(newRoleID);
}
}
有人可以解释为什么我遇到此错误吗?我没有尝试转换任何东西。我正在尝试删除指定用户ID的RoleId内容,并将其替换为我的发布操作发送的新ID。
答案 0 :(得分:2)
IdentityUserRole
方法在传递string
值(即newRoleID
)时接受user.Roles.Add(new IdentityUserRole { RoleId = newRoleID });
对象。您需要在代码中进行以下更改:
Remove
修改
IdentityUserRole
方法也需要一个 var user = Users.FirstOrDefault(u => u.Id == id);
var oldRole = user.Roles.FirstOrDefault();
if (user != null && oldRole.RoleId != newRoleID)
{
user.Roles.Remove(oldRole);
user.Roles.Add(new IdentityUserRole { RoleId = newRoleID });
}
对象。但请注意,它也必须附加到上下文中。最简单的方法是通过以下代码:
$totalsum1=$row['undergraduate1']+$row['postgraduate2'];
$return .=
'<tr>
<td style="width: 4%; background:#F0F8FF; color:black;" align="center"> $i </td>
<td style="width: 15%; background:#F0F8FF; color:black;" align="right"> {$row['uni']} </td>
<td style="width: 14%; background:#F0F8FF; color:black;" align="center"> {$row['undergraduate1']} </td>
<td style="width: 14%; background:#F0F8FF; color:black;" align="center"> {$row['postgraduate2']} </td>
<td style="width: 14%; background:#F0F8FF; color:#00008B;" align="center">$totalsum1</td>
</tr>';
$i++;