У меня есть несколько бизнес-классов, таких как 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 репозитория Orders, например:
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.
Что должно произойти в методе обновления репозитория заказов?
Следует ли обновить весь заказ, включая все строки заказа, удалить удаленную строку заказа, сохранитьСтрока заказа, которая была добавлена, и обновить строку заказа, которая была изменена?
Я немного растерялся, потому что это становится очень сложным, когда все эти внутренние элементы (Address и OrderLines) должны быть обновлены, вставлены или удалены.
У кого-нибудь есть предложения?
Заранее большое спасибо:)