【问题标题】:Change enum value in Database using EF使用 EF 更改数据库中的枚举值
【发布时间】:2018-06-18 20:54:51
【问题描述】:

对不起我的英语,希望你一切都好,我被困在使用 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,两个日期,但是当我想编辑枚举状态时它不会,它留在花园中,当我在 studentstatut 中检查我的数据库时,它显示 0,我不知道如何使它们动态化,以便我可以在数据库中看到 studentstatut 并编辑 statut(例如从花园编辑到小学),有人可以帮忙吗?

[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);
    }

【问题讨论】:

  • 请告诉我们您更改studentstatut值的代码
  • 你能添加你的映射器代码吗?你如何将值映射到studentstatut / 你如何从statut获取值
  • 在类中使用静态整型变量,将它们作为状态保存在数据库中。然后,当您要使用变量时,请使用字典 int, string 进行映射
  • 这是我在编辑视图中使用的 @Html.DropDownList("Statut", new SelectList(Enum.GetValues(typeof(statut))), "Statut", new { @class= "表单控件" })
  • 请使用您问题上的编辑链接添加更多信息。如何保存对数据库的更改?如果您需要帮助,我们需要更多代码

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


【解决方案1】:

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

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

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

虽然通常 EntityState.Modified 应该可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多