1

なぜ私の問題が起こっているのかを調べていて、困惑しています。それが私がデータ注釈をどのように行ったのか、それとも何をしたのかはわかりません...いくつかのことを試しましたが、賢い人が見つけられるものであることを願っています.

EF5、MVC4 Razor、および MVCScaffolding を使用しています。私はまだすべてにかなり慣れていません。

私の問題は、フォームが送信されて Save メソッドが呼び出されると、モデルはすべての正しいデータとともに投稿されますが、確率オブジェクトを保存するだけでなく、最初に Component テーブル (これはProbabilities の FK です)。この更新には値が渡されていない (id = 0) ため、同時実行チェックが原因でページが失敗します。そして、SQL プロファイラーを使用してのみ、これを見つけることができました。

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 を使用してデータを読み込んで編集しようとしています。データがロードされ、編集可能になり、データは、principityRepository を呼び出す確率コントローラに返されます。

確率コントローラ

[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