Tome este ejemplo simple, artificial:Repositorio, servicio o objeto de dominio: ¿a dónde pertenece la lógica?
UserRepository.GetAllUsers(); UserRepository.GetUserById();
Inevitablemente, voy a tener "consultas" más complejas, tales como:
//returns users where active=true, deleted=false, and confirmed = true
GetActiveUsers();
Tengo problemas para determinar dónde termina la responsabilidad del repositorio. GetActiveUsers() representa una simple "consulta". ¿Pertenece al repositorio?
¿Qué tal algo que implica un poco de lógica, como por ejemplo:
//activate the user, set the activationCode to "used", etc.
ActivateUser(string activationCode);
En respuesta a su último párrafo: ¿Qué pasa si "persistir el cambio" ES la única lógica. p.ej. ActivateUser() simplemente actualiza un registro en la tabla User y un registro en la tabla ActivationCode. ¿Eso constituye "lógica"? Si no, ¿qué hace? – betitall