public async Task <Updated <TodoItem> > UpdateAsync(long id, TodoItem todoItem) { if (todoItem is null) { throw new ArgumentNullException(nameof(todoItem)); } if (todoItem.Id != id) { return(Updated.Invalid); } _todoContext.Entry(todoItem).State = EntityState.Modified; try { await _todoContext.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!TodoItemExists(id)) { return(Updated.NotFound); } throw; } return(Updated.Accepted(todoItem)); }