Entity Framework(EF)データスキャフォールディングで作成されたCRUDオペレーションを使用した最初のASP.NET MVC 5プログラムを作成しています私は子供のレコードのuserID & updateDateを作成せずに、子テーブルに子テーブルが追加、更新、または削除されたときに親テーブルを更新する方法について質問します。ASP.NET MVC5の子テーブルにレコードが追加されたときの親テーブルの更新方法Entity Frameworkデータスキャフォールディング
私は親テーブルのuserID & updateDateフィールドを持っています。子テーブルを使ってCUD操作(追加、更新、または削除)を行うと、誰か/レコードが変更されたことを反映するために、親テーブルをuserID & updateDateで更新します。 EFデータスキャフォールディングを使用してこれを行うにはどうすればよいですか?私はMVC & EFの経験があまりありませんので、コントローラでこれがどのように行われているかをコードで確認できたら、感謝します。現時点では、特定のビューに対して個別のテーブルのモデルを使用して、EFデータスキャフォールディングで新しい子レコードを追加できます。私はいくつかの検索を行い、両方のモデルがビューモデルである場合、複数のテーブルでモデルバインディングを行う方法を見つけましたが、EFデータスキャフォールディングを使用して親テーブルを正常に更新した後に、子テーブルへの追加または更新。また、SaveChanges(false)を使用した記事を見つけました& AcceptAllChanges()。子レコードを追加または更新した後に親レコードを更新する方法を理解したら便利です。私はあなたの提案について事前に感謝します。
コントローラー:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "crossWalkID, location,
widthOfLeg, legDirection, crosswalkType, qtyBasicOrHatched12,
qtyLadderBar16, qtyLadderBar24, cost")] tblStripingQuantity
tblStripingQuantity)
{
// Also update UserID & UpdateDate in the tblCrossWalk when
// tblStrippingQuantity is updated successfully - Where to do this???
if (ModelState.IsValid)
{
db.tblStripingQuantities.Add(tblStripingQuantity); // Add a new child record
// to child table
db.SaveChanges();
return RedirectToAction("Index", "tblCrosswalks", new { id =
tblStripingQuantity.crosswalkID });
}
return View(tblStripingQuantity); // ModelState is invalid; return to view
}
申し訳ありませんが、私は「バインド」の悪用の世界を根絶する使命にあります。それを使用しないでください。コードの重複、強く型付けされていないメンテナンスの悪夢など、さまざまな理由で悪いことです。代わりにビューモデルを使用し、人生を救いましょう。 'Bind'は*両方の子犬と子猫を殺します。 –