388 votos

¿Qué ' s una raíz agregada?

Trato de poner mi cabeza en cómo usar correctamente el patrón repositorio. El concepto central de una raíz agregado sigue apareciendo. Cuando buscar ayuda con una raíz que agregada es la web y desbordamiento de pila, sigo encontrando las discusiones sobre los muertos y los enlaces a páginas que se supone que contienen definiciones de base.

En el contexto del patrón del repositorio, ¿qué es una raíz agregada?

266voto

Jeff Sternal Puntos 30147

En el contexto del modelo de depósito, las raíces de agregado son los únicos objetos de su código de cliente de cargas desde el repositorio.

El repositorio encapsula el acceso a los objetos secundarios - a partir de una llamada perspectiva de la carga automáticamente a ellos, ya sea al mismo tiempo la raíz se carga o cuando son realmente necesarios (como con carga diferida).

Por ejemplo, usted podría tener un Order objeto que encapsula las operaciones en varios LineItem objetos. Su código de cliente nunca carga la LineItem objetos directamente, solo el Order que los contiene, que sería la raíz agregado para que parte de su dominio.

176voto

Jason Puntos 125291

De Evans DDD:

Un AGREGADO es un grupo de objetos asociados que nos tratan como una unidad para el propósito de los cambios de datos. Cada AGREGADO tiene una raíz y una frontera. El límite que define lo que está dentro del AGREGADO. La raíz es una sola ENTIDAD específica contenida en el total.

Y:

La raíz es el único miembro de la suma que fuera de los objetos se pueden organizar las referencias a[.]

Esto significa que el conjunto de las raíces son los únicos objetos que pueden ser cargados desde un repositorio.

Un ejemplo es un modelo que contiene un Customer entidad y un Address entidad. Nunca podríamos acceder a un Address entidad directamente a partir del modelo como no tiene sentido sin el contexto de un asociado Customer. Así que podríamos decir que Customer y Address juntos forman un agregado y que Customer es un agregado de la raíz.

31voto

F.Aquino Puntos 6688

Imagine que usted tiene una Computadora de la entidad, esta entidad no puede vivir sin su entidad de Software y Hardware de la entidad. Estos forman la Computer agregado, el mini-ecosistema para el Equipo de la porción del dominio.

Agregado Raíz es la nave nodriza de la entidad dentro de los agregados (en nuestro caso, Computer), es una práctica común de su repositorio solamente trabajar con las entidades que son las Raíces de Agregado, y esta entidad es responsable de inicializar el resto de las entidades.

Considere la posibilidad de Raíz Agregado como un Punto de Entrada a un Agregado.

En código C#:

public class Computer : IEntity, IAggregateRoot
{
    public Hardware Hardware { get; set; }
    public Software Software { get; set; }
}

public class Hardware : IEntity { }
public class Software : IValueObject { }

public class Repository<T> : IRepository<T> where T : IAggregateRoot {}

Tenga en cuenta que el Hardware podría ser una ValueObject demasiado (no tienen identidad propia), lo consideran como un ejemplo solamente.

11voto

Juann Strauss Puntos 1677

Si usted sigue una base de datos-primera aproximación, que el agregado de la raíz es generalmente de la tabla en el lado de 1 de 1 relación de muchos.

El ejemplo más común es una Persona. Cada persona tiene muchas direcciones, una o más boletas de pago, facturas, CRM, entradas, etc. No es siempre el caso, pero 9/10 veces lo es.

Actualmente estamos trabajando en una plataforma de e-commerce, y básicamente, tenemos dos raíces agregadas:

  1. Clientes
  2. Vendedores

Fuente de los clientes información de contacto, podemos asignar transacciones a ellos, las transacciones de obtener elementos de línea, etc.

Los vendedores de vender productos, tener contacto con la gente, acerca de las páginas, las ofertas especiales, etc.

Estos son atendidos por el Cliente y el Vendedor repositorio respectivamente.

8voto

Otávio Décio Puntos 44200

Desde un enlace roto:

Dentro de un agregado hay una raíz agregada. La raíz agregada es la principal entidad a todas las demás entidades y objetos de valor dentro del agregado.

Un repositorio opera sobre una raíz agregada.

También se puede encontrar más información aquí.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X