protected virtual IQueryable <TResource> ApplyQueryLayer(QueryLayer layer) { _traceWriter.LogMethodStart(new { layer }); if (layer == null) { throw new ArgumentNullException(nameof(layer)); } IQueryable <TResource> source = GetAll(); var queryableHandlers = _constraintProviders .SelectMany(p => p.GetConstraints()) .Where(expressionInScope => expressionInScope.Scope == null) .Select(expressionInScope => expressionInScope.Expression) .OfType <QueryableHandlerExpression>() .ToArray(); foreach (var queryableHandler in queryableHandlers) { source = queryableHandler.Apply(source); } var nameFactory = new LambdaParameterNameFactory(); var builder = new QueryableBuilder(source.Expression, source.ElementType, typeof(Queryable), nameFactory, _resourceFactory, _resourceGraph, _dbContext.Model); var expression = builder.ApplyQuery(layer); return(source.Provider.CreateQuery <TResource>(expression)); }
public MongoQueryableBuilder(Expression source, Type elementType, Type extensionType, LambdaParameterNameFactory nameFactory, IResourceFactory resourceFactory, IModel entityModel, LambdaScopeFactory?lambdaScopeFactory = null) : base(source, elementType, extensionType, nameFactory, resourceFactory, entityModel, lambdaScopeFactory) { _elementType = elementType; _extensionType = extensionType; _nameFactory = nameFactory; _lambdaScopeFactory = lambdaScopeFactory ?? new LambdaScopeFactory(nameFactory); }
public MongoDbQueryableBuilder(Expression source, Type elementType, Type extensionType, LambdaParameterNameFactory nameFactory, IResourceFactory resourceFactory, IResourceContextProvider resourceContextProvider, IModel entityModel, LambdaScopeFactory lambdaScopeFactory = null) : base(source, elementType, extensionType, nameFactory, resourceFactory, resourceContextProvider, entityModel, lambdaScopeFactory) { _elementType = elementType ?? throw new ArgumentNullException(nameof(elementType)); _extensionType = extensionType ?? throw new ArgumentNullException(nameof(extensionType)); _lambdaScopeFactory = lambdaScopeFactory ?? new LambdaScopeFactory(nameFactory); }
protected virtual IQueryable <TResource> ApplyQueryLayer(QueryLayer layer) { _traceWriter.LogMethodStart(new { layer }); ArgumentGuard.NotNull(layer, nameof(layer)); QueryLayer rewrittenLayer = layer; if (EntityFrameworkCoreSupport.Version.Major < 5) { var writer = new MemoryLeakDetectionBugRewriter(); rewrittenLayer = writer.Rewrite(layer); } IQueryable <TResource> source = GetAll(); // @formatter:wrap_chained_method_calls chop_always // @formatter:keep_existing_linebreaks true QueryableHandlerExpression[] queryableHandlers = _constraintProviders .SelectMany(provider => provider.GetConstraints()) .Where(expressionInScope => expressionInScope.Scope == null) .Select(expressionInScope => expressionInScope.Expression) .OfType <QueryableHandlerExpression>() .ToArray(); // @formatter:keep_existing_linebreaks restore // @formatter:wrap_chained_method_calls restore foreach (QueryableHandlerExpression queryableHandler in queryableHandlers) { source = queryableHandler.Apply(source); } var nameFactory = new LambdaParameterNameFactory(); var builder = new QueryableBuilder(source.Expression, source.ElementType, typeof(Queryable), nameFactory, _resourceFactory, _resourceGraph, _dbContext.Model); Expression expression = builder.ApplyQuery(rewrittenLayer); return(source.Provider.CreateQuery <TResource>(expression)); }
protected virtual IMongoQueryable <TResource> ApplyQueryLayer(QueryLayer layer) { if (layer == null) { throw new ArgumentNullException(nameof(layer)); } var queryExpressionValidator = new MongoDbQueryExpressionValidator(); queryExpressionValidator.Validate(layer); AssertNoRelationshipsInSparseFieldSets(); var source = GetAll(); var queryableHandlers = _constraintProviders .SelectMany(p => p.GetConstraints()) .Where(expressionInScope => expressionInScope.Scope == null) .Select(expressionInScope => expressionInScope.Expression) .OfType <QueryableHandlerExpression>() .ToArray(); foreach (var queryableHandler in queryableHandlers) { source = queryableHandler.Apply(source); } var nameFactory = new LambdaParameterNameFactory(); var builder = new MongoDbQueryableBuilder( source.Expression, source.ElementType, typeof(Queryable), nameFactory, _resourceFactory, _resourceContextProvider, new MongoDbModel(_resourceContextProvider)); var expression = builder.ApplyQuery(layer); return((IMongoQueryable <TResource>)source.Provider.CreateQuery <TResource>(expression)); }
#pragma warning disable AV1130 // Return type in method signature should be an interface to an unchangeable collection protected virtual IMongoQueryable <TResource> ApplyQueryLayer(QueryLayer queryLayer) #pragma warning restore AV1130 // Return type in method signature should be an interface to an unchangeable collection { ArgumentGuard.NotNull(queryLayer, nameof(queryLayer)); var queryExpressionValidator = new MongoQueryExpressionValidator(); queryExpressionValidator.Validate(queryLayer); AssertNoRelationshipsInSparseFieldSets(); IQueryable <TResource> source = GetAll(); // @formatter:wrap_chained_method_calls chop_always // @formatter:keep_existing_linebreaks true QueryableHandlerExpression[] queryableHandlers = _constraintProviders .SelectMany(provider => provider.GetConstraints()) .Where(expressionInScope => expressionInScope.Scope == null) .Select(expressionInScope => expressionInScope.Expression) .OfType <QueryableHandlerExpression>() .ToArray(); // @formatter:keep_existing_linebreaks restore // @formatter:wrap_chained_method_calls restore foreach (QueryableHandlerExpression queryableHandler in queryableHandlers) { source = queryableHandler.Apply(source); } var nameFactory = new LambdaParameterNameFactory(); var builder = new MongoQueryableBuilder(source.Expression, source.ElementType, typeof(Queryable), nameFactory, _resourceFactory, new MongoModel(_resourceGraph)); Expression expression = builder.ApplyQuery(queryLayer); return((IMongoQueryable <TResource>)source.Provider.CreateQuery <TResource>(expression)); }
public MongoWhereClauseBuilder(Expression source, LambdaScope lambdaScope, Type extensionType, LambdaParameterNameFactory nameFactory) : base(source, lambdaScope, extensionType, nameFactory) { }