【发布时间】:2020-12-06 21:40:34
【问题描述】:
我正在尝试开发一种算法,该算法可以在项目的首次使用开始时创建许多角色。 它需要像下面这样的“异步等待”任务。
[HttpGet]
public async Task<IActionResult> LoginAsync()
{
int rolesCount = roleManager.Roles.Count();
string[] roles = { "Teacher", "Student" };
var role = new IdentityRole();
if (rolesCount == 0)
{
for (int i = 0; i < roles.Length; i++)
{
if (!await roleManager.RoleExistsAsync(roles[i]))
{
role.Name = roles[i];
await roleManager.CreateAsync(role);
}
}
}
return View();
}
显示此错误
SqlException:违反主键约束“PK_AspNetRoles”。 无法在对象“dbo.AspNetRoles”中插入重复键。复制品 键值为 (f32270bc-a54a-42a4-8968-9e402ddaeb0e)。 声明已终止。
第一个角色“老师”的主键在第二个角色“学生”的循环过程中没有改变的问题。于是出现了约束冲突。
那么,如何在“异步等待”任务中一次创建多个角色?
【问题讨论】:
-
我认为是因为这个:
if (rolesCount == 0)当 'rolesCount' 等于 0 并且你没有任何角色可以检查它们的长度时,你正在执行你的 'for' 循环。 -
@Arash 我需要在没有找到角色时创建角色,所以 if 没有错。
-
如果我的回答对您有帮助,您可以标记一下吗?谢谢。
标签: c# asp.net-mvc asp.net-core roles