Пример #1
0
        internal override bool Apply(ExpressionMetadataChainItem expressionMetadataChainItem, ModelQueryBuildConfig config)
        {
            if (expressionMetadataChainItem.Expression.Arguments.Count > 1 &&
                !base.Apply(expressionMetadataChainItem, config))
            {
                return(false);
            }
            var aggregationColumnName = RepositoryExpressionUtilities.GetAnyColumnName();

            config.SelectQuery.Columns.Items.Clear();
            config.SelectQuery.Columns.Items.Add(aggregationColumnName, new SelectQueryColumn()
            {
                Expression = new ColumnExpression()
                {
                    AggregationType  = AggregationType.Count,
                    ExpressionType   = EntitySchemaQueryExpressionType.Function,
                    FunctionType     = FunctionType.Aggregation,
                    FunctionArgument = new ColumnExpression()
                    {
                        ExpressionType = EntitySchemaQueryExpressionType.SchemaColumn,
                        ColumnPath     = "Id"
                    }
                }
            });
            return(true);
        }
Пример #2
0
        internal override bool Apply(ExpressionMetadataChainItem expression, ModelQueryBuildConfig config)
        {
            var filter = ModelQueryFilterBuilder.GenerateFilter(expression.ExpressionMetadata);

            config.SelectQuery.Filters.Items.Add(Guid.NewGuid().ToString(), filter);
            return(true);
        }
Пример #3
0
        private static bool ApplyExpressionChainItemOnSelectQuery(ExpressionMetadataChainItem expressionChainItem, ModelQueryBuildConfig selectQuery)
        {
            var expressionApplier = ExpressionApplier.GetApplier(expressionChainItem.Expression.Method.Name);

            expressionChainItem.IsAppliedToQuery = expressionApplier?.Apply(expressionChainItem, selectQuery) ?? false;
            return(expressionChainItem.IsAppliedToQuery);
        }
        internal override bool Apply(ExpressionMetadataChainItem expressionMetadataChainItem, ModelQueryBuildConfig config)
        {
            var methodName            = expressionMetadataChainItem.Expression.Method.Name;
            var aggregationColumnName = RepositoryExpressionUtilities.GetAggregationColumnName(methodName);

            config.SelectQuery.Columns.Items.Clear();
            config.SelectQuery.Columns.Items.Add(aggregationColumnName, GetAggregationColumn(methodName, expressionMetadataChainItem.ExpressionMetadata.Parameter.ColumnPath));
            return(true);
        }
 internal override bool Apply(ExpressionMetadataChainItem expressionMetadataChainItem, ModelQueryBuildConfig config)
 {
     if (expressionMetadataChainItem.Expression.Arguments.Count <= 1 || !base.Apply(expressionMetadataChainItem, config))
     {
         return(false);
     }
     config.SelectQuery.RowCount = 1;
     return(true);
 }
Пример #6
0
        internal override bool Apply(ExpressionMetadataChainItem expressionMetadataChainItem, ModelQueryBuildConfig config)
        {
            if (expressionMetadataChainItem.ExpressionMetadata.NodeType != ExpressionMetadataNodeType.Property)
            {
                return(false);
            }
            var rowCount = (int)(expressionMetadataChainItem?.ExpressionMetadata?.Parameter?.Value ?? 0);

            config.SelectQuery.RowCount = Math.Min(ModelQueryBuildConfig.MaxRowsCount, rowCount);
            return(true);
        }
        internal override bool Apply(ExpressionMetadataChainItem expressionMetadataChainItem, ModelQueryBuildConfig config)
        {
            if (expressionMetadataChainItem.ExpressionMetadata.NodeType != ExpressionMetadataNodeType.Column)
            {
                return(false);
            }

            var orderedColumn = GetOrAddColumn(config, expressionMetadataChainItem.ExpressionMetadata.Parameter.ColumnPath);

            ApplyOrderDirectionAndOrderPosition(orderedColumn, expressionMetadataChainItem.Expression, config);
            return(true);
        }
Пример #8
0
 internal abstract bool Apply(ExpressionMetadataChainItem expression, ModelQueryBuildConfig config);