次の構造を考慮してください。Customer-> Orders-> OrderLines-> QuantityおよびCustomerは集約ルートです。集合ルート
1つのOrderLineの数量を変更したいとしたら、どうすればよいでしょうか?
public ChangeQuantity(Order order, OrderLine orderLine, int quantity)
{
order.OrderLines.First(...).Quantity = quantity;
}
または実装は次のようになります:
public ChangeQuantity(Order order, OrderLine orderLine, int quantity)
{
order.ChangeQuantity(orderLine, quantity);
}
+1最後の文です。 – Domenic
私は最後の文に対するDomenicの賞賛をエコーします。しかし、私はいくつかは、そのポイントを見逃すかもしれないと思う。 'Clients'のコレクションを考えてみましょう。与えられたクライアントを取得したいので、あなたの式は 'clients.First(c => c.ID == client.ID)'です。ほとんどの場合、この式は 'client'変数によって参照される同じオブジェクトに参照*を返します!*このような文ではなく、' clients.First(c => c.ID == client.ID)です。 UpdateAddress(newAddress); 'これでよりうまくいく:' client.UpdateAddress(newAddress); '。私が間違っている場合、私を修正してください。 – phoog