Итерация по списку и обновление данных не может найти элемент в БД - PullRequest
0 голосов
/ 03 октября 2018

У меня есть список в представлении со значениями, которые необходимо обновить.При вызове метода http я перебираю компоненты списка и ищу в базе данных элемент с правильным Id и обновляю значение Grade.Моя проблема в том, что я не могу вернуть нужный элемент из базы данных, он всегда возвращает ноль.Я проверил с помощью отладки, элемент из списка с идентификатором, который я ищу, имеет правильное значение, но я не могу вернуть элемент из базы данных.Я также попытался с сырым запросом sql, и он дает мне ту же ошибку.Это мой код - экзамен var всегда пуст:

public ActionResult UpdateExams(ExamsList examList)
        {
            var examVM = new ExamViewModel
            {
                Professor = _context.Professor.ToList()
            };

            examVM.ExamsList = examList;

            if (!ModelState.IsValid)
            {
                var GradesList = new List<int>();
                for (int i = 5; i <= 10; i++)
                {
                    GradesList.Add(i);
                }

                var GradesListSL = new SelectList(GradesList);

                return PartialView("ExamsTable", examList);

            }

            try
            {
                for (int i = 0; i < examList.ExamDetails.Count; i++)
                {
                      var exam = _context.Exam.Single(e => e.Id == examList.ExamDetails[i].Id);
//                    var exam = _context.Database.SqlQuery<Exam>(@"SELECT Id as Id,Grade as Grade
//FROM Exam  
//WHERE Id={0})
//", examList.ExamDetails[i].Id).ToList();

                        exam.Grade = examList.ExamDetails[i].Grade == 0 ? exam.Grade : examList.ExamDetails[i].Grade;


                }
                //  _context.SaveChanges();

                TempData["InsertingExam"] = "Success!";
                // return RedirectToAction("Create", "Exams");
                return Json(new { redirectTo = Url.Action("Edit", "Exams") });
            }
            catch (System.Data.Entity.Infrastructure.DbUpdateException ex) //DbContext
            {

                string exception = ex.StackTrace + ex.Message;
                ModelState.AddModelError("Error", exception);
                return View(examVM);
                throw;
            }

            catch (Exception ex)
            {

                string exception = ex.StackTrace + ex.Message;
                ModelState.AddModelError("Error", exception);
                return View(examVM);
                throw;
            }
            finally
            {
                _context.SaveChanges();
            }

        }

1 Ответ

0 голосов
/ 04 октября 2018

Проблема заключалась в том, что я пытался выполнить операцию базы данных с классом модели представления.После того, как я добавил создание класса модели из модели представления, все работало просто отлично.

...