2011-01-04 8 views
11

Digamos que tengo una entidad llamada Usuario que tiene muchas publicaciones. Mi servicio se ve así para la eliminación de una publicación:¿Dónde entra la verificación de validación en el patrón de repositorio?

void DeletePost(int postId, int userId); 

¿Dónde va mi código de validación? (asegúrese de que el usuario tenga permiso para eliminar). ¿Debo hacer esto en el repositorio con 1 llamada a la base de datos? O debo hacer esta comprobación en la capa de Servicio donde realizo 2 llamadas:

  1. Obtener el usuario por ID de usuario.
  2. Borrar llamada después de que se haya realizado la validación en el usuario.

voy a tener 2 depósitos, 1 para el usuario y 1 para el puesto, cada uno con este aspecto:

// From the PostRepository. 
void Delete(int postId); //May have to add a userId param if I do validation in repository 
//From the UserRepository. 
User GetUser(int userId); 

Respuesta

10

Esa es una regla de negocio, así que no sería colocarlo en la capa de acceso a datos (Repositorio). Yo diría que el mejor lugar es la capa de servicio.

8

creo alguna validación debería ocurrir antes de llegar al repositorio es decir, en la capa de modelo de dominio/negocio.

Puede optar por validar en profundidad y realizar la validación también en la capa de repositorio; esto puede o no ser una buena idea dependiendo de para qué sirve la validación; si la validación es específica del dominio, me parece que la validación debe estar en el modelo de dominio. Por otro lado, si la validación es menos específica del dominio y más general en su naturaleza, tenerla en la capa de repositorio/acceso a los datos significa que la validación se puede reutilizar en otros proyectos en los que se reutiliza la capa de acceso a los datos.

Cuestiones relacionadas