我正在使用 .NET Core 制作 Coffee Shop 應用程式。
我有OrderHeader和OrderDetail物體。我為OrderHeaderand創建了模型類,并OrderDetail使用外鍵連接它們。在控制器中,當我嘗試將資料保存到 時OrderHeader,OrderDetail會發生注意。
這是我的代碼:
[HttpPost]
[ValidateAntiForgeryToken]
[ActionName("Summary")]
public IActionResult SummaryPost(ProductUserVM ProductUserVM)
{
var claimsIdentity = (ClaimsIdentity)User.Identity;
var claim = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);
OrderHeader orderHeader = new OrderHeader()
{
ApplicationUserId = claim.Value,
FullName = ProductUserVM.ApplicationUser.FullName,
OrderDate = DateTime.Now
};
_db.OrderHeader.Add(orderHeader);
_db.SaveChanges();
foreach(var prod in ProductUserVM.ProductList)
{
OrderDetail orderDetail = new OrderDetail()
{
OrderHeaderId = orderHeader.Id,
ProductId = prod.Id
};
_db.OrderDetail.Add(orderDetail);
}
_db.SaveChanges();
return RedirectToAction(nameof(Confirmation));
}
有人可以解釋發生了什么嗎?
uj5u.com熱心網友回復:
Id您想要參考整個物件,而不是參考 。
將OrderDetail作為集合添加到OrderHeader.
public class OrderHeader {
// other properties
public virtual IColletion<OrderDetail> OrderDetail { get; set; }
}
并添加OrderHeader到OrderDetail:
public class OrderDetail {
// other properties
public virtual OrderHeader OrderHeader { get; set; }
}
如果您已經這樣做了,請繼續往下看。
現在不是用 來創建一個新OrderDetail的OrderHeaderId,OrderHeader而是添加一個對的參考。
foreach (var prod in ProductUserVM.ProductList)
{
OrderDetail orderDetail = new OrderDetail()
{
OrderHeader = orderHeader,
ProductId = prod.Id
};
_db.OrderDetail.Add(orderDetail);
}
關系檔案
uj5u.com熱心網友回復:
是的,但請參閱我的模型:
訂單頭模型
public class OrderHeader
{
[Key]
public int Id { get; set; }
public string ApplicationUserId { get; set; }
[ForeignKey("ApplicationUserId")]
public ApplicationUser ApplicationUser { get; set; }
public DateTime OrderDate { get; set; }
[Required]
public string FullName { get; set; }
}
和 OrderDetail 模型:
public class OrderDetail
{
[Key]
public int Id { get; set; }
public int OrderHeaderId { get; set; }
[ForeignKey("OrderHeaderId")]
public virtual OrderHeader OrderHeader { get; set; }
public int ProductId { get; set; }
[ForeignKey("ProductId")]
public virtual Product Product { get; set; }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/335842.html
下一篇:如何避免在不需要時解決服務?
