Кажется, что каждый пример, который я нахожу в шаблоне репозитория, реализация каким-то образом отличается. Ниже приведены два примера, которые я в основном нахожу.
interface IProductRepository
{
IQueryable<Product> FindAll();
}
Существует, как правило, еще один слой, который говорит с репозиторием и вызывает метод FindAll() и выполняет любые операции, такие как поиск продуктов, начинающихся с буквы или выборки продуктов в определенной категории.
В другом примере, который я нахожу много, ставьте все методы поиска в репозиторий
interface IProductRepository
{
IEnumerable<Product> GetProductsInCategory(int categoryId);
IEnumerable<Product> GetProductsStartingWith(string letter);
IEnumerable<PromoCode> GetProductPromoCodes(int productId);
}
Какой путь вы рекомендуете взять? Или каковы преимущества/недостатки друг от друга?
Из моего понимания, прочитав http://martinfowler.com/eaaCatalog/repository.html, первый подход, похоже, лучше всего отражает это?