Reputation: 1236
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.
Upvotes: 7
Views: 3261
Reputation: 12854
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.
Upvotes: 4
Reputation: 3402
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.
Upvotes: 3