Viola el diseño impulsado por el dominio, creo que los repositorios no deben hacer referencia entre sí. Además, no debe mapear 1: 1 entre el repositorio y la tabla de la base de datos.
Este es el concepto de Aggregate
y AggregateRoot
. Ejemplo, suponga la base de datos tiene 2 tablas:
Order
OrderLine
Con relación 1: n, (Orden, OrderLine) se define como un agregado porque OrderLine no puede vivir solo sin orden. Y en este caso, Order es la raíz de este agregado.
Con esto, en lugar de crear dos repositorios:
OrderRepository
OrderLineRepository
Sólo debe tener un solo OrderRepository
para cuidar de todo el agregado, se utiliza la carga en cascada, insertar y eliminar con OrderLine
Así que en En su caso, debe considerar si tiene repositorios de direcciones/ciudades/regiones/países existentes o no.
Esperanza esta ayuda
sí ayuda a excepción de la forma algunas cosas se están haciendo en mi sistema. Tenemos provincias/estados y países normailizados. Entonces, si un usuario o tienda necesita cargar sus datos de dirección y tiene referencias a las tablas que usaría el repositorio de región/país. ¿Está bien cargar diferentes versiones de regiones/países ya que en este contexto las usaré más como objetos de valor que como entidades? –
gracias por esta simple explicación. la bombilla finalmente vino por mí. :) – kman