I a créé une fonction de mise à jour des enregistrements dans une base de données comme:mise à jour plusieurs à plusieurs EF
Users (UserId, Name)
UsersRoles (UserId, RoleId)
Roles (RoleId, Name)
Je passe parameter_user et parameter_role à la fonction. S'ils se trouvent dans les tables respectives, mettez à jour les données. Cependant, il ne met pas à jour les données, mais les met à chaque fois.
Ainsi, si la table UsersRoles ressemble à ceci:
10 25
10 23
10 28
11 25
11 32
et je voulais mettre à jour la ligne 23 à 10 10 27, il ajoute un enregistrement 10 27, mais il laisse 10 23. je suppose vous ne pouvez pas changer parce que c'est un double FK. Mais comment supprimer l'ancien enregistrement 10 23?
La fonction est comme ceci:
var user = (from r in context.Users where r.UserId.Equals(parameter_user) select r).FirstOrDefault();
Roles role;
if (parameter_role > 0)
{
role = (from r in context.Roles where r.RoleId.Equals(parameter_role) select r).FirstOrDefault();
if (role == null) return false;
if (user != null)
{
role.Users.Add(user);
}
role.Name = "Paul";
}
merci beaucoup bye
merci Slauma , le problème est que je n'ai pas l'ancien (23), mais seulement le nouveau (27). Le vieux que je dois récupérer tout en mettant à jour l'ancien record, comment puis-je? – user2080358
En pratique, je dois supprimer l'enregistrement uniquement dans la table UsersRoles, comment le faire? – user2080358
@ user2080358: Vous devez probablement utiliser le 'Clear' alors dans le second extrait de code si vous voulez supprimer tous les anciens rôles de l'utilisateur. – Slauma