我在保存我的教练对象时遇到问题。 一切都得到了保存,为训练师解决了。 我查看了对象培训,并填写了所有属性。(还有位置和培训师的属性) 我没有收到错误但教练对象没有被保存。
这是我的代码:
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方法时,会显示正确的值。
可能是因为该字段可以为空吗?
答案 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);
}
感谢所有的帮助,并对愚蠢的回答感到抱歉。