2010-02-15 3 views
0

J'essaie de supprimer tous les "groupes d'utilisateurs" appartenant à un "utilisateur", puis d'ajouter de nouveaux "groupes d'utilisateurs".InvalidOperationException avec supprimer les objets connexes

public void SaveUserUsergroups(int userID, int[] UsergroupID) 
    { 

     User uo = _entities.Users.Where(x => x.UserID == userID).First(); 

     uo.Usergroups.Load(); 


     foreach(Usergroup ug in uo.Usergroups) 
     { 

      uo.Usergroups.Remove(ug); 
     } 


     int _currentUsergroupID; 

     for (int i = 0; i < UsergroupID.Count(); i++) 
     { 
      _currentUsergroupID = UsergroupID[i]; 

      uo.Usergroups.Add(_entities.Usergroups.Where(ug => ug.UsergroupID == _currentUsergroupID).First()); 
     } 

     _entities.SaveChanges(); 

    } 

Il jette une exception s'il y a plus de 1 usergroup ici:

 foreach(Usergroup ug in uo.Usergroups) 
     { 

      uo.Usergroups.Remove(ug); 
     } 

Comment dois-je résoudre ce problème?

/M

Répondre

2

Vous ne pouvez pas modifier une collection en l'itérant. Vous pouvez créer une collection d'éléments que vous souhaitez supprimer et les supprimer de la relation après la boucle foreach ou parcourir la collection vers l'arrière à l'aide d'un compteur comme suit:

for (int i = uo.Usergroups.Count - 1; i >= 0; i--) 
    { 
     uo.Usergroups.Remove(uo.Usergroups.ElementAt(i)); 
    } 
Questions connexes