遍历列表和更新数据在数据库中找不到该项目

时间:2018-10-03 15:10:12

标签: c# asp.net-mvc entity-framework entity-framework-6

我在视图中有一个列表,其中的值需要更新。 当调用http方法时,我将遍历列表组件,并在数据库中查找具有正确ID的项目并更新Grade值。我的问题是我无法从数据库返回正确的项目,它总是返回null。我已经通过调试进行了检查,列表中的项目以及我要查找的ID具有正确的值,但是我无法从db返回该项目。 我也尝试了sql原始查询,它给了我同样的错误。 这是我的代码-var考试始终为null:

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 :(得分:0)

问题是我试图使用视图模型类进行数据库操作。 从视图模型添加创建模型类后,一切正常。