【问题标题】:Iterating thru the list and updating data can't find the item in the db遍历列表并更新数据在数据库中找不到项目
【发布时间】:2023-03-06 06:30:01
【问题描述】:

我在视图中有一个列表,其中包含需要更新的值。 在调用 http 方法时,我将通过列表组件并在数据库中查找具有正确 Id 的项目并更新 Grade 值。我的问题是我无法从数据库中返回正确的项目,它总是返回 null。我已经通过调试进行了检查,列表中具有我要查找的 Id 的项目具有正确的值,但我无法从 db.xml 中返回该项目。 我也尝试过使用 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();
            }

        }

【问题讨论】:

  • 您遇到错误了吗? .Single 不返回 null - 如果没有匹配项,则会引发异常。
  • 问题是我需要从这个视图模型创建主模型类,然后它工作正常。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 2012-01-07
    相关资源
    最近更新 更多