Sto utilizzando il pattern di repository (come gli esempi nel sito http://www.asp.net/mvc) in un'applicazione ASP.NET MVC. Ho due repository, uno chiamato CategoryRepository e un altro chiamato ProductRepository. Uso anche due servizi, CategoryService e ProductService per convalidare e chiamare i metodi dei repository. Ho bisogno di un elenco di categorie in ProductService, un metodo che ne restituisce uno già implementato in CategoryRepository. La mia domanda è, qual è il modo corretto per chiamare il metodo ListCategories che esiste in CategoryRepository da ProductService? Non voglio implementare un altro metodo ListCategories nel ProductRepository (filosofia DRY). Grazie.Metodi di chiamata tra repository - Modello di repository
7
A
risposta
4
Si consiglia di trasferire repository simili in un unico servizio. Pertanto, se si sta creando un'applicazione di e-Commerce, arrotolare ProductRepository, CategoryRepository ecc in qualcosa come CatalogService e farli ospitare tutti i repository correlati.
3
Un'opzione consiste nel fornire alla classe ProductService un'istanza di CategoryService.
public class ProductService {
ICategoryService _categoryService = null;
public ProductService(ICategoryService categoryService) {
_categoryService = categoryService;
}
}
È quindi possibile accedere alla lista delle proprietà categoria dal ProductService senza dover stabilire un accoppiamento diretto a qualsiasi applicazione specifica CategoryService.
Problemi correlati
- 1. Repository modello - troppi metodi
- 2. Implementazione del modello di repository
- 3. Repository Laravel all'interno di altri repository
- 4. differenza tra un repository e un modello di fabbrica
- 5. Differenza tra repository e livello di servizio
- 6. Differenza tra repository e servizio?
- 7. PetaPoco + unità di lavoro + repository modello
- 8. C# tipi generici e modello di repository
- 9. Modello di repository con .NET 1.1
- 10. ASP.NET MVC utilizzando il modello di repository
- 11. Consapevolezza del repository DDD di altri repository
- 12. Repository mercuriale all'interno di un repository
- 13. Conversione di repository mercurial nel repository svn
- 14. Git Extensions - Differenze tra repository personale e repository centrale
- 15. Repository come modello con Node e mangusta
- 16. SourceTree: vedere la differenza tra repository locale e repository remoto?
- 17. Quanta logica dovrei inserire i miei metodi di repository quando si utilizza il pattern del repository?
- 18. Utilizzando un modello di repository generico con fluente NHibernate
- 19. modello di scaffolding per la creazione di repository
- 20. Il modo migliore per implementare il modello di repository?
- 21. Repository vs Data Access
- 22. pulizia di un Mercurial Repository
- 23. Modello di repository rispetto a oggetti aziendali "intelligenti"
- 24. È corretto utilizzare il repository nel modello di visualizzazione?
- 25. Repository SVN multipli o repository di una singola azienda
- 26. Mantenimento del repository git contenente altro repository di git clonato
- 27. Copia SVN tra repository con cronologia
- 28. Un repository dovrebbe chiamare un altro repository? O un repository dovrebbe chiamare un livello di servizio?
- 29. Differenza tra registro Docker e repository
- 30. Come condividere file tra repository git?
+1. In generale questo ti lascia con servizi che sono suddivisi in business, non entità, linee. –
Quindi cosa succede quando il servizio catalogo utilizza ProductRepo per aggiornare un prodotto e CategoryRepo per aggiornare una categoria in un unico metodo di servizio? Significa che le modifiche ProductRepo vengono eseguite in un'unica transazione e le modifiche CategoryRepo vengono eseguite in un'altra transazione? Ho sempre pensato che le operazioni di pronti contro termine fossero discrete a meno che non permettiate a ProductRepo di cambiare anche le categorie. Cosa fanno le persone nel mondo reale? – IanT8