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