我有几个业务类,如地址,产品,订单,OrderLine。在这种情况下,我有一个关于我的Order类以及如何在存储库中更新的问题。存储库和业务对象有什么好的做法?
Order类可以有多个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();
在内部调用订单的更新方法存储库,如:
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.
应该发生什么在订单仓库的更新方法?
是否应该更新整个订单(包括所有订单行),删除已删除的订单行,保存已添加的订单行并更新已更改的订单行?
我在这里有点迷路,因为当所有这些内部项目(地址和订单行)都必须更新,插入或删除时,它变得非常复杂。
有人有什么建议吗?
预先感谢您:)