Pregunta

Tengo los siguientes objetos:

Persona <- Contacto -> ClientsPerson <- Cliente

Estoy usando el patrón de repositorio con una capa de servicio. Pero ya está aquí, ser un perfeccionista, estoy perdido!

También tengo una PersonService, ClientService y estoy bastante seguro de que necesita tener un ContactService que debe llamar a la personService.Add (persona) y clientsPersonService.Add (cliente) -? O

El trabajo consiste en añadir un contacto. El contacto tendría un objeto persona relacionada, y un objeto ClientsPerson. Y que sería ClientsPerson OFC. tiene un cliente.

¿Dónde deben los diferentes puestos de trabajo para ir? He oído que es malo para llamar a un servicio / repositorio de uno a otro.

¿Fue útil?

Solución

Esta respuesta depende de su ORM y cómo lo guarda cascadas. Vamos a suponer que no está utilizando un ORM que las cascadas cambios.

Sus métodos capa de servicio deben reflejar las acciones que debe llevar a cabo a partir de un sentido comercial. Frecuentemente encuentro que mis acciones del controlador coinciden muy de cerca a los métodos de servicio.

En el ejemplo, me gustaría tener la acumulación de servicios y relacionarse con las entidades necesarias y hablar con los repos para salvarlos; de esa manera si hay un problema en el camino de hablar con los repositorios puede rodarse hacia atrás y hacer lo que es necesaria la limpieza.

Repos deben ser relativamente mudo. Los servicios deben hacer la relación y negocio de trabajo (salvo algo así como NHib, y tal vez incluso a continuación).

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