Esempio n. 1
0
        private static bool ProcessTake(
            SqlSelect sqlSelect, TakeResultOperator takeResultOperator)
        {
            sqlSelect.AddLimit(takeResultOperator.GetConstantCount());

            return(false);
        }
            protected override Expression VisitEntityQueryable(Type elementType)
            {
                var queryMethodInfo = _queryModelVisitor._enumerableMethodProvider.QueryValues;
                var entityType      = QueryCompilationContext.Model.GetEntityType(elementType);

                var entityQuery = new SqlSelect().SetTableSource(entityType.StorageName);

                _queryModelVisitor._queriesBySource.Add(_querySource, entityQuery);

                if (_queryModelVisitor.QuerySourceRequiresMaterialization(_querySource))
                {
                    foreach (var property in entityType.Properties)
                    {
                        entityQuery.AddToProjection(property);
                    }

                    queryMethodInfo
                        = _queryModelVisitor._enumerableMethodProvider.QueryEntities
                          .MakeGenericMethod(elementType);
                }

                return(Expression.Call(
                           queryMethodInfo, QueryContextParameter, Expression.Constant(entityQuery)));
            }
        private static IAsyncEnumerable <TEntity> _QueryEntities <TEntity>(QueryContext queryContext, SqlSelect sqlSelect)
        {
            var relationalQueryContext = ((RelationalQueryContext)queryContext);

            return(new AsyncEnumerable <TEntity>(
                       relationalQueryContext.Connection,
                       sqlSelect.ToString(),
                       r => (TEntity)queryContext.StateManager
                       .GetOrMaterializeEntry(
                           queryContext.Model.GetEntityType(typeof(TEntity)),
                           relationalQueryContext.ValueReaderFactory.Create(r)).Entity,
                       queryContext.Logger));
        }
        private static IAsyncEnumerable <IValueReader> _QueryValues(QueryContext queryContext, SqlSelect sqlSelect)
        {
            var relationalQueryContext = (RelationalQueryContext)queryContext;

            return(new AsyncEnumerable <IValueReader>(
                       relationalQueryContext.Connection,
                       sqlSelect.ToString(),
                       r => relationalQueryContext.ValueReaderFactory.Create(r),
                       queryContext.Logger));
        }
Esempio n. 5
0
 private static bool ProcessDistinct(SqlSelect sqlSelect)
 {
     return(!sqlSelect.TryMakeDistinct());
 }
Esempio n. 6
0
        private static bool ProcessFirst(SqlSelect sqlSelect)
        {
            sqlSelect.AddLimit(1);

            return(false);
        }
Esempio n. 7
0
        private static bool ProcessSingle(SqlSelect sqlSelect)
        {
            sqlSelect.AddLimit(2);

            return(false);
        }