我正在开发一个带有angularjs项目的asp.net web api。我的项目实际上是混合粒度认证。我的项目中有几个表,但只有三个表会导致插入问题。三个表是AspNetRoles,RolePermission和Roles。他们的关系是:
Roles表中有三个角色。员工,经理和管理员。当admin更改任何Role权限时,将删除旧的Role权限,并在AspNetRoles表中插入新权限。但是,执行此操作时会发生错误。错误是:
违反PRIMARY KEY约束' PK_dbo.AspNetRoles'。无法在对象' dbo.AspNetRoles'中插入重复键。重复键值为(dbc1ae5c-a8a7-4aa9-b62e-0948e6e2856c)
我的代码是删除和更新权限
public void SaveUpdateRolePermission(RoleWisePermission rolePermissionList)
{
var RoleObject = db.Roles.Where(s => s.Id == rolePermissionList.RoleId).FirstOrDefault();
if (RoleObject.AspNetRoles.Any())
{
foreach (var rolePermission in RoleObject.AspNetRoles.ToList())
{
RoleObject.AspNetRoles.Remove(rolePermission);
}
}
foreach (AspNetRoles Role in rolePermissionList.PermissionList)
{
RoleObject.AspNetRoles.Add(Role);
}
db.SaveChanges();
db.Dispose();
}
public class RoleWisePermission
{
public List<AspNetRoles> PermissionList { get; set; }
public System.Guid RoleId { get; set; }
}
db.saveChanges()
时出现问题。请帮我解决这个问题。
答案 0 :(得分:0)
在添加之前,您需要先检查RoleObject.AspNetRoles.Add(Role);
是否存在,
或在您的代码中,对象rolePermissionList.PermissionList
已复制了itens