Должен ли я фильтровать результаты IQueryable в доменной службе?MVC - доменная служба берет на себя ответственность за фильтрацию или уровень репозитория?
Например ... Мои 3 порталы (сайты) доступ к той же службы домена слой, в зависимости от типа пользователя, то есть, я называю конкретный метод хранилища и возвращает результат,
Текущий Repository слой:
IQueryable<Products> GetAllProductsForCrazyUserNow(CrazyUser id);
Products GetAProductForCrazyUserNow(CrazyUser id,product id);
IQueryable<Products> GetProductsForNiceUserNow(NiceUser id);
Products GetProductsForNiceUserNow(NiceUser id,product id);
было бы лучше всего сделать это в Repository Layer:
IQueryable<Products> GetAllProducts();
Products GetAProduct(product id);
Тогда в службу домена, я просто сделать фильтр т.е.
var Niceman = IQueryable<Products> GetAllProducts().Where(u=> u.Name == "Nice");
ПРИМЕЧАНИЕ. У меня есть сеанс и сессия только для чтения, которая включает CRUD в пределах уровня хранилища, поэтому, пожалуйста, имейте это в виду при ответе.
Второй вопрос: Должен ли я вообще выполнять фильтрацию на уровне службы домена? Этот слой является единственным слоем, чем может изменить объект, т. Е. Product.Price == 25.00; Это не делегируется слою репозитория.
Мы можем утверждать, что слой репозитория предназначен для сохранения и поиска базовых наборов данных, тогда они должны быть уточнены в службе домена. То есть, если мы отрицаем хранимые процедуры ... Я рад, что мне не нужно это разбираться, поскольку я использую LinqToSql – Haroon