我有产品实体的存储库模式,我有一个按ID检索产品的方法。每种产品都有一个类别,以及其他复杂的属性。在某些情况下,我想要检索没有类别(延迟加载)的产品,但在某些情况下我想要返回两个实体(产品和类别)。有两种方法有更好的选择吗?这就是我编码的内容:
Product GetById(int id)
{
// without includes
...
}
Product GetByIdFull(int id)
{
// with includes
...
}
答案 0 :(得分:1)
您可以这样做:
public Product Get(int id, params Expression<Func<TEntity, object>>[] propertiesToInclude)
{
var query = context.Products;
foreach (var expression in propertiesToInclude)
{
query = query.Include(expression);
}
return query.SingleOrDefault(p => p.id == id);
}
调用代码可以选择使用lambda来指定要包含的属性,如下所示:
var justProduct = repo.Get(productId);
var productAndCategory = repo.Get(productId, p => p.Category);