我有幾個業務類,如地址,產品,訂單,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.
應該發生什麼在訂單倉庫的更新方法?
是否應該更新整個訂單(包括所有訂單行),刪除已刪除的訂單行,保存已添加的訂單行並更新已更改的訂單行?
我在這裏有點迷路,因爲當所有這些內部項目(地址和訂單行)都必須更新,插入或刪除時,它變得非常複雜。
有人有什麼建議嗎?
預先感謝您:)