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); }