Pregunta

Recientemente terminó de leer Diseño Eric Evans Domain Driven (muy informativo, muy agradable) sin embargo llegado a primer proyecto importante desde que completó el libro y tiene el problema de cómo manejar el modelo de dominio ahorrar?

aprecio el uso de servicios / repositorios y cómo pueden ayudar a la modelo, pero ¿cómo iban a manejar el modelo de guardar?

Mi modelo de dominio anterior ahorra seguiría la siguiente estructura llamada al método;

ParentClass.Save {

ParentClassDB.Save

ChildObject1.Save

       ChildObject1DB.Save

ChildObject2.Save

       ChildObject2DB.Save  
  etc etc 

}

¿La toma de control del servicio de llamar a la apropiada Guardar rutinas en los objetos secundarios?

¿Fue útil?

Solución

En DDD, la entidad de dominio no toma cuidado de su persistencia. Usted no debe tener un método Save() en él, a ser posible.

Su repositorio tendrá un procedimiento de este tipo Save, que toma una instancia de entidad en el parámetro:

public class PersonRepository
{
   //...

   public void Save(Person person)
   {
      this.dataContext.Save(person);
   }

   //...
}

En función de la pila, un ORM manejará el ahorro de objeto o el resultado final será mediante la construcción de una consulta para salvar a la persona, o se rellenará con parámetros de procedimiento almacenado de sus valores de instancia, etc.

Si he entendido bien lo que hizo, puede ser necesario mover la lógica de persistencia se pone en las entidades del dominio en otro lugar, probablemente en los repositorios, o en el DAL utilizado por los repositorios.

Otros consejos

¿Utiliza raíces de agregado? Se responsilbe para salvar sus entidades.

Si hay una gran cantidad de modificaciones que van en una forma que podría ser para encapsular la lógica de que en un servicio de dominio y tener el servicio de manejar la guarda a través de las raíces de agregado.

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