У меня есть несколько бизнес-классов, таких как Address, Product, Order, OrderLine. В этом случае у меня есть вопрос о моем классе Order и о том, как он должен быть обновлен в репозитории.Что такое хорошая практика с объектами репозитория и бизнеса?
Класс Order может иметь более 1 OrderLine. Класс выглядит примерно следующим образом:
class Order {
private List<OrderLine> orderLines;
public Address CustomerAddress { get; set; }
public Address DeliveryAddress { get; set; }
public void Add(OrderLine line) {
// stuff to add order line.
}
public void Remove(int index) {
// stuff to remove order line by index.
}
}
Когда нужно получить ордер, я могу сделать следующее:
Order myOrder = Orders.Get(5); // Gets the order with ID 5 from repository.
Теперь я могу добавить или удалить строки заказа по мере необходимости и изменить CustomerAddress или DeliveryAddress.
Когда я хочу, чтобы обновить измененную заказ я могу сделать:
bool updated = order.Update();
Что внутренне вызывает метод Update Распоряжений хранилище как:
public bool Update() {
return Orders.Update(this); // Let repository handle updating of this order.
}
Теперь предположим, что заказ я уже получил с помощью Orders.Get (5) имеет 10 строк порядка, и я изменил 1 строку заказа, добавил 1 строку заказа и удалил 1 строку заказа.
Предположим, что я назначен другой адрес доставки:
myOrder.DeliveryAddress = Addresses.Get(64); // Get address with ID 64 from repository and assign it to order.
Что должно произойти в методе Update ордена репозитария?
Следует ли обновить весь заказ, включая все строки заказа, удалить удаленную строку заказа, сохранить добавленную строку заказа и обновить строку заказа, которая была изменена?
Я немного потерялся здесь, так как он становится очень сложным, когда все эти внутренние элементы (Address and OrderLines) должны быть обновлены, вставлены или удалены.
У кого-нибудь есть предложения?
Большое спасибо заранее :)