考虑以下结构:Customer-> Orders-> OrderLines-> Quantity和Customer是聚合根。综合根
假设我们想改变一个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 2012-02-23 15:44:21
我回应@ Domenic对最后一句话的赞美。但是,我怀疑有些人可能会错过它的观点。考虑一批“客户”;你想检索一个给定的客户端,所以你的表达式是'clients.First(c => c.ID == client.ID)'。在大多数情况下,这个表达式会返回一个引用*给变量'client'!*所引用的同一个对象。所以不是像这样的语句:'clients.First(c => c.ID == client.ID)。 UpdateAddress(newAddress);'你最好用这个:'client.UpdateAddress(newAddress);'。 BrokenGlass,如果我错了,请纠正我。 – phoog 2012-02-23 15:56:04