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