InvalidOperationException с удалением связанных объектов - PullRequest
0 голосов
/ 15 февраля 2010

Я пытаюсь удалить все группы пользователей, принадлежащие одному пользователю, а затем добавить новые группы пользователей.

    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 группы пользователей:

        foreach(Usergroup ug in uo.Usergroups)
        {

            uo.Usergroups.Remove(ug);
        }

Как мне это исправить?

/ M

1 Ответ

2 голосов
/ 15 февраля 2010

Вы не можете изменять коллекцию во время итерации. Вы можете либо создать коллекцию элементов, которые вы хотите удалить, и удалить их из отношения после цикла foreach, либо выполнить итерацию по коллекции обратно, используя счетчик, например:

   for (int i = uo.Usergroups.Count - 1; i >= 0; i--)
   {
        uo.Usergroups.Remove(uo.Usergroups.ElementAt(i));
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...