Order and OrderDetail是使用Master-detail的经典示例。我一直在寻找这种情况的最佳解决方案。是的,有很多解决方案,但是差异很大。
我的问题是关于在同一视图上创建Order和OrderDetails。
在我的创建订单屏幕上,有关于我的订单的字段,以及一个包含OrderDetails的表,可以在其中添加它们。我正在使用Guid作为ID,这变得更加容易。
但是问题是:没有订单,我无法在数据库中添加OrderDetails。我该怎么办?
你们有什么建议?
仅在一个请求中发送订单,包括订单详细信息列表?
我将采用此方法,EF可以直接添加带有嵌套实体的实体,它们将保存到相应的数据库表中。
这是一个测试示例:
订单
public class Order
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public List<OrderDetail> OrderDetails { get; set; }
}
OrderDetail
public class OrderDetail
{
[Key]
public int OrderDetailId { get; set; }
public int OrderId { get; set; }
public string Price { get; set; }
public Order Order { get; set; }
}
Controller
public IActionResult Index()
{
var order = new Order
{
Name = "AA",
OrderDetails = new List<OrderDetail>
{
new OrderDetail{ Price = "22"},
new OrderDetail{ Price = "33"}
}
};
_context.Order.Add(order);
_context.SaveChanges();
return View();
}
结果: