Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Call methods between repositories - Repository Pattern

I'm using the Repository Pattern (like the examples in the https://dotnet.microsoft.com/apps/aspnet/mvc site) in a ASP.NET MVC application. I have two repositories, one called CategoryRepository an other called ProductRepository. I also use two services, the CategoryService and ProductService to validate and call the repositories methods. I need a list of categories in ProductService, a method that return one is already implemented in the CategoryRepository. My question is, which is the correct way to call the ListCategories method that exists in CategoryRepository from ProductService? I don't want to implement another ListCategories method in the ProductRepository (DRY philosophy). Thanks.

like image 488
segaco Avatar asked Mar 21 '09 19:03

segaco


2 Answers

I would recommend rolling similar repositories into one service. So if you're creating an e-Commerce application roll up ProductRepository, CategoryRepository etc into something like CatalogService and have it host all repositories that are related.

like image 78
Chad Moran Avatar answered Sep 22 '22 23:09

Chad Moran


One option is to provide the ProductService class an instance of CategoryService.

public class ProductService {
    ICategoryService _categoryService = null;

    public ProductService(ICategoryService categoryService) {
        _categoryService = categoryService;
    }
}

You could then access the category listings from the ProductService without having to establish a direct coupling to any specific CategoryService implementation.

like image 40
Ian Suttle Avatar answered Sep 19 '22 23:09

Ian Suttle