public Expression Translate(InMemoryQueryExpression queryExpression, Expression expression)
        {
            _queryExpression = queryExpression;
            _clientEval      = false;

            _projectionMembers.Push(new ProjectionMember());

            var result = Visit(expression);

            if (result == null)
            {
                _clientEval = true;

                result = Visit(expression);

                _projectionMapping.Clear();
            }

            _queryExpression.ReplaceProjectionMapping(_projectionMapping);
            _queryExpression = null;
            _projectionMapping.Clear();
            _projectionMembers.Clear();

            return(result);
        }
 public InMemoryShapedQueryExpression(IEntityType entityType)
 {
     QueryExpression  = new InMemoryQueryExpression(entityType);
     ShaperExpression = new EntityShaperExpression(
         entityType,
         new ProjectionBindingExpression(new ProjectionMember(), typeof(ValueBuffer)),
         false);
 }
        public Expression Translate(InMemoryQueryExpression inMemoryQueryExpression, Expression expression)
        {
            _inMemoryQueryExpression = inMemoryQueryExpression;

            try
            {
                return(Visit(expression));
            }
            finally
            {
                _inMemoryQueryExpression = null;
            }
        }
        public InMemoryShapedQueryExpression(IEntityType entityType)
        {
            QueryExpression = new InMemoryQueryExpression(entityType);
            var resultParameter = Parameter(typeof(InMemoryQueryExpression), "result");

            ShaperExpression = Lambda(new EntityShaperExpression(
                                          entityType,
                                          new ProjectionBindingExpression(
                                              QueryExpression,
                                              new ProjectionMember(),
                                              typeof(ValueBuffer)),
                                          false),
                                      resultParameter);
        }
Esempio n. 5
0
        protected override ShapedQueryExpression CreateShapedQueryExpression(Type elementType)
        {
            var entityType      = _model.FindEntityType(elementType);
            var queryExpression = new InMemoryQueryExpression(entityType);

            return(new ShapedQueryExpression(
                       queryExpression,
                       new EntityShaperExpression(
                           entityType,
                           new ProjectionBindingExpression(
                               queryExpression,
                               new ProjectionMember(),
                               typeof(ValueBuffer)),
                           false)));
        }
Esempio n. 6
0
        public Expression Translate(InMemoryQueryExpression queryExpression, Expression expression)
        {
            _queryExpression = queryExpression;

            _projectionMembers.Push(new ProjectionMember());

            var result = Visit(expression);

            _queryExpression.ApplyProjection(_projectionMapping);

            _queryExpression = null;
            _projectionMapping.Clear();
            _projectionMembers.Clear();

            return(result);
        }
Esempio n. 7
0
 public InMemoryProjectionBindingRemovingExpressionVisitor(InMemoryQueryExpression queryExpression)
 {
     _queryExpression = queryExpression;
 }
 private Expression TranslateExpression(
     InMemoryQueryExpression inMemoryQueryExpression,
     Expression expression)
 {
     return(_expressionTranslator.Translate(inMemoryQueryExpression, expression));
 }