Вы не можете этого сделать.EF Core (как и EF 6 ранее) не является поточно-ориентированным.
У вас есть для ожидания задачи перед началом следующей
var tasks = events.Select(async entity =>
{
await Task.Run(() => Context.Entry(entity).Property(x => x.Attendance).IsModified = true);
await Context.SaveChangesAsync();
});
await Task.WhenAll(tasks);
Здесь вы запускаете несколько задач параллельно и ожидаете их.Вам придется зацикливаться на этом
foreach(var entity in events)
{
Context.Entry(entity).Property(x => x.Attendance).IsModified = true;
});
await Context.SaveChangesAsync();
Не совсем понятно, почему вы хотите сохранять его событие за событием (следовательно, пример изменился, чтобы сделать все измененные флаги перед вызовом SaveChangesAsync()
), так как это довольно неэффективно.Имеет больше смысла обновить все свойства, а затем запустить SaveChanges, так как EF Core сохранит все измененные / отслеживаемые объекты при сохранении изменений.Также проще выполнить откат, когда что-то идет не так (операция в SaveChangesAsync происходит в рамках транзакции)