public async Task <IActionResult> Edit(string id, EditModel quizModel) { Quiz quiz = (Quiz)quizModel; quiz.OwnerId = User.FindFirstValue(ClaimTypes.NameIdentifier); if (id != quiz.Id) { return(NotFound()); } if (ModelState.IsValid) { try { using (var transcation = await _dao.BeginTtransaction()) { await _dao.Update(quiz); await _daoQuestion.DeleteAllWithId(quizModel.RemovedQuestions); await _daoQuestion.UpdateAll(quiz.Questions.Where(q => q.Id != null) .Select((q, index) => { q.QuizId = quiz.Id; q.Number = index + 1; return(q); }).ToArray()); await _daoQuestion.AddAll(quiz.Questions.Where(q => q.Id == null) .Select((q, index) => { q.QuizId = quiz.Id; q.Number = index + 1; return(q); }).ToArray()); transcation.Commit(); } } catch (DbUpdateConcurrencyException) { return(Problem()); } return(RedirectToAction(nameof(Index))); } return(View(quiz)); }