откройте свой php.ini, убедитесь, что он установлен:
display_errors = On
перезагружает ваш сервер.
tasks.Add(await MyContext.SaveChangesAsync(););
должно быть без ожидания
tasks.Add(MyContext.SaveChangesAsync());
И ваш код начинает работать. (выражение await возвращает асинхронный результат, без await возвращает задание, которое будет выполнено позже) Но, как уже упоминалось, не следует выполнять SaveChangesAsync () каждый раз, когда объект добавляется в контекст, это может быть сделано для всех добавленных объектов за один раз. [ 113]
Если вы точно не уверены в том, что делаете, я не предлагаю вам обрабатывать исключение, возвращая 0. Я всегда предпочитаю обрабатывать исключение на самом внешнем стеке и регистрировать исключение, а затем предпринимать надлежащие действия. И если это возможно, я предлагаю вам использовать промежуточное программное обеспечение для обработки ошибок (это зависит от используемой вами структуры, подхода и ситуации).
С другой стороны, вам не нужно обновлять каждый объект один за другим. Вы можете позвонить SaveChangesAsync
после всех выполненных операций.
try
{
foreach (Person person in persons)
{
person.Status = Status.Finish;
person.Changed = DateTime.Now;
person.Role = Role.Worker;
MyContext.Persons.AddOrUpdate(person);
}
var affectedRows = await MyContext.SaveChangesAsync();
return (int)(persons.Count == affectedRows);
}
catch (EntityCommandExecutionException ex)
{
return 0;
}