Если вы точно не уверены в том, что делаете, я не предлагаю вам обрабатывать исключение, возвращая 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;
}