Я использую ASP.NET MVC 3
. Я получаю данные своего представления в следующей последовательности:
Controller -> Service Layer -> Repository
В моем репозитории есть метод GetAll, который возвращает все записи для определенного объекта, например Category.
Итак, если мне нужен список всех категорий, тогда в моем контроллере у меня будет что-то вроде:
IEnumerable<Category> categories = categoryService.GetAll();
На уровне обслуживания у меня будет что-то вроде:
public IEnumerable<Category> GetAll()
{
return categoryRepository.GetAll();
}
Вот что мне нужно знать, где делать Я действительно начинаю фильтровать данные? Можно ли это сделать где-нибудь на одном из этих трех слоев или это должно быть только на уровне репозитория? Допустим, мне нужны все родительские категории. Есть ли у меня .GetAll.Where (x => x.ParentCategoryId == null);
в моем контроллере, уровне обслуживания или уровне репозитория?
Есть ли у меня это в моем контроллере:
IEnumerable<Category> categories = categoryService.GetParentCategories();
А на моем уровне обслуживания я могу иметь:
public IEnumerable<Category> GetParentCategories()
{
return categoryRepository.GetAll.Where(x => x.ParentCategoryId == null);
}
Или есть мой уровень обслуживания должен выглядеть так:
public IEnumerable<Category> GetParentCategories()
{
return categoryRepository.GetParentCategories();
}
А затем в моем слое репозитория вот так:
public IEnumerable<Category> GetParentCategories()
{
return GetAll()
.Where(x => x.ParentCategoryId == null);
}
Кто-нибудь может помочь прояснить эту путаницу, которая у меня возникла. Возможны разные сценарии. Я могу вернуть все категории, у которых есть активный статус. Я могу вернуть категории с неактивным статусом. Тогда мне нужен метод для каждого?