使用Entity Framework 4.3保存复杂视图模型

时间:2012-05-22 10:18:17

标签: asp.net-mvc-3 entity-framework-4.3

我有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?

感谢。

2 个答案:

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