У меня есть ASP.NET MVC3 на С# и Razor. Архитектура приложения разделена на уровень доступа к данным (классы EF + репозиторий), уровень обслуживания, контроллер, модели представления и представление.
Из моего уровня обслуживания ProductServices
я вызываю метод GetAllProducts
, предоставленный моим репозиторием ProductRepository
, который имеет следующую подпись:
IQueryable<Products> GetAllProducts()
Поэтому внутри ProductServices
я вызываю (productRepository
является экземпляром ProductRepository
):
var products = productRepository.GetAllProducts();
который заполняет переменную products
. Теперь я хотел бы получить доступ к названию продукта ProductName
из productServices
. Если я использую эту инструкцию:
var productNames = products.Select(m => m.ProductName).ToList();
Я создаю связь между ServiceLayer и EF (в обход репозитория). Это означает, что я должен добавить в ProductRepository
метод с сигнатурой:
IQueryable<string> GetAllProductsName()
Однако, поскольку мне нужна другая информация о продукте в моем приложении, должен ли я создать один метод в productRepository
для каждого поля класса Product
? Верны ли мои рассуждения? Спасибо