示例#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);
        }
        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);
        }