Je développe une API web asp.net avec le projet angularjs. Mon projet est en réalité l'authentification par granularité hybride. Il y a plusieurs tables dans mon projet mais il n'y a que trois tables qui créent un problème avec l'insertion. Trois tables sont AspNetRoles, RolePermission et Rôles. Et leur relation est:Impossible d'insérer des données dans des relations many-to-many dans asp.net en utilisant LINQ
Il y a trois rôles dans le tableau des rôles. Employé, gestionnaire et administrateur Lorsque l'administrateur modifie une autorisation de rôle, l'ancienne autorisation de rôle est supprimée et une nouvelle autorisation est insérée dans la table AspNetRoles. Cependant, une erreur se produit lorsque cette opération est exécutée. L'erreur est:
Violation de la contrainte PRIMARY KEY 'PK_dbo.AspNetRoles'. Impossible d'insérer une clé en double dans l'objet 'dbo.AspNetRoles'. La valeur clé en double est (dbc1ae5c-a8a7-4aa9-b62e-0948e6e2856c)
Mon code est d'enlever et l'autorisation de mise à jour
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; }
}
Un problème se produit lorsque db.saveChanges(). S'il vous plaît, aidez-moi à résoudre ce problème.
J'ai déjà supprimé tous les AspNetRoles liés à RoleId. Il n'y a donc aucune chance de dupliquer des objets ant. Et rappelez-vous également que le problème est survenu même s'il n'y a pas de données dans la table Role Permission.Et je vérifie également les éléments distincts de rolePermissionList.PermissionList. Et si je supprime des données de l'objet Rôle pour un ID de rôle spécifique, puis vérifiez qu'il existe des AspNetRoles dans la table d'autorisation de rôle qui retournent true. Comment c'est possible là où il n'y a pas de données dans la Table d'autorisation des rôles. S'il vous plaît aidez-moi à résoudre ce problème