Ejemplo n.º 1
0
        public override VfpExpression Visit(VfpNewInstanceExpression expression)
        {
            var arguments = expression.Arguments.Select(GetVfpExpression).ToList();

            return(new VfpNewInstanceExpression(expression.ResultType,
                                                VisitVfpExpressionList(arguments),
                                                CreateVfpRelatedEntityRefList(expression.Relationships)));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 4
0
        //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)));
 }