Entitystate.Modified mvc3引用对象未保存

时间:2012-05-18 14:49:36

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

我在保存我的教练对象时遇到问题。 一切都得到了保存,为训练师解决了。 我查看了对象培训,并填写了所有属性。(还有位置和培训师的属性) 我没有收到错误但教练对象没有被保存。

这是我的代码:

   Context db=new Context();

    public void modifieTraining(Training training)
    {
        db.Entry(training.Location).State = EntityState.Modified;
        db.Entry(training.Trainer).State = EntityState.Modified;
        db.Entry(training).State = EntityState.Modified;
        db.SaveChanges();
    }

这是我唯一的目标:

  @Html.DropDownList("trainer", new SelectList(ViewBag.Trainer, "TrainerId", "Firstname"), "Selecteer een trainer")
  @Html.TextBoxFor(model => model.Location.Address)
  @Html.TextBoxFor(model=>model.Location.City)
  ...

稍后在我的控制器中:

  public ActionResult EditTraining(int id, Training training, string trainer)
    {
            if (trainer != null && trainer!="Selecteer een trainer" )
            {
                training.Trainer = repository.getTrainer(Convert.ToInt32(trainer));
            }
            repository.modifieTraining(training);

            return RedirectToAction("Index");
     }

因为一些奇怪的原因,当我重新启动机器一切都很顺利。 但是当我打开sql server管理工作室时。它仍然显示我的NULL值。 但是当我执行get方法时,会显示正确的值。

可能是因为该字段可以为空吗?

1 个答案:

答案 0 :(得分:1)

对不起第一个答案。 但我现在发现了这个问题。 问题是我没有真正修改任何东西。 我只是在对象上添加了一个训练器,但是trainerobject本身没有被修改,因此没有任何改变。

模型是这样的:

  public class Training
  {
    [Key]
    public int TrainingId { get; set; }

    public Trainer Trainer{get; set;}
    ....
  }

在模型中添加:

  public int? TrainerId{get; set;}

控制器:

  public ActionResult EditTraining(int id, Training training, string trainer)
  {
        if (trainer != null && trainer!="Selecteer een trainer" )
        {
            training.Trainer = repository.getTrainer(Convert.ToInt32(trainer));
            trainingDetail.TrainerId = trainingDetail.Trainer.TrainerId;
         }
         repository.modifieTraining(training);
  }

感谢所有的帮助,并对愚蠢的回答感到抱歉。