public override VfpExpression Visit(VfpNewInstanceExpression expression) { var arguments = expression.Arguments.Select(GetVfpExpression).ToList(); return(new VfpNewInstanceExpression(expression.ResultType, VisitVfpExpressionList(arguments), CreateVfpRelatedEntityRefList(expression.Relationships))); }
public override VfpExpression Visit(VfpNewInstanceExpression expression) { _canRewrite = true; var result = base.Visit(expression); _canRewrite = false; return(result); }
public override VfpExpression Visit(VfpProjectExpression expression) { VfpProjectExpression innerProjectionExpression; bool hasNotExpression; if (GetInnerProjectionExpression(expression, out innerProjectionExpression, out hasNotExpression)) { var innerNewInstanceExpression = innerProjectionExpression.Projection as VfpNewInstanceExpression; if (innerNewInstanceExpression != null) { var innerConstExpression = innerNewInstanceExpression.Arguments[0] as VfpConstantExpression; if (innerConstExpression != null) { var countExpression = new VfpConstantExpression(innerConstExpression.ResultType, "COUNT(*)"); innerNewInstanceExpression = new VfpNewInstanceExpression(innerNewInstanceExpression.ResultType, new VfpExpressionList(new List <VfpExpression> { countExpression })); innerProjectionExpression = new VfpProjectExpression(innerProjectionExpression.ResultType, innerProjectionExpression.Input, innerNewInstanceExpression); VfpExpression comparison = new VfpComparisonExpression(VfpExpressionKind.LessThan, PrimitiveTypeKind.Boolean.ToTypeUsage(), new VfpConstantExpression( PrimitiveTypeKind.Int32.ToTypeUsage(), 0), innerProjectionExpression); if (!hasNotExpression) { comparison = new VfpNotExpression(comparison.ResultType, comparison); } innerNewInstanceExpression = new VfpNewInstanceExpression(innerNewInstanceExpression.ResultType, new VfpExpressionList(new List <VfpExpression> { comparison })); innerProjectionExpression = new VfpProjectExpression(expression.ResultType, expression.Input, innerNewInstanceExpression); return(innerProjectionExpression); } } } return(base.Visit(expression)); }
//public override VfpExpression Visit(VfpLimitExpression expression) { // this.WriteMethodName(MethodInfo.GetCurrentMethod()); // throw new NotImplementedException(); //} public override VfpExpression Visit(VfpNewInstanceExpression expression) { Write(expression.Arguments); return(expression); }
public virtual VfpExpression Visit(VfpNewInstanceExpression expression) { return(new VfpNewInstanceExpression(expression.ResultType, VisitVfpExpressionList(expression.Arguments), CreateVfpRelatedEntityRefList(expression.Relationships))); }