实体状态.未保存修改的 mvc3 引用对象
本文关键字:mvc3 引用 对象 修改 状态 保存 实体 | 更新日期: 2023-09-27 18:34:40
我在保存训练器对象时遇到问题。一切都被保存下来,除了教练。我查看了对象训练,所有属性都已填充。(也是位置和培训师的属性(我没有收到错误,但未保存训练器对象。
这是我的代码:
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服务器管理工作室时。它仍然向我显示一个空值。但是当我执行 get 方法时,会出现正确的值。
可能是因为该字段可为空吗?
请原谅我的第一个答案。但是我现在发现了问题。问题是我并没有真正修改任何东西。我只是向对象添加了一个训练器,但训练器对象本身没有被修改,所以没有任何变化。
模型是这样的:
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);
}
感谢所有的帮助,并为愚蠢的答案感到抱歉。