我正在開發一個帶有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。角色許可表中沒有數據的地方。請幫我解決這個問題