我一直在寻找为什么我的问题正在发生而且我很难过。不确定这是我如何做我的数据注释或者是什么...尝试了几件事,现在只是希望这是你聪明人可以发现的东西。
我们正在使用EF5,MVC4 Razor和MVCScaffolding。我对这一切还很陌生。
我的问题是,当表单提交并调用Save方法时,模型会发布所有正确的数据,但看起来它不是只保存概率对象而是试图对组件进行更新。 table(这是概率的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。
probabilityController
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Save(Probability probability)
{
if (TryUpdateModel(probability))
{
probabilityRepository.InsertOrUpdate(probability);
probabilityRepository.Save();
}
return RedirectToAction("Index", probabilityRepository.All.ToList());
}
和 probabilityRepository
public void InsertOrUpdate(Probability probability)
{
if (probability.ProbabilityId == default(int)) {
context.Probabilities.Add(probability);
} else
{
context.Entry(probability).State = EntityState.Modified;
}
}