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)); }
private static bool ProcessDistinct(SqlSelect sqlSelect) { return(!sqlSelect.TryMakeDistinct()); }
private static bool ProcessFirst(SqlSelect sqlSelect) { sqlSelect.AddLimit(1); return(false); }
private static bool ProcessSingle(SqlSelect sqlSelect) { sqlSelect.AddLimit(2); return(false); }