我在寫我的第一個ASP.NET MVC 5程序與實體框架(EF)內置CRUD操作數據腳手架工作和我有一個問題,如何在子表添加,更新或刪除/從子表上更新父表,而無需在每個子記錄上創建用戶ID & updateDate。如何更新父表時,記錄添加到子表在ASP.NET MVC5實體框架數據支架
我有父表上的用戶ID & updateDate字段。當我使用子表進行CUD操作(添加,更新或刪除)時,我想用userID更新父表,以更新記錄被更改的人員/時間。我如何使用EF Data Scaffolding來做到這一點?由於我對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
}
對不起,但我正在執行一項任務,根除「綁定」的弊端。不要使用它。這有多種原因是不好的:代碼重複,沒有強類型,維護噩夢等。改用視圖模型並保存生命。 '綁定'殺死*小狗和小貓。 –