// Constructors /// <summary> /// Initializes a new instance of this class. /// </summary> /// <param name="session"></param> /// <param name="translatedQuery">The translated query.</param> /// <param name="parameterContext">The parameter context.</param> internal DelayedQueryResult(Session session, TranslatedQuery <TResult> translatedQuery, ParameterContext parameterContext) { ArgumentValidator.EnsureArgumentNotNull(session, "session"); ArgumentValidator.EnsureArgumentNotNull(translatedQuery, "translatedQuery"); ArgumentValidator.EnsureArgumentNotNull(parameterContext, "parameterContext"); Session = session; LifetimeToken = session.GetLifetimeToken(); materializer = translatedQuery.Materializer; tupleParameterBindings = translatedQuery.TupleParameterBindings; this.parameterContext = parameterContext; Task = new QueryTask(translatedQuery.DataSource, LifetimeToken, parameterContext); }
// Constructors /// <summary> /// Initializes a new instance of this class. /// </summary> /// <param name="session"></param> /// <param name="translatedQuery">The translated query.</param> /// <param name="outerParameterContext">The parameter context.</param> internal DelayedQuery(Session session, TranslatedQuery translatedQuery, ParameterContext outerParameterContext) { ArgumentValidator.EnsureArgumentNotNull(session, nameof(session)); ArgumentValidator.EnsureArgumentNotNull(translatedQuery, nameof(translatedQuery)); ArgumentValidator.EnsureArgumentNotNull(outerParameterContext, nameof(outerParameterContext)); Session = session; LifetimeToken = session.GetLifetimeToken(); materializer = translatedQuery.Materializer; parameterContext = new ParameterContext(outerParameterContext); foreach (var(parameter, tuple) in translatedQuery.TupleParameterBindings) { parameterContext.SetValue(parameter, tuple); } Task = new QueryTask(translatedQuery.DataSource, LifetimeToken, parameterContext); }
protected override Expression VisitSubQueryExpression(SubQueryExpression subQueryExpression) { // 1. Prepare subquery parameters. Parameter <Tuple> parameterOfTuple; Type elementType; ProjectionExpression projection; TranslatedQuery translatedQuery = PrepareSubqueryParameters(subQueryExpression, out parameterOfTuple, out elementType, out projection); // 2. Create constructor var subQueryCtor = typeof(SubQuery <>) .MakeGenericType(elementType) .GetConstructor(new[] { typeof(ProjectionExpression), typeof(TranslatedQuery), typeof(Parameter <Tuple>), typeof(Tuple), typeof(ItemMaterializationContext) }); // 3. Create result expression. var resultExpression = Expression.New( subQueryCtor, Expression.Constant(projection), Expression.Constant(translatedQuery), Expression.Constant(parameterOfTuple), tupleParameter, itemMaterializationContextParameter); return(Expression.Convert(resultExpression, subQueryExpression.Type)); }
public WhereClauseParserTests() { var mockValueProvider = new Mock <IValueProvider>(); valueProvider = mockValueProvider.Object; translatedQuery = new TranslatedQueryMock(); schema = new Schema() { IsDummy = false }; schema.AddColumn(new Column() { Name = "title", DataType = Common.DataType.String }); schema.AddColumn(new Column() { Name = "body", DataType = Common.DataType.String }); schema.AddColumn(new Column() { Name = "userkey", DataType = Common.DataType.String }); }
// Constructors /// <summary> /// Initializes a new instance of this class. /// </summary> /// <param name="session">The session.</param> /// <param name="translatedQuery">The translated query.</param> /// <param name="parameterContext">The parameter context.</param> internal Delayed(Session session, TranslatedQuery <T> translatedQuery, ParameterContext parameterContext) : base(session, translatedQuery, parameterContext) { }
// Constructors public DelayedSequence(Session session, TranslatedQuery <IEnumerable <T> > translatedQuery, ParameterContext parameterContext) : base(session, translatedQuery, parameterContext) { }
// Constructors /// <summary> /// Initializes a new instance of this class. /// </summary> /// <param name="session">The session.</param> /// <param name="translatedQuery">The translated query.</param> /// <param name="parameterContext">The parameter context.</param> internal DelayedScalarQuery(Session session, TranslatedQuery translatedQuery, ParameterContext parameterContext) : base(session, translatedQuery, parameterContext) { resultAccessMethod = translatedQuery.ResultAccessMethod; }