Кажется, что каждый пример, который я нахожу в шаблоне репозитория, в какой-то мере отличается. Ниже приведены два примера, которые я в основном нахожу.Реализация шаблона хранилища
interface IProductRepository
{
IQueryable<Product> FindAll();
}
Существует то, как правило, еще один слой, который говорит в хранилище и вызывает метод FindAll() и выполняет любые операции, такие как поиск продуктов, начинающихся с буквы «S» или выборки продукции в конкретной категории.
Другой пример, который я нашел много положить все методы находят в хранилище
interface IProductRepository
{
IEnumerable<Product> GetProductsInCategory(int categoryId);
IEnumerable<Product> GetProductsStartingWith(string letter);
IEnumerable<PromoCode> GetProductPromoCodes(int productId);
}
Какой путь вы посоветуете взять? Или каковы преимущества/недостатки друг от друга?
С моей точки зрения, прочитав http://martinfowler.com/eaaCatalog/repository.html, первый подход лучше всего отражает это?
Спасибо за ответ. Я думал, что тебе нужно группировать по агрегатам? Должен ли я иметь один репозиторий для каждого объекта? Также здесь приведен пример первого примера. Http: // stackoverflow.com/questions/5049363/Уровень разницы между репозиториями и услугами – Scott
На совокупность. Я не мог сказать, что промо-коды предназначены только для продуктов. (поскольку он был назван «GetProductPromos», а не только «GetPromos») – jgauffin
не имеет вашего первого интерфейса, а также 2 причины для изменения? во-первых: изменение метода FindForCategory для изменения возвращаемого по умолчанию продукта, если он не находит какой-либо продукт по переданной категорииId, и вторые изменения FindAllStartingWith для применения некоторых фильтров по умолчанию? – Masoud