Я читал, что репозитории НЕ должны использовать IQueryable.Простой пример репозитория имеет ListAll, FindById, Add, Delete.Ниже приведен пример списка товаров в репозитории.Если я не могу наложить запросы и требовать поисковые запросы, например, ProductTable по категориям или ProductTable по весу (сложные запросы), мне потребуется DAO (шаблон объекта доступа к данным).
Итак, вопрос в том,
(а) нормально ли иметь шаблон репозитория и шаблон DAO в одном приложении?
(б) Разве это не обходит весьсмысл наличия шаблона репозитория DDD?
Как мне получить доступ к ProductTable с запутанными запросами, все еще проходя через репозиторий?Первый запрос к репозиторию будет медленным.
public virtual IEnumerable<Products> List()
{
return _dbContext.Products.AsEnumerable();
}
// This repository pattern will be slow, first it access all product and Then filters
var result = context.products()
.Where(o => o.ProductCategoryId== 5);
// This is dao pattern, with more specific queries
var result = context.products.AsEnumerable()
.Where(o => o.ProductCategoryId== 5);
Шаблон репозитория Entity Framework, почему не вернуть Iqueryable?
https://deviq.com/repository-pattern/