1

我一直在寻找我的问题发生的原因,我很困惑。不知道这是我做数据注释的方式还是什么......尝试了几件事,现在只是希望你们中的一个聪明人能发现它。

我们正在使用 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;
        }
    }
4

0 回答 0