我有一个使用以下方法的存储库:
IEnumerable<T> FindAll<TRelated>(Specification<T> specification,
Expression<Func<T, TRelated>> fetchExpression);
我需要传递多个表达式。我正在考虑将签名更改为:
IEnumerable<T> FindAll<TRelated>(Specification<T> specification,
IEnumerable<Expression<Func<T, TRelated>>> fetchExpression);
- 这可能吗?
- 例如,如何创建一个表达式数组以传递给此方法?
目前我正在从我的服务层调用该方法,如下所示:
var products = productRepository.FindAll(specification,p => p.Variants);
但我想通过p => p.Variants
,p => p.Reviews
例如。然后在存储库中,我想遍历表达式并将它们添加到查询中。
有关我为什么这样做的一些背景信息,请参阅 Ben Foster 的博客文章Eager loading with NHibernate。