Когда я установил db.Entry(episode).State = EntityState.Deleted
EF удаляет эпизод из моего списка и выдает collection was modified enumeration operation may not execute
.EntityState.Deleted удаляет элементы из моего списка
Вот мой код:
public async Task UpdateAsync(List<Episode> episodes)
{
using (var db = new DbContext())
{
var serie = await db.Series.Include(s => s.Episodes).SingleOrDefaultAsync(s => s.Id == id);
foreach (var episode in serie.Episodes)
{
var modifiedEpisode = episodes.Where(e => e.Id == episode.Id).SingleOrDefault();
//was deleted
if (modifiedEpisode == null)
{
db.Entry(episode).State = EntityState.Deleted;// episode is removed from serie.Episodes throwing exception
continue;
}
}
var addedEpisodes = episodes.Where(v => v.Id == Guid.Empty).ToList();
serie.Episodes.AddRange(addedEpisodes);
await db.SaveChangesAsync();
}
}
Как я могу удалить эпизоды?
Эпизоды уже являются списком, а не IEnumerable, поэтому ToList не будет работать. – MuriloKunze
, являющийся списком, не является проблемой ... проблема в том, что вы удаляете элемент из источника инструкции foreach. Взгляните на http://stackoverflow.com/questions/604831/collection-was-modified-enumeration-operation-may-not-execute, у этого парня был такой же problm –
У меня нет идеи почему, но звоните в список решить проблема (поскольку Episoder - это список). – MuriloKunze