我想选择包含其集合的对象,此集合必须只包含其他项目。
这是电话:
EntityResult<TEntity> = SelecFor( LAMBDA_EXPRESSION , "NameOfCollectionPropertyToInclude");
我知道我可以在存储库层级查询它,但如果可能的话我想在这里执行
这是方法:
public virtual EntityResult<TEntity> SelectFor(Expression<Func<TEntity, bool>>, params string[] entitiesToLoad)
{}
答案 0 :(得分:0)
我们的想法是,您将实体投射到IQueryable,然后包含实体,然后过滤。
public async Task<TEntity> SingleOrDefaultAsyncEager(Expression<Func<TEntity, bool>> filter, params Expression<Func<TEntity, object>>[] includes)
{
var query = _context.Set<TEntity>().AsQueryable();
if (includes != null)
{
query = includes.Aggregate(query, (current, include) => current.Include(include));
}
return await query.SingleOrDefaultAsync(filter);
}
第二个表达式允许您传递lambda。 ES:
repository.SingleOrdDefaultAsyncEager(x=> x.Id == 5, y=> y.collection);