2010-02-15 50 views
0

我试图删除属于一个“用户”的所有“用户组”,然后添加新的“用户组”。InvalidOperationException与删除相关对象

 foreach(Usergroup ug in uo.Usergroups) 
     { 

      uo.Usergroups.Remove(ug); 
     } 

我应该如何解决这个问题:

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

    } 

如果有超过1个用户组在这里它抛出一个异常?

/M

回答

2

不能修改的集合,同时通过它迭代。你可以建立一个你想删除的项目集合,并在foreach循环之后从关系中删除它们,或者使用如下计数器向后迭代集合:

for (int i = uo.Usergroups.Count - 1; i >= 0; i--) 
    { 
     uo.Usergroups.Remove(uo.Usergroups.ElementAt(i)); 
    } 
相关问题