私のmvcアプリケーションでは、関連するデータがたくさんあるので、その関連データの編集/更新を可能にするメソッドを記述する必要があります。 ViewModel。私はこれを行うメソッドを作成しようとしましたが、正しく動作するようにはできません。私のアプローチが正しいとは確信が持てません。ここで 関連するデータの編集メソッドを書くにはどうすればいいですか?
は私のコードです:コントローラコード
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(FullVesselViewModel model)
{
var vessel = new tbl_vessels
{
vessel_idx = model.vessel_idx,
vessel_name = model.vessel_name
};
var vessel_spec = new tbl_vessel_spec
{
spec_idx = model.spec_idx,
bhp = model.bhp
}
using (var context = new dataEntities())
{
context.Entry(vessel).State = EntityState.Modified;
context.Entry(vessel_spec).State = EntityState.Modified;
context.SaveChanges();
return RedirectToAction("Index");
}
}
私の最初かのようにこれらの変数をcomitting、私のviewmodelを宣言して、二つの関連エンティティを打破し、変数に保存することでした変更を保存してから変更を保存します。私の上記のアプローチは並行性エラーを返します。私はエンティティのインデックスをいくつかの隠しフィールドに格納して、それが役立つかどうかを確認しましたが、運がなかったのです。
ビュー
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.HiddenFor(model => model.vessel_idx)
@Html.HiddenFor(model => model.spec_idx)
...input fields etc ...
}
私はシナリオのこの種のために正しい思考や簡素に行うことができる設計何かの上に私を持っていますか?
私が取得エラー)(次のようであるとのSaveChangesでトリガーされます。
Entity Framework: “Store update, insert, or delete statement affected an unexpected number of rows (0).”
モデル - ビュー - コントローラタグはパターンに関する質問のためであることに注意してください。 ASP.NET-MVCの実装には特定のタグがあります。 –
どのような同時実行エラーが発生しましたか?通常、同様のケースでは、lambdaまたはLINQの照会で一致したデータが最初に見つかります。データが存在する場合は、変更内容をDBに保存するために 'this.UpdateModel'および' context.SaveChanges() 'を実行します。 –
@TetsuyaYamamotoのエラーを追加しました – Yanayaya