Exemple #1
0
        public static string List <T>(IDynamicQuery paramData) where T : IEntity, new()
        {
            T             target = new T();
            StringBuilder query  = new StringBuilder(200);

            query.Append($"SELECT TOP ({paramData.PageSize}) resultTable.* FROM");
            query.Append($"( SELECT TOP ({paramData.PageSize * paramData.CurPage}) ROW_NUMBER () OVER ");
            if (!string.IsNullOrWhiteSpace(paramData.OrderBy))
            {
                query.Append($" (ORDER BY { paramData.OrderBy }) AS rownumber, *");
            }
            else
            {
                query.Append($" (ORDER BY { target.TargetColumn } desc) AS rownumber, *");
            }
            query.Append($" FROM [{target.TableName}]");
            if (!string.IsNullOrWhiteSpace(paramData.WhereString))
            {
                query.Append(" where " + paramData.WhereString);
            }
            if (!string.IsNullOrWhiteSpace(paramData.OrderBy))
            {
                query.Append($" ORDER BY { paramData.OrderBy }");
            }
            query.Append(") AS resultTable");
            query.Append($" WHERE rownumber > {(paramData.CurPage - 1) * paramData.PageSize}");
            return(query.ToString());
        }
Exemple #2
0
        public static string List(string EntityName, IDynamicQuery paramData, string appendWhere)
        {
            StringBuilder query = new StringBuilder(200);

            query.Append($"SELECT TOP ({paramData.PageSize}) resultTable.* FROM");
            query.Append($"( SELECT TOP ({paramData.PageSize * paramData.CurPage}) ROW_NUMBER () OVER ");
            query.Append($" (ORDER BY { paramData.OrderBy }) AS rownumber, *");
            query.Append($" FROM [{EntityName}]");
            if (!string.IsNullOrWhiteSpace(paramData.WhereString))
            {
                query.Append(" where " + paramData.WhereString);
                if (!string.IsNullOrWhiteSpace(appendWhere))
                {
                    query.Append($" and {appendWhere}");
                }
            }
            else
            {
                if (!string.IsNullOrWhiteSpace(appendWhere))
                {
                    query.Append($" where {appendWhere}");
                }
            }
            if (!string.IsNullOrWhiteSpace(paramData.OrderBy))
            {
                query.Append($" ORDER BY { paramData.OrderBy }");
            }
            query.Append(") AS resultTable");
            query.Append($" WHERE rownumber > {(paramData.CurPage - 1) * paramData.PageSize}");
            return(query.ToString());
        }
Exemple #3
0
        public DynamicQuery(IModelDescriptorCollection descriptors,
                            IServiceProvider serviceProvider,
                            IQueryRuleCollection queryRuleCollection)
        {
            if (descriptors == null)
            {
                throw new ArgumentNullException(nameof(descriptors));
            }
            if (serviceProvider == null)
            {
                throw new ArgumentNullException(nameof(serviceProvider));
            }
            var descriptor  = descriptors[typeof(T)] ?? throw new InvalidOperationException($"Missing descriptor of dto {typeof(T).Name}");
            var contextType = descriptor.Bag.__Context__ ?? throw new InvalidOperationException($"Missing db context for descriptor of dto {typeof(T).Name}");
            var context     = serviceProvider.GetService(contextType) ?? throw new InvalidOperationException($"Can not resolve db context {contextType.Name}");
            var map         = (Dictionary <string, string>)descriptor.SourceMap;

            Descriptor  = descriptor;
            ContextType = contextType;
            Context     = context;
            EntityMap   = map;
            _query      = (IDynamicQuery <T>)Activator.CreateInstance(
                typeof(QueryWrapper <,>).MakeGenericType(descriptor.SourceType, typeof(T)),
                context, descriptor, serviceProvider, queryRuleCollection, (IDictionary <string, string>)map);
        }
        protected virtual Task <IQueryable <TSource> > GetQueryableAsync(IDynamicQuery query, CancellationToken cancellationToken = default)
        {
            if (this.queryableProviders.Any())
            {
                return(queryableProviders.ElementAt(0).GetQueryableAsync(query, cancellationToken));
            }

            throw new Exception($"You must provide a QueryableProvider<TSource> for {typeof(TSource).Name}");
        }
Exemple #5
0
        public static string toCount <T>(this IDynamicQuery paramData) where T : IEntity
        {
            StringBuilder builder = new StringBuilder(200);
            T             data    = default(T);

            builder.AppendLine($"select count(1) from {data.TableName} with (nolock)");
            if (!string.IsNullOrWhiteSpace(paramData.WhereString))
            {
                builder.AppendLine($" where {paramData.WhereString}");
            }
            return(builder.ToString());
        }
        protected virtual IQueryCriteria CreateCriteriaFromQuery(IDynamicQuery query)
        {
            var criteria = new QueryCriteria
            {
                Page       = query?.GetPage(),
                PageSize   = query?.GetPageSize(),
                Filters    = query?.GetFilters() ?? new List <IFilter>(),
                Sorts      = query?.GetSorts() ?? new List <ISort>(),
                Groups     = query.GetGroups() ?? new List <IGroup>(),
                Aggregates = query.GetAggregates() ?? new List <IAggregate>()
            };

            return(criteria);
        }
Exemple #7
0
        public static string toPaging <T>(this IDynamicQuery paramData) where T : IEntity
        {
            StringBuilder builder = new StringBuilder(200);
            T             data    = default(T);

            builder.AppendLine($"SELECT TOP ({paramData.PageSize}) resultTable.* FROM");
            builder.Append($"( SELECT TOP ({paramData.PageSize * paramData.CurPage}) ROW_NUMBER () OVER (ORDER BY ");
            if (string.IsNullOrWhiteSpace(paramData.OrderBy))
            {
                builder.Append($"{paramData.OrderBy} desc");
            }
            else
            {
                builder.Append(paramData.OrderBy);
            }
            builder.AppendLine($") AS rownumber, * FROM [{data.TableName}] with (nolock)");
            if (!string.IsNullOrWhiteSpace(paramData.WhereString))
            {
                builder.AppendLine($" where {paramData.WhereString}");
            }
            builder.AppendLine(") AS resultTable");
            builder.AppendLine($"WHERE rownumber > {(paramData.CurPage - 1) * paramData.PageSize}");
            return(builder.ToString());
        }
 public RelativeDataParser(IDynamicQuery dynamicQuery, MasterConfiguration masterConfiguration)
 {
     _masterConfiguration = masterConfiguration;
     _dynamicQuery        = dynamicQuery;
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="commandBus"></param>
 /// <param name="queryService"></param>
 public DefaultExportHandler(ICommandBus commandBus, IDynamicQuery queryService)
     : base(null)
 {
     this.CommandBus   = commandBus;
     this.QueryService = queryService;
 }
 /// <summary>
 /// 获取所有记录集合
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="thisQuery"></param>
 /// <returns></returns>
 public static IEnumerable <DataRow> GetTableAll <T>(this IDynamicQuery thisQuery) where T : DataEntityBase
 {
     return(thisQuery.GetTable <T>(QueryParamater.Create()));
 }
Exemple #11
0
 public static string List <T>(this IDynamicQuery paramData, string appendWhere) where T : IEntity, new()
 {
     return(DynamicQuery.List <T>(paramData, appendWhere));
 }
        /// <summary>
        /// 是否存在
        /// </summary>
        public static bool ExistsById <T, TId>(this IDynamicQuery thisQuery, TId id) where T : DataEntityBase
        {
            var query = QueryParamater.Create(string.Format("ID={0}", id));

            return(thisQuery.Exists <T>(query));
        }
Exemple #13
0
 public Query(IDynamicQuery dynamicQuery)
 {
     _DynamicQuery = dynamicQuery;
 }
        /// <summary>
        /// 根据Id获取记录
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <typeparam name="TId"></typeparam>
        /// <param name="thisQuery"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public static T GetSingleObjectById <T, TId>(this IDynamicQuery thisQuery, TId id) where T : DataEntityBase
        {
            var query = QueryParamater.Create(string.Format("ID={0}", id));

            return(thisQuery.GetSingleObject <T>(query));
        }
Exemple #15
0
 public DynamicEditor(IDynamicQuery dynamicQuery)
 {
     _DynamicQuery = dynamicQuery;
 }
        protected virtual async Task <IQueryable <TSource> > AlterSourceAsync(IQueryable <TSource> source, IDynamicQuery query, CancellationToken cancellationToken)
        {
            foreach (var t in alterQueryableServices)
            {
                source = await t.AlterQueryableAsync(source, query, cancellationToken);
            }

            return(source);
        }
        protected async Task <IQueryExecutionResult <TDestination> > ProcessQueryAsync(IDynamicQuery query, CancellationToken cancellationToken = default)
        {
            var source = await GetQueryableAsync(query, cancellationToken);

            source = await AlterSourceAsync(source, query, cancellationToken);

            var options      = GetQueryExecutionOptions(source, query);
            var interceptors = this.GetInterceptors();

            foreach (var interceptor in interceptors)
            {
                queryHandlerAsync.AddInterceptor(interceptor);
            }

            var criteria = CreateCriteriaFromQuery(query);
            var result   = await queryHandlerAsync.ExecuteAsync <TSource, TDestination>(source, criteria, options, cancellationToken);

            return(result);
        }
 public virtual IQueryExecutionOptions GetQueryExecutionOptions(IQueryable <TSource> source, IDynamicQuery query)
 {
     return(new QueryExecutionOptions());
 }
 public DynamicEditor(IDynamicQuery dynamicQuery)
 {
     _DynamicQuery = dynamicQuery;
 }
        public async Task <GraphQLDynamicQueryExecutionResult <TDestination> > RunAsync(IDynamicQuery <TSource, TDestination, TParams> query, CancellationToken cancellationToken = default)
        {
            var result = await handler.HandleAsync(query);

            var outcome = new GraphQLDynamicQueryExecutionResult <TDestination>();

            outcome.FromResult(result);
            return(outcome);
        }
 public Task <IQueryExecutionResult <TDestination> > HandleAsync(IDynamicQuery <TSource, TDestination> query, CancellationToken cancellationToken = default)
 {
     return(ProcessQueryAsync(query, cancellationToken));
 }
Exemple #22
0
 public Query(IDynamicQuery dynamicQuery)
 {
     _DynamicQuery = dynamicQuery;
 }