2012-05-22 4 views
1

У меня есть таблицы Customer, Order и OrderItem. OrderItem.OrderID указывает на Order.ID; и Order.CustomerID указывает на Customer.ID, то есть на общую настройку Customer -> Order -> OrderItem.Сохранение сложной модели представления с использованием Entity Framework 4.3

У меня есть модель представления - Клиент, который содержит объекты Order, а затем объекты OrderItem.

Если пользователь создает новый Заказчик, новый Заказ и новые OrderItems в представлении, которые затем привязаны к объекту модели представления Customer (содержащему все данные Customer, Order, OrderItem); есть ли способ сохранить эту модель просмотра Customer с помощью EF?

Мое замешательство связано с тем, что, поскольку Заказчик, Заказ, OrderItem (s) - все новые записи; что означает, что Customer.ID (auto-incremented number) еще не был создан (запись еще не сохранена); так как EF знает, какой идентификатор следует использовать при сохранении Order.CustomerID?

Нужно ли сначала сохранить Cusomer, получить Customer.ID, а затем сохранить заказ, а затем получить Order.ID, а затем сохранить OrderItem (s)?

Спасибо.

ответ

1

Вы просто называем это:

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

и если все настроено правильно в вашем отображении EF будут понимать отношения и правильно сохранить клиента во-первых, получить его Id и использовать его для сохранения связанных заказов. Он будет обрабатывать элементы заказа таким же образом.

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