无法在asp.net

时间:2017-08-04 19:09:24

标签: c# asp.net sql-server entity-framework

我正在开发一个带有angularjs项目的asp.net web api。我的项目实际上是混合粒度认证。我的项目中有几个表,但只有三个表会导致插入问题。三个表是AspNetRoles,RolePermission和Roles。他们的关系是: enter image description here

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()时出现问题。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

在添加之前,您需要先检查RoleObject.AspNetRoles.Add(Role);是否存在,

或在您的代码中,对象rolePermissionList.PermissionList已复制了itens

相关问题