2012-05-22 37 views
1

我有Customer,Order和OrderItem表。 OrderItem.OrderID指向Order.ID; Order.CustomerID指向Customer.ID,即常见的Customer - > Order - > OrderItem设置。使用实体框架保存复杂视图模型4.3

而我有一个视图模型 - 客户,其中包含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(s)?

谢谢。

回答

1

您只要致电此:

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

,如果一切都在你的映射配置正确EF会理解的关系,正确地先保存客户,检索其标识,并用它来保存相关订单。它将以相同的方式处理订单商品。

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();