1

トレーナー オブジェクトの保存に問題があります。トレーナー以外はすべて保存されました。オブジェクトのトレーニングを確認したところ、すべてのプロパティが入力されています (場所とトレーナーのプロパティも)。エラーは発生しませんが、トレーナー オブジェクトは保存されていません。

これが私のコードです:

   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 Management Studio を開くと. それでも NULL 値が表示されます。しかし、get メソッドを実行すると、正しい値が表示されます。

フィールドがnull可能であるためでしょうか?

4

1 に答える 1

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

すべての助けに感謝し、愚かな答えを申し訳ありません.

于 2012-05-19T16:54:52.643 に答える