注册
登录
C#/.net
使用实体框架将 OrderDetail 添加到数据库
返回
使用实体框架将 OrderDetail 添加到数据库
作者:
糖果
发布时间:
2025-01-05 09:37:11 (16天前)
我正在使用 .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)); } 有人可以解释发生了什么吗?
收藏
举报
2 条回复
1#
回复此人
糖果
|
2021-10-25 15-29
Id您想要引用整个对象,而不是引用 。 将OrderDetail作为集合添加到OrderHeader. public class OrderHeader { // other properties public virtual IColletion
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); }
编辑
登录
后才能参与评论