带有删除相关对象的InvalidOperationException

时间:2010-02-15 13:32:21

标签: entity-framework

我正在尝试删除属于一个“用户”的所有“用户组”,然后添加新的“用户组”。

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

    }

如果此处有多个用户组,则会抛出异常:

        foreach(Usergroup ug in uo.Usergroups)
        {

            uo.Usergroups.Remove(ug);
        }

我该如何解决这个问题?

/ M

1 个答案:

答案 0 :(得分:2)

在迭代过程中,您无法修改集合。您可以构建一个要删除的项目集合,并在foreach循环后从关系中删除它们,或者使用类似的计数器向后遍历集合:

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