De votre commentaire:
context.User.Roles me donne la liste des rôles. Je peux faire un pour-chacun et mettre à jour l'Id, mais comment puis-je mettre à jour le correspondant UserId foreach RoleId dans cette table?
Tout d'abord, vous ne devez PAS mettre à jour les ID. Ensuite, puisque vous utilisez EF, vous devriez essayer de penser en termes d'objets (ou d'entités), plutôt que de "tables DB-many-to-many-mapping". Chaque entité User
a une collection de Roles
. Si vous supprimez un Role
de la collection User.Roles
et appelez context.SaveChanges()
, l'entrée correspondante sera supprimée de la tabelle UserRoles
. De même, lorsque vous ajoutez un objet Role
à la collection User.Roles
et enregistrez les modifications, une nouvelle entrée est créée dans la table UserRoles
.
L'exemple suivant pourrait être utile pour la clarté:
var user = context.Users.Include("Roles").Where(u => u.Name == "User1").FirstOrDefault();
user.Roles.Remove(user.Roles.Where(r => r.Name == "Admin").FirstOrDefault());
context.SaveChanges();
(contrôles NULL référence omis pour simplifier).
Il y a eu une question similaire ici: http://stackoverflow.com/questions/1732609/how-do--create-and-update-a-many-to-many-relationship-with-ef – Yakimych
link dit "charger l'objet désiré, définir les propriétés modifiées et appeler SaveChanges sur le contexte." context.User.Roles me donne la liste des rôles. Je peux faire un pour-chacun et mettre à jour l'Id, mais comment puis-je mettre à jour le UserId foreach RoleId correspondant dans cette table? – tempid
Quelqu'un? Ça me rend fou. – tempid