我正在开发一个带有angularjs项目的asp.net web api。我的项目实际上是混合粒度认证。我的项目中有几个表格,但只有三个表格会导致插入问题。三个表格是AspNetRoles,RolePermission和Roles。而他们之间的关系是:无法在asp.net中使用LINQ插入数据到多对多关系中
有在角色表三个角色。员工,经理和管理员。当管理员更改任何角色权限时,旧的角色权限将被删除,并将新的权限插入到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);
db.SaveChanges();
}
}
foreach (AspNetRoles Role in rolePermissionList.PermissionList.Distinct())
{
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()。请帮我解决这个问题。
我已经删除了所有与RoleId相关的AspNetRoles。所以没有机会复制蚂蚁项目。还要记住,即使Role Permission表中没有数据,也会发生问题。并且我还检查了rolePermissionList.PermissionList的不同项目。如果我从角色对象中删除特定角色ID的数据,然后检查角色权限表中是否有任何返回true的AspNetRoles。角色许可表中没有数据的地方。请帮我解决这个问题