2010-02-15 7 views
0

하나의 "사용자"에 속한 모든 "사용자 그룹"을 삭제하고 새로운 "사용자 그룹"을 추가하려고합니다.관련된 개체를 삭제할 때의 InvalidOperationException

 foreach(Usergroup ug in uo.Usergroups) 
     { 

      uo.Usergroups.Remove(ug); 
     } 

가 어떻게 그 문제를 해결해야한다 : 1 개 이상의 사용자 그룹 여기있을 경우

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(); 

    } 

그것은 예외가 발생?

/M

답변

2

컬렉션을 반복하면서 수정할 수 없습니다. 제거하려는 항목의 모음을 작성하고 foreach 루프 이후 릴레이션에서 제거하거나 다음과 같은 카운터를 사용하여 컬렉션을 거꾸로 반복 할 수 있습니다.

for (int i = uo.Usergroups.Count - 1; i >= 0; i--) 
    { 
     uo.Usergroups.Remove(uo.Usergroups.ElementAt(i)); 
    } 
관련 문제