使用EF更改数据库中的枚举值

时间:2018-06-18 20:54:51

标签: asp.net asp.net-mvc visual-studio enums

抱歉我的英文,希望你做得很好,我被列入使用MVC的列表情况,我有一个名为student的班级

public class student
{

    [Key]
    public int student_Id { get; set;  }

    public DateTime startdate { get; set; }
    public DateTime enddate { get; set; }
    public statut studentstatut { get; set; }

}
public enum statut
{
  Garden,
  Elementary,
  College,
}

我想编辑班级学生,我可以编辑Id,两个日期,但是当我想编辑enum statut时它不会,它会停留在Garden中,当我在studentstatut中检查我的数据库时它会显示0,我不知道如何使它们变得动态,以便我可以在数据库中看到studentstatut并编辑法规(例如从花园到小学编辑),有人可以帮忙吗?

[HttpPost]
      [ValidateAntiForgeryToken]
    public ActionResult Alimentation(Student Student)
    {
        if (ModelState.IsValid)
        {
            db.Orders.Add(Student);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(Student);
    }

 public ActionResult Edit(int? id)
       {
          if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
     }
  Student student= db.Students.Find(id);
          if (order == null)
           {
             return HttpNotFound();
        }
          return View(student);
      }

    ////POST: /Edit/5
    [HttpPost]
    [ValidateAntiForgeryToken]
     public ActionResult Edit([Bind(Include = "Student_id,startdate,enddate,AtmAmount,Statut")] Student student)
    {
        if (ModelState.IsValid)
        {
            db.Entry(student).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("index");
        }
        return View(student);
    }

1 个答案:

答案 0 :(得分:0)

首先,我将验证您是否从HttpPost Edit方法获取了正确的数据。如果您能够编辑和保存其他字段,则可能是您的客户端控件未正确设置学生对象的正确字段。在该方法中放入断点戳,以验证是否正确设置了studentstatut字段。

如果是这样,并且某种程度上没有保存到数据库上下文中,则可以尝试手动设置该字段,而不是使用EntityState.Modified。您可以通过以下方式做到这一点:

db.Entry(student).studentstatut = student.stdentstatut;

尽管通常是EntityState.Modified应该可以解决问题。