2012-05-22 43 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();