MVC Scaffolding - context.Save()正在尝试更新外键表

时间:2013-02-26 22:25:03

标签: asp.net-mvc razor entity-framework-5 asp.net-mvc-scaffolding

我一直在寻找为什么我的问题正在发生而且我很难过。不确定这是我如何做我的数据注释或者是什么...尝试了几件事,现在只是希望这是你聪明人可以发现的东西。

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

0 个答案:

没有答案