Pregunta

Necesito algunos consejos sobre dónde trazar la línea con mis servicios y repositorios.

public class Contact
{
     public Guid Id {get;set;}
     public string Username {get;set;}
     public Guid? AvatarId {get;set;}
     public Avatar Avatar {get;set;}
}

public class Avatar
{
     public Guid Id {get;set;}
     public string FullSizeImagePath {get;set;}
     public string ThumbnailSizeImagePath {get;set;}
}

Supongamos que el modelo Avatar solo se utilizará en un modelo de contacto y que es una propiedad opcional en el contacto. ¿Debería mi repositorio ser responsable de agregar un avatar al contacto o debería la capa de negocios / servicio extender esa funcionalidad? Se puede argumentar que es un requisito comercial tener un avatar, pero dado que es parte del modelo, la capa de datos debe saber cómo lidiar con él.

Propuse que pudiéramos agregar la funcionalidad para agregar / actualizar y eliminar un avatar a través del repositorio. La capa de negocios / servicio sería responsable de guardar los archivos físicos, la validación y llamar a los métodos apropiados en el repositorio. Todo lo que se preocupa por el repositorio es adjuntar el contacto apropiado y agregarle un avatar.

Mi proceso de pensamiento era que, dado que un avatar solo se usa en un contacto, actualmente, extenderíamos el repositorio y, por lo tanto, agregaríamos funcionalidad al DAL. Esto podría ser útil para una API separada.

No hay solución correcta

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