1

我有 Customer、Order 和 OrderItem 表。OrderItem.OrderID 指向 Order.ID;并且 Order.CustomerID 指向 Customer.ID,即常见的 Customer -> Order -> OrderItem 设置。

我有一个视图模型——Customer,它包含 Order 对象和 OrderItem 对象。

如果用户在一个视图上创建了一个新的 Customer、新的 Order 和新的 OrderItems,然后将它们绑定到 Customer 视图模型对象(包含所有 Customer、Order、OrderItem 数据);有没有办法使用 EF 保存这个客户视图模型?

我的困惑来自这样一个事实,因为 Customer、Order、OrderItem(s) 都是新记录;这意味着尚未生成 Customer.ID(自动递增的数字)(尚未保存记录);那么 EF 如何知道在保存 Order.CustomerID 时使用什么 ID?

我是否需要先保存客户,获取 Customer.ID,然后保存 Order,然后获取 Order.ID,然后保存 OrderItem(s)?

谢谢。

4

2 回答 2

1

你只需调用这个:

context.Customers.Add(customer);
context.SaveChanges();

如果您的映射中的所有内容都正确配置,EF 将理解关系并首先正确保存客户,检索其 Id 并将其用于保存相关订单。它将以相同的方式处理订单项目。

于 2012-05-22T10:43:46.763 回答
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();
于 2012-05-22T11:00:13.503 回答