private static void ApplyOptions <TModel>(ODataQueryOptions <TModel> options, QuerySettings querySettings) { options.AddExpandOptionsResult(); if (querySettings?.ODataSettings?.PageSize.HasValue == true) { options.AddNextLinkOptionsResult(querySettings.ODataSettings.PageSize.Value); } }
/// <summary> /// GetAsync /// </summary> /// <typeparam name="TModel"></typeparam> /// <typeparam name="TData"></typeparam> /// <param name="query"></param> /// <param name="mapper"></param> /// <param name="options"></param> /// <param name="querySettings"></param> /// <returns></returns> public static async Task <ICollection <TModel> > GetAsync <TModel, TData>(this IQueryable <TData> query, IMapper mapper, ODataQueryOptions <TModel> options, QuerySettings querySettings = null) where TModel : class { Expression <Func <TModel, bool> > filter = options.Filter.ToFilterExpression <TModel>(querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.Default); await query.ApplyOptionsAsync(mapper, filter, options, querySettings); return(await query.GetAsync ( mapper, filter, options.GetQueryableExpression(querySettings?.ODataSettings), options.SelectExpand.GetIncludes().BuildIncludes <TModel>().ToList(), querySettings?.AsyncSettings )); }
private static void ApplyOptions <TModel, TData>(this IQueryable <TData> query, IMapper mapper, Expression <Func <TModel, bool> > filter, ODataQueryOptions <TModel> options, QuerySettings querySettings) { ApplyOptions(options, querySettings); if (options.Count?.Value == true) { options.AddCountOptionsResult(query.QueryLongCount(mapper, filter)); } }
private static async Task ApplyOptionsAsync <TModel, TData>(this IQueryable <TData> query, IMapper mapper, Expression <Func <TModel, bool> > filter, ODataQueryOptions <TModel> options, QuerySettings querySettings) { ApplyOptions(options, querySettings); if (options.Count?.Value == true) { options.AddCountOptionsResult(await query.QueryLongCountAsync(mapper, filter, querySettings?.AsyncSettings?.CancellationToken ?? default)); } }
/// <summary> /// GetQuery /// </summary> /// <typeparam name="TModel"></typeparam> /// <typeparam name="TData"></typeparam> /// <param name="query"></param> /// <param name="mapper"></param> /// <param name="options"></param> /// <param name="querySettings"></param> /// <returns></returns> public static IQueryable <TModel> GetQuery <TModel, TData>(this IQueryable <TData> query, IMapper mapper, ODataQueryOptions <TModel> options, QuerySettings querySettings = null) where TModel : class { Expression <Func <TModel, bool> > filter = options.Filter.ToFilterExpression <TModel>(querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.False); query.ApplyOptions(mapper, filter, options, querySettings); return(query.GetQueryable(mapper, options, querySettings, filter)); }
public static ICollection <TModel> Get <TModel, TData>(this IQueryable <TData> query, IMapper mapper, ODataQueryOptions <TModel> options, QuerySettings querySettings = null) where TModel : class { Expression <Func <TModel, bool> > filter = options.Filter.ToFilterExpression <TModel>(querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.False); query.ApplyOptions(mapper, filter, options, querySettings); return(query.Get ( mapper, filter, options.GetQueryableExpression(querySettings?.ODataSettings), options.SelectExpand.GetIncludes().BuildIncludesExpressionCollection <TModel>()?.ToList() )); }
public static async Task <ICollection <TModel> > GetAsync <TModel, TData>(this IQueryable <TData> query, IMapper mapper, ODataQueryOptions <TModel> options, QuerySettings querySettings = null) where TModel : class => await query.GetAsync(mapper, options, querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.Default);
/// <summary> /// Get /// </summary> /// <typeparam name="TModel"></typeparam> /// <typeparam name="TData"></typeparam> /// <param name="query"></param> /// <param name="mapper"></param> /// <param name="options"></param> /// <param name="querySettings"></param> /// <returns></returns> public static ICollection <TModel> Get <TModel, TData>(this IQueryable <TData> query, IMapper mapper, ODataQueryOptions <TModel> options, QuerySettings querySettings) where TModel : class => query.Get(mapper, options, querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.Default);
/// <summary> /// GetQueryAsync /// </summary> /// <typeparam name="TModel"></typeparam> /// <typeparam name="TData"></typeparam> /// <param name="query"></param> /// <param name="mapper"></param> /// <param name="options"></param> /// <param name="querySettings"></param> /// <returns></returns> public static async Task <IQueryable <TModel> > GetQueryAsync <TModel, TData>(this IQueryable <TData> query, IMapper mapper, ODataQueryOptions <TModel> options, QuerySettings querySettings = null) where TModel : class { var expansions = options.SelectExpand.GetExpansions(typeof(TModel)); List <Expression <Func <TModel, object> > > includeExpressions = expansions.Select(list => new List <Expansion>(list)).BuildIncludes <TModel> ( options.SelectExpand.GetSelects() ) .ToList(); Expression <Func <TModel, bool> > filter = options.Filter.ToFilterExpression <TModel>(querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.Default); Expression <Func <IQueryable <TModel>, IQueryable <TModel> > > queryableExpression = options.GetQueryableExpression(); Expression <Func <IQueryable <TModel>, long> > countExpression = LinqExtensions.GetCountExpression <TModel>(filter); options.AddExpandOptionsResult(); if (options.Count?.Value == true) { options.AddCountOptionsResult <TModel, TData>(await query.QueryAsync(mapper, countExpression)); } IQueryable <TModel> queryable = await query.GetQueryAsync(mapper, filter, queryableExpression, includeExpressions, querySettings?.ProjectionSettings); return(queryable.UpdateQueryableExpression(expansions)); }