удалить объекты Entity, которые ссылаются на другие объекты (таблицы отношений внешнего ключа) - PullRequest
0 голосов
/ 15 ноября 2011
public void DeleteGenreList()
{
    var genreList = entities.Genres.AsEnumerable();

    foreach (var oneGenre in genreList)
    {

        foreach (var onesong in oneGenre.Songs)
        {
            entities.Songs.DeleteObject(onesong);
        }

        entities.Genres.DeleteObject(oneGenre);
    }
}

Я не могу удалить свой объект жанра, который содержит объекты песни, потому что я получаю коллекцию, была изменена ошибка, пожалуйста помогите thx!

Ответы [ 3 ]

0 голосов
/ 15 ноября 2011

Нельзя изменить коллекцию, пока она перечисляется через цикл For Each.

Это должно работать:

for (int i=0;i<entities.Songs.Count;i++)
{
       entities.Songs.DeleteObject(entities.Songs[i]);
       i--;
}
0 голосов
/ 15 ноября 2011

если отношение между жанром и песней помечено как Cascade delete (в отображении модели и в базе данных), то вы должны просто иметь возможность удалить жанр, а EF позаботится об удалении песен ...

0 голосов
/ 15 ноября 2011

Эта проблема не связана с внешним ключом, вы не можете удалить объект, который обрабатывается в каком-то цикле.

Вы можете использовать что-то вроде этого:

var genreList = entities.Genres.ToList();

genreList.ForEach(x=>x.Songs.Clear());    
entities.Genres.Clear();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...