我一直在寻找我的问题发生的原因,我很困惑。不知道这是我做数据注释的方式还是什么......尝试了几件事,现在只是希望你们中的一个聪明人能发现它。
我们正在使用 EF5、MVC4 Razor 和 MVCScaffolding。我对这一切还是很陌生。
我的问题是,当表单提交并调用 Save 方法时,模型会发布所有正确的数据,但似乎不是只保存概率对象,而是试图在 Component 表上进行更新(其中是概率的 FK)。此更新没有传入任何值 (id = 0),因此页面由于并发检查而失败。而且我们只能通过使用 SQL Profiler 才能找到这一点。
有人可以告诉我我做错了什么,因为我不相信 FK 表应该更新。请在下面查看我的所有代码......非常感谢任何帮助或指导:)
我的模型如下所示:
public class Probability
{
[Key]
public int ProbabilityId { get; set; }
public int ComponentId { get; set; }
[ForeignKey("ComponentId")]
public virtual Component Component { get; set; }
public int PlantId { get; set; }
[ForeignKey("PlantId")]
public virtual Plant Plant { get; set; }
// Data Entered into the database
public decimal RiskMinorPercentage { get; set; }
public decimal RiskMajorPercentage { get; set; }
public decimal RiskCatastrophicPercentage { get; set; }
我们正在尝试使用 Telerik Grid 来加载数据并对其进行编辑。数据加载并且是可编辑的并且数据返回到调用probabilityReposity的probabilityController。
概率控制器
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Save(Probability probability)
{
if (TryUpdateModel(probability))
{
probabilityRepository.InsertOrUpdate(probability);
probabilityRepository.Save();
}
return RedirectToAction("Index", probabilityRepository.All.ToList());
}
和概率存储库
public void InsertOrUpdate(Probability probability)
{
if (probability.ProbabilityId == default(int)) {
context.Probabilities.Add(probability);
} else
{
context.Entry(probability).State = EntityState.Modified;
}
}