public virtual IQueryState Accept(AggregateQueryExpression exp) { List <DbExpression> dbArguments = new List <DbExpression>(exp.Arguments.Count); foreach (Expression argument in exp.Arguments) { var arg = (LambdaExpression)argument; ScopeParameterDictionary scopeParameters = this._resultElement.ScopeParameters.Clone(arg.Parameters[0], this._resultElement.MappingObjectExpression); var dbArgument = GeneralExpressionVisitor.ParseLambda(arg, scopeParameters, this._resultElement.ScopeTables); dbArguments.Add(dbArgument); } DbAggregateExpression dbAggregateExp = new DbAggregateExpression(exp.ElementType, exp.Method, dbArguments); MappingFieldExpression mfe = new MappingFieldExpression(exp.ElementType, dbAggregateExp); ResultElement result = new ResultElement(this._resultElement.ScopeParameters, this._resultElement.ScopeTables); result.MappingObjectExpression = mfe; result.FromTable = this._resultElement.FromTable; result.AppendCondition(this._resultElement.Condition); AggregateQueryState state = new AggregateQueryState(result); return(state); }
public override IQueryState Visit(AggregateQueryExpression exp) { IQueryState prevState = exp.PrevExpression.Accept(this); IQueryState state = prevState.Accept(exp); return(state); }
/// <summary> /// 类<see cref="Chloe.Query.Visitors.GeneralExpressionVisitor"/>有引用该方法[反射] /// </summary> /// <typeparam name="TResult"></typeparam> /// <param name="method"></param> /// <param name="arguments"></param> /// <returns></returns> public Query <TResult> CreateAggregateQuery <TResult>(MethodInfo method, List <Expression> arguments) { AggregateQueryExpression e = new AggregateQueryExpression(this._expression, method, arguments); var q = new Query <TResult>(this._dbContext, e, false); return(q); }
public virtual IQueryState Accept(AggregateQueryExpression exp) { List <DbExpression> dbArguments = new List <DbExpression>(exp.Arguments.Count); foreach (Expression argument in exp.Arguments) { var arg = (LambdaExpression)argument; ScopeParameterDictionary scopeParameters = this._queryModel.ScopeParameters.Clone(arg.Parameters[0], this._queryModel.ResultModel); var dbArgument = GeneralExpressionParser.Parse(arg, scopeParameters, this._queryModel.ScopeTables); dbArguments.Add(dbArgument); } DbAggregateExpression dbAggregateExp = new DbAggregateExpression(exp.ElementType, exp.Method, dbArguments); PrimitiveObjectModel resultModel = new PrimitiveObjectModel(exp.ElementType, dbAggregateExp); QueryModel queryModel = new QueryModel(this._queryModel.ScopeParameters, this._queryModel.ScopeTables, this._queryModel.IgnoreFilters); queryModel.ResultModel = resultModel; queryModel.FromTable = this._queryModel.FromTable; queryModel.AppendCondition(this._queryModel.Condition); AggregateQueryState state = new AggregateQueryState(queryModel); return(state); }
InternalQuery <TResult> CreateAggregateQuery <TResult>(MethodInfo method, List <Expression> parameters) { AggregateQueryExpression e = new AggregateQueryExpression(this._expression, method, parameters); var q = new Query <TResult>(this._dbContext, e, false); InternalQuery <TResult> iterator = q.GenerateIterator(); return(iterator); }
public override IQueryState Accept(AggregateQueryExpression exp) { IQueryState subQueryState = this.AsSubQueryState(); IQueryState state = subQueryState.Accept(exp); return(state); }
InternalQuery <TReturn> CreateAggregateQuery <TReturn>(string methodName, List <Expression> parameters) { MethodInfo method = this.GetCalledMethod(methodName, parameters); AggregateQueryExpression e = new AggregateQueryExpression(this._expression, method, parameters); var q = new Query <TReturn>(this._dbContext, e, false); InternalQuery <TReturn> iterator = q.GenerateIterator(); return(iterator); }
public virtual IQueryState Accept(AggregateQueryExpression exp) { List <DbExpression> dbParameters = new List <DbExpression>(exp.Parameters.Count); foreach (Expression pExp in exp.Parameters) { var dbExp = GeneralExpressionVisitor.VisitPredicate((LambdaExpression)pExp, this.MoeList); dbParameters.Add(dbExp); } DbAggregateExpression dbAggregateExp = new DbAggregateExpression(exp.ElementType, exp.Method, dbParameters); MappingFieldExpression mfe = new MappingFieldExpression(exp.ElementType, dbAggregateExp); ResultElement result = new ResultElement(); result.MappingObjectExpression = mfe; result.FromTable = this._resultElement.FromTable; result.AppendCondition(this._resultElement.Condition); AggregateQueryState state = new AggregateQueryState(result); return(state); }
public override JoinQueryResult Visit(AggregateQueryExpression exp) { JoinQueryResult ret = this.Visit(exp); return(ret); }