Modelo de ahorro de dominio
-
22-08-2019 - |
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?
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.