Pregunta

Estoy mirando DDD y tengo algunos pensamientos. En un sitio de compras tengo el pedido típico.

public class Order
{
    public ICollection<OrderRow> OrderRows { get; set; }
    public ICollection<Payment> Payments { get; set; }
    ...
}

Los pagos parecen ser naturales para colocar en el pedido. Al realizar un pedido o trabajar con el pedido, los pagos son parte del pedido.

Pero más tarde un administrador quiere manejar los pagos por separado. Por ejemplo, en la interfaz de administración tiene una lista de pagos que deben manejarse.

¿Cómo debería hacer esto? ¿Deben eliminarse los pagos del pedido y ser su propio agregado raíz?

¿Fue útil?

Solución

Entiendo que los agregados pueden y se superpondrán, lo que le permitirá definir el agregado que tiene más sentido para el contexto comercial de la operación actual.

Entonces, en este caso, sí, cuando se trabaja en términos de orden, expondrá los pagos como parte del agregado de pedidos, pero esto no le impide tener una representación de pago dedicada que exponga el pago como una raíz agregada.

Otros consejos

Creo que la entidad de pago no pertenece al agregado de pedidos. Como escribió, tiene funcionalidad que funciona con los pagos por separado. Significa que los pagos no se usan solo en el contexto del orden. Significa que los pagos no pertenecen al agregado de pedidos :).
Sin embargo, es posible tener propiedad de pagos en la clase de orden, incluso si no es parte del agregado de pedidos.

Si un pago no puede existir sin un pedido, entonces el pago no es una raíz agregada.

Si no se trata de una raíz agregada, la carga de los objetos de pedido apropiados desde un órdenePository y operando sobre las entidades de pago dentro de la integridad DDD.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top