È una buona idea non inserire la logica di memorizzazione nella cache direttamente nel repository, in quanto ciò viola il Single Responsibility Principle (SRP) e Separation of Concerns. SRP afferma essenzialmente che le tue classi dovrebbero avere solo una ragione per cambiare. Se si confondono i dubbi sull'accesso ai dati e sulla politica di memorizzazione nella cache nella stessa classe, se uno di questi deve cambiare è necessario toccare la classe. Probabilmente scoprirai anche che stai violando il principio di DRY, dal momento che è facile avere una logica di caching diffusa tra molti diversi metodi di repository, e se qualcuno di questi ha bisogno di cambiare, si finisce per dover cambiare molti metodi.
L'approccio migliore consiste nell'utilizzare il modello Proxy o Strategia per applicare la logica di memorizzazione nella cache in un tipo distinto, ad esempio un CachedRepository, che quindi utilizza il repository db-centric effettivo quando necessario quando la cache è vuota. Ho scritto due articoli che dimostrano come implementare questo utilizzando .NET/C#, che si trova sul mio blog, qui:
Se si preferisce il video, ho anche descrivere il modello nel design pattern Proxy Pluralsight, qui:
Grazie per la risposta! Penso che sia anche meglio per il caricamento lazy di implementazione. – Beni