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