我有Customer,Order和OrderItem表。 OrderItem.OrderID指向Order.ID;和Order.CustomerID指向Customer.ID,即普通客户 - >订单 - > OrderItem设置。
我有一个视图模型 - Customer包含Order对象,然后是OrderItem对象。
如果用户在视图上创建新的Customer,新Order和新OrderItems,然后绑定到Customer视图模型对象(包含所有Customer,Order,OrderItem数据);有没有办法使用EF保存这个客户视图模型?
我的困惑来自于,因为Customer,Order,OrderItem都是新记录;这意味着尚未生成Customer.ID(自动递增的数字)(记录尚未保存);那么EF如何知道在保存Order.CustomerID时使用的ID?
我是否需要首先保存Cusomer,获取Customer.ID,然后保存Order,然后获取Order.ID然后保存OrderItem?
感谢。
答案 0 :(得分:1)
你只需要这样说:
context.Customers.Add(customer);
context.SaveChanges();
如果在映射中正确配置了所有内容,EF将了解关系并正确保存客户,检索其ID并将其用于保存相关订单。它将以相同的方式处理订单商品。
答案 1 :(得分:0)
只要在保存之前建立对象关系就行了
customer.Orders = new List<Orders>();
customer.Orders.Add(order);
order.OrderItems = new List<OrderItems>();
order.OrderItems.Add(orderItem);
context.Customer.Add(customer);
context.SaveChanges();