CRUD добавление новой строки вместо обновления - PullRequest
0 голосов
/ 16 июня 2019

У меня проблема с обновлением данных в моем приложении .Net.Когда я пытаюсь обновить, он создает новую строку с новым идентификатором вместо обновления существующего.

Я не видел, в чем проблема.Может быть, кто-то может помочь с разрешением.

Вот метод от контроллера:

     public JsonResult SaveDataInDatabase (StudentViewModel model)
    {
        var result = false;
        try
        {
            if (model.StudentId > 0)
            {
                tblStudent Stu = db.tblStudent.SingleOrDefault(x => x.IsDeleted == false && x.StudentId == model.StudentId);
                Stu.StudentName = model.StudentName;
                Stu.Email = model.Email;
                Stu.DepartmentId = model.DepartmentId;
                db.SaveChanges();
                result = true;
            }
            else
            {
                tblStudent Stu = new tblStudent();
                Stu.StudentName = model.StudentName;
                Stu.Email = model.Email;
                Stu.DepartmentId = model.DepartmentId;
                Stu.IsDeleted = false;
                db.tblStudent.Add(Stu);
                db.SaveChanges();
                result = true;
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
        return Json(result, JsonRequestBehavior.AllowGet);
    }

И функция jQuery:

      $("#SaveStudentRecord").click(function () {
    var data = $("#SubmitForm").serialize();
    $.ajax({
        type: "Post",
        url: "/Home/SaveDataInDatabase",
        data: data,
        success: function (result) {
            alert("Success!..");
            window.location.href = "/Home/index";
            $("#MyModal").modal("hide");
        }
    })
})

Вот представление модели:

      public class StudentViewModel
{
    public int StudentId { get; set; }

    public string StudentName { get; set; }

    public string Email { get; set; }

    public bool? IsDeleted { get; set; }

    public int? DepartmentId { get; set; }

    public String DepartmentName { get; set; }
}

Метод GetStudentByID:

      public JsonResult GetStudentById (int StudentId)
    {
        tblStudent model = db.tblStudent.Where(x => x.StudentId == StudentId).SingleOrDefault();
        string value = string.Empty;
        value = JsonConvert.SerializeObject(model, Formatting.Indented, new JsonSerializerSettings
        {
            ReferenceLoopHandling = ReferenceLoopHandling.Ignore
        });
        return Json(value, JsonRequestBehavior.AllowGet);
    }

1 Ответ

0 голосов
/ 16 июня 2019

Как вы упомянули в комментарии, изменение кода на это будет работать

tblStudent Stu = db.tblStudent.FirstOrDefault(x => x.IsDeleted == false && x.Email == model.Email);
if (Stu != null)
{
     Stu.StudentName = model.StudentName;
     Stu.Email = model.Email;
     Stu.DepartmentId = model.DepartmentId;
     db.Entry(Stu).State = EntityState.Modified;
     db.SaveChanges();
     result = true;
 }
 else
 {
     tblStudent Stu = new tblStudent();
     Stu.StudentName = model.StudentName;
     Stu.Email = model.Email;
     Stu.DepartmentId = model.DepartmentId;
     Stu.IsDeleted = false;
     db.tblStudent.Add(Stu);
     db.SaveChanges();
     result = true;
  }

Просто убедитесь, что столбец StudentId имеет автоприращение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...