Es una buena idea no poner la lógica de almacenamiento en caché directamente en su repositorio, ya que eso viola el Principio de Responsabilidad Individual (SRP) y la Separación de Preocupaciones. SRP esencialmente establece que sus clases solo deberían tener un motivo para cambiar. Si combina las preocupaciones sobre el acceso a los datos y la política de caché en la misma clase, entonces, si alguna de estas necesidades cambia, deberá tocar la clase. También es probable que descubra que está violando el principio DRY, ya que es fácil tener la lógica de almacenamiento en caché extendida entre muchos métodos de repositorio diferentes, y si alguno de ellos necesita cambiar, terminará teniendo que cambiar muchos métodos.
El mejor enfoque es utilizar el patrón Proxy o Estrategia para aplicar la lógica de almacenamiento en caché en un tipo separado, por ejemplo, un repositorio caché, que utiliza el repositorio db-centric actual según sea necesario cuando el caché está vacío. He escrito dos artículos que demuestran cómo implementar esto utilizando/C# .NET, que se encuentra en mi blog, aquí:
Si prefiere vídeo, también describo el patrón en el patrón de diseño Proxy en Pluralsight, aquí:
¡Gracias por la respuesta! Creo que también es mejor para la carga lenta de implementación. – Beni