public void SetUp ()
 {
   _nodeTypeProviderMock1 = MockRepository.GenerateStrictMock<INodeTypeProvider>();
   _nodeTypeProviderMock2 = MockRepository.GenerateStrictMock<INodeTypeProvider> ();
   _compoundProvider = new CompoundNodeTypeProvider (new[] { _nodeTypeProviderMock1, _nodeTypeProviderMock2 });
   _methodInfo = typeof (object).GetMethod ("ToString");
 }
		public NHibernateNodeTypeProvider()
		{
			var methodInfoRegistry = new MethodInfoBasedNodeTypeRegistry();

			methodInfoRegistry.Register(new[] { typeof(EagerFetchingExtensionMethods).GetMethod("Fetch") }, typeof(FetchOneExpressionNode));
			methodInfoRegistry.Register(new[] { typeof(EagerFetchingExtensionMethods).GetMethod("FetchMany") }, typeof(FetchManyExpressionNode));
			methodInfoRegistry.Register(new[] { typeof(EagerFetchingExtensionMethods).GetMethod("ThenFetch") }, typeof(ThenFetchOneExpressionNode));
			methodInfoRegistry.Register(new[] { typeof(EagerFetchingExtensionMethods).GetMethod("ThenFetchMany") }, typeof(ThenFetchManyExpressionNode));

			methodInfoRegistry.Register(
				new[]
					{
						typeof(LinqExtensionMethods).GetMethod("Cacheable"),
						typeof(LinqExtensionMethods).GetMethod("CacheMode"),
						typeof(LinqExtensionMethods).GetMethod("CacheRegion"),
					}, typeof(CacheableExpressionNode));

			methodInfoRegistry.Register(
				new[]
					{
						ReflectionHelper.GetMethodDefinition(() => Queryable.AsQueryable(null)),
						ReflectionHelper.GetMethodDefinition(() => Queryable.AsQueryable<object>(null)),
					}, typeof(AsQueryableExpressionNode)
				);

			var nodeTypeProvider = ExpressionTreeParser.CreateDefaultNodeTypeProvider();
			nodeTypeProvider.InnerProviders.Add(methodInfoRegistry);
			defaultNodeTypeProvider = nodeTypeProvider;
		}
        private SubQueryFindingExpressionTreeVisitor(INodeTypeProvider nodeTypeProvider)
        {
            ArgumentUtility.CheckNotNull ("nodeTypeProvider", nodeTypeProvider);

              _nodeTypeProvider = nodeTypeProvider;
              _expressionTreeParser = new ExpressionTreeParser (_nodeTypeProvider, new NullExpressionTreeProcessor());
              _queryParser = new QueryParser (_expressionTreeParser);
        }
        public static Expression Process(Expression expressionTree, INodeTypeProvider nodeTypeProvider)
        {
            ArgumentUtility.CheckNotNull ("expressionTree", expressionTree);
              ArgumentUtility.CheckNotNull ("nodeTypeProvider", nodeTypeProvider);

              var visitor = new SubQueryFindingExpressionTreeVisitor (nodeTypeProvider);
              return visitor.VisitExpression (expressionTree);
        }
    public ClauseGenerationContext (
        INodeTypeProvider nodeTypeProvider)
        : this()
    {
      ArgumentUtility.CheckNotNull ("nodeTypeProvider", nodeTypeProvider);

      _lookup = new Dictionary<IExpressionNode, object> ();
      _nodeTypeProvider = nodeTypeProvider;
    }
Ejemplo n.º 6
0
 /// <summary>
 /// Creates a default <see cref="CompoundNodeTypeProvider"/> that already has all expression node parser defined by the re-linq assembly 
 /// registered. Users can add inner providers to register their own expression node parsers.
 /// </summary>
 /// <returns>A default <see cref="CompoundNodeTypeProvider"/> that already has all expression node parser defined by the re-linq assembly 
 /// registered.</returns>
 public static CompoundNodeTypeProvider CreateDefaultNodeTypeProvider ()
 {
   var innerProviders = new INodeTypeProvider[]
                        {
                            MethodInfoBasedNodeTypeRegistry.CreateFromRelinqAssembly(),
                            MethodNameBasedNodeTypeRegistry.CreateFromRelinqAssembly()
                        };
   return new CompoundNodeTypeProvider (innerProviders);
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Creates a default <see cref="CompoundNodeTypeProvider"/> that already has all expression node parser defined by the re-linq assembly 
 /// registered. Users can add inner providers to register their own expression node parsers.
 /// </summary>
 /// <returns>A default <see cref="CompoundNodeTypeProvider"/> that already has all expression node parser defined by the re-linq assembly 
 /// registered.</returns>
 public static CompoundNodeTypeProvider CreateDefaultNodeTypeProvider ()
 {
   var searchedTypes = typeof (MethodInfoBasedNodeTypeRegistry).Assembly.GetTypes ();
   var innerProviders = new INodeTypeProvider[]
                        {
                            MethodInfoBasedNodeTypeRegistry.CreateFromTypes (searchedTypes),
                            MethodNameBasedNodeTypeRegistry.CreateFromTypes(searchedTypes)
                        };
   return new CompoundNodeTypeProvider (innerProviders);
 }
Ejemplo n.º 8
0
        protected virtual ExpressionTreeParser CreateExpressionTreeParser(INodeTypeProvider customNodeTypeProvider)
        {
            ArgumentUtility.CheckNotNull("customNodeTypeProvider", customNodeTypeProvider);

            var nodeTypeProvider = ExpressionTreeParser.CreateDefaultNodeTypeProvider();

            nodeTypeProvider.InnerProviders.Insert(0, customNodeTypeProvider);

            var transformerRegistry = ExpressionTransformerRegistry.CreateDefault();
            var processor           = ExpressionTreeParser.CreateDefaultProcessor(transformerRegistry);

            return(new ExpressionTreeParser(nodeTypeProvider, processor));
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Creates a default <see cref="CompoundNodeTypeProvider"/> that already has all expression node parser defined by the re-linq assembly
        /// registered. Users can add inner providers to register their own expression node parsers.
        /// </summary>
        /// <returns>A default <see cref="CompoundNodeTypeProvider"/> that already has all expression node parser defined by the re-linq assembly
        /// registered.</returns>
        public static CompoundNodeTypeProvider CreateDefaultNodeTypeProvider()
        {
#if NETFX_CORE
            var searchedTypes = typeof(MethodInfoBasedNodeTypeRegistry).GetTypeInfo().Assembly.DefinedTypes.Select(ti => ti.AsType()).ToList();
#else
            var searchedTypes = typeof(MethodInfoBasedNodeTypeRegistry).GetTypeInfo().Assembly.GetTypes().Select(ti => ti.AsType()).ToList();
#endif
            var innerProviders = new INodeTypeProvider[]
            {
                MethodInfoBasedNodeTypeRegistry.CreateFromTypes(searchedTypes),
                MethodNameBasedNodeTypeRegistry.CreateFromTypes(searchedTypes)
            };
            return(new CompoundNodeTypeProvider(innerProviders));
        }
Ejemplo n.º 10
0
        private static QueryModel CreateQueryModel(this DbContext dbContext, Expression expression)
        {
            INodeTypeProvider nodeTypeProvider = dbContext.GetService <MethodInfoBasedNodeTypeRegistry>();
            var queryParser = new QueryParser(
                new ExpressionTreeParser(nodeTypeProvider,
                                         new CompoundExpressionTreeProcessor(
                                             new IExpressionTreeProcessor[]
            {
                new PartialEvaluatingExpressionTreeProcessor(new ApiCompilationFilter()),
                new TransformingExpressionTreeProcessor(ExpressionTransformerRegistry.CreateDefault())
            })));

            return(queryParser.GetParsedQuery(expression));
        }
Ejemplo n.º 11
0
        private static Func <QueryContext, TResult> CompileQueryCore <TResult>(
            Expression query, INodeTypeProvider nodeTypeProvider, IDatabase database, ILogger logger, Type contextType)
        {
            var queryModel
                = CreateQueryParser(nodeTypeProvider)
                  .GetParsedQuery(query);

            var resultItemType
                = (queryModel.GetOutputDataInfo()
                   as StreamedSequenceInfo)?.ResultItemType
                  ?? typeof(TResult);

            if (resultItemType == typeof(TResult))
            {
                var compiledQuery = database.CompileQuery <TResult>(queryModel);

                return(qc =>
                {
                    try
                    {
                        return compiledQuery(qc).First();
                    }
                    catch (Exception exception)
                    {
                        logger
                        .LogError(
                            CoreEventId.DatabaseError,
                            () => new DatabaseErrorLogState(contextType),
                            exception,
                            e => CoreStrings.LogExceptionDuringQueryIteration(Environment.NewLine, e));

                        throw;
                    }
                });
            }

            try
            {
                return((Func <QueryContext, TResult>)CompileQueryMethod
                       .MakeGenericMethod(resultItemType)
                       .Invoke(database, new object[] { queryModel }));
            }
            catch (TargetInvocationException e)
            {
                ExceptionDispatchInfo.Capture(e.InnerException).Throw();

                throw;
            }
        }
Ejemplo n.º 12
0
        private Func <QueryContext, TResult> CompileQueryCore <TResult>(
            Expression query,
            INodeTypeProvider nodeTypeProvider,
            IDatabase database,
            IDiagnosticsLogger <DbLoggerCategory.Query> logger,
            Type contextType)
        {
            var queryModel
                = CreateQueryParser(nodeTypeProvider)
                  .GetParsedQuery(query);

            var resultItemType
                = (queryModel.GetOutputDataInfo()
                   as StreamedSequenceInfo)?.ResultItemType
                  ?? typeof(TResult);

            if (resultItemType == typeof(TResult))
            {
                var compiledQuery = database.CompileQuery <TResult>(queryModel);

                return(qc =>
                {
                    try
                    {
                        return compiledQuery(qc).First();
                    }
                    catch (Exception exception)
                    {
                        logger.QueryIterationFailed(contextType, exception);

                        throw;
                    }
                });
            }

            try
            {
                return((Func <QueryContext, TResult>)CompileQueryMethod
                       .MakeGenericMethod(resultItemType)
                       .Invoke(database, new object[] { queryModel }));
            }
            catch (TargetInvocationException e)
            {
                ExceptionDispatchInfo.Capture(e.InnerException).Throw();

                throw;
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public QueryModelGenerator(
            [NotNull] INodeTypeProviderFactory nodeTypeProviderFactory,
            [NotNull] ReLinq.IEvaluatableExpressionFilter reLinqEvaluatableExpressionFilter,
            [NotNull] IEvaluatableExpressionFilter evaluatableExpressionFilter,
            [NotNull] ICurrentDbContext currentDbContext)
        {
            Check.NotNull(nodeTypeProviderFactory, nameof(nodeTypeProviderFactory));
            Check.NotNull(reLinqEvaluatableExpressionFilter, nameof(reLinqEvaluatableExpressionFilter));
            Check.NotNull(evaluatableExpressionFilter, nameof(evaluatableExpressionFilter));
            Check.NotNull(currentDbContext, nameof(currentDbContext));

            _nodeTypeProvider = nodeTypeProviderFactory.Create();
            _reLinqEvaluatableExpressionFilter = reLinqEvaluatableExpressionFilter;
            _currentDbContext           = currentDbContext;
            EvaluatableExpressionFilter = evaluatableExpressionFilter;
        }
        public NHibernateNodeTypeProvider()
        {
            var methodInfoRegistry = new MethodInfoBasedNodeTypeRegistry();

            methodInfoRegistry.Register(
                new[] { ReflectionHelper.GetMethodDefinition(() => EagerFetchingExtensionMethods.Fetch <object, object>(null, null)) },
                typeof(FetchOneExpressionNode));
            methodInfoRegistry.Register(
                new[] { ReflectionHelper.GetMethodDefinition(() => EagerFetchingExtensionMethods.FetchMany <object, object>(null, null)) },
                typeof(FetchManyExpressionNode));
            methodInfoRegistry.Register(
                new[] { ReflectionHelper.GetMethodDefinition(() => EagerFetchingExtensionMethods.ThenFetch <object, object, object>(null, null)) },
                typeof(ThenFetchOneExpressionNode));
            methodInfoRegistry.Register(
                new[] { ReflectionHelper.GetMethodDefinition(() => EagerFetchingExtensionMethods.ThenFetchMany <object, object, object>(null, null)) },
                typeof(ThenFetchManyExpressionNode));

            methodInfoRegistry.Register(
                new[]
            {
                ReflectionHelper.GetMethodDefinition(() => LinqExtensionMethods.Cacheable <object>(null)),
                ReflectionHelper.GetMethodDefinition(() => LinqExtensionMethods.CacheMode <object>(null, CacheMode.Normal)),
                ReflectionHelper.GetMethodDefinition(() => LinqExtensionMethods.CacheRegion <object>(null, null)),
            }, typeof(CacheableExpressionNode));

            methodInfoRegistry.Register(
                new[]
            {
                ReflectionHelper.GetMethodDefinition(() => Queryable.AsQueryable(null)),
                ReflectionHelper.GetMethodDefinition(() => Queryable.AsQueryable <object>(null)),
            }, typeof(AsQueryableExpressionNode)
                );

            methodInfoRegistry.Register(
                new[]
            {
                ReflectionHelper.GetMethodDefinition(() => LinqExtensionMethods.Timeout <object>(null, 0)),
            }, typeof(TimeoutExpressionNode)
                );

            var nodeTypeProvider = ExpressionTreeParser.CreateDefaultNodeTypeProvider();

            nodeTypeProvider.InnerProviders.Add(methodInfoRegistry);
            defaultNodeTypeProvider = nodeTypeProvider;
        }
Ejemplo n.º 15
0
        public static IList <string> ExtractPaths(Expression expression, INodeTypeProvider nodeTypeProvider, bool selectMode, bool includeProtocolProps, INamingScheme namingScheme, string separator)
        {
            var paths = ExtractPaths(expression, nodeTypeProvider, selectMode, includeProtocolProps, namingScheme);

            if (selectMode)
            {
                var lookup = paths.ToLookup(path => path[0] == "*");
                var dupes  = lookup[true].SelectMany(wildcard => lookup[false].Select(path => new { wildcard, path }))
                             .Where(pair => pair.wildcard.Skip(1).SequenceEqual(pair.path.Skip(1)))
                             .Select(pair => pair.path)
                             .ToList();
                paths = paths.Except(dupes).ToList();
            }
            return(paths
                   .Select(path => string.Join(separator, path.Reverse().ToArray()))
                   .Distinct()
                   .ToList());
        }
Ejemplo n.º 16
0
        private static INodeTypeProvider CreateNodeTypeProvider(
            MethodInfoBasedNodeTypeRegistry methodInfoBasedNodeTypeRegistry)
        {
            methodInfoBasedNodeTypeRegistry
            .Register(TrackingExpressionNode.SupportedMethods, typeof(TrackingExpressionNode));

            methodInfoBasedNodeTypeRegistry
            .Register(IncludeExpressionNode.SupportedMethods, typeof(IncludeExpressionNode));

            methodInfoBasedNodeTypeRegistry
            .Register(ThenIncludeExpressionNode.SupportedMethods, typeof(ThenIncludeExpressionNode));

            var innerProviders
                = new INodeTypeProvider[]
                {
                methodInfoBasedNodeTypeRegistry,
                MethodNameBasedNodeTypeRegistry.CreateFromRelinqAssembly()
                };

            return(new CompoundNodeTypeProvider(innerProviders));
        }
Ejemplo n.º 17
0
      /// <summary>
      /// Creates a default <see cref="CompoundNodeTypeProvider"/> that already has all expression node parser defined by the re-linq assembly 
      /// registered. Users can add inner providers to register their own expression node parsers.
      /// </summary>
      /// <returns>A default <see cref="CompoundNodeTypeProvider"/> that already has all expression node parser defined by the re-linq assembly 
      /// registered.</returns>
      public static CompoundNodeTypeProvider CreateDefaultNodeTypeProvider()
      {
          Type[] reflectedTypes;
          try
          {
              reflectedTypes = typeof(MethodInfoBasedNodeTypeRegistry).Assembly.GetTypes();
          }
          catch (ReflectionTypeLoadException e)
          {
              reflectedTypes = e.Types;
          }
          var searchedTypes = reflectedTypes.Where(t => t != null).ToArray();


      var innerProviders = new INodeTypeProvider[]
                           {
                               MethodInfoBasedNodeTypeRegistry.CreateFromTypes (searchedTypes),
                               MethodNameBasedNodeTypeRegistry.CreateFromTypes(searchedTypes)
                           };
      return new CompoundNodeTypeProvider (innerProviders);
    }
Ejemplo n.º 18
0
        /// <summary>
        /// Creates a default <see cref="CompoundNodeTypeProvider"/> that already has all expression node parser defined by the re-linq assembly
        /// registered. Users can add inner providers to register their own expression node parsers.
        /// </summary>
        /// <returns>A default <see cref="CompoundNodeTypeProvider"/> that already has all expression node parser defined by the re-linq assembly
        /// registered.</returns>
        public static CompoundNodeTypeProvider CreateDefaultNodeTypeProvider()
        {
            Type[] reflectedTypes;
            try
            {
                reflectedTypes = typeof(MethodInfoBasedNodeTypeRegistry).Assembly.GetTypes();
            }
            catch (ReflectionTypeLoadException e)
            {
                reflectedTypes = e.Types;
            }
            var searchedTypes = reflectedTypes.Where(t => t != null).ToArray();


            var innerProviders = new INodeTypeProvider[]
            {
                MethodInfoBasedNodeTypeRegistry.CreateFromTypes(searchedTypes),
                MethodNameBasedNodeTypeRegistry.CreateFromTypes(searchedTypes)
            };

            return(new CompoundNodeTypeProvider(innerProviders));
        }
        private static CompoundNodeTypeProvider CreateNodeTypeProvider()
        {
            var searchedTypes
                = typeof(MethodInfoBasedNodeTypeRegistry).GetTypeInfo().Assembly.DefinedTypes
                  .Select(ti => ti.AsType())
                  .ToList();

            var methodInfoBasedNodeTypeRegistry
                = MethodInfoBasedNodeTypeRegistry.CreateFromTypes(searchedTypes);

            methodInfoBasedNodeTypeRegistry
            .Register(AsNoTrackingExpressionNode.SupportedMethods, typeof(AsNoTrackingExpressionNode));

            var innerProviders
                = new INodeTypeProvider[]
                {
                methodInfoBasedNodeTypeRegistry,
                MethodNameBasedNodeTypeRegistry.CreateFromTypes(searchedTypes)
                };

            return(new CompoundNodeTypeProvider(innerProviders));
        }
Ejemplo n.º 20
0
        public NHibernateNodeTypeProvider()
        {
            var methodInfoRegistry = new MethodInfoBasedNodeTypeRegistry();

            methodInfoRegistry.Register(
                new[] { ReflectHelper.GetMethodDefinition(() => EagerFetchingExtensionMethods.Fetch <object, object>(null, null)) },
                typeof(FetchOneExpressionNode));
            methodInfoRegistry.Register(
                new[] { ReflectHelper.GetMethodDefinition(() => EagerFetchingExtensionMethods.FetchMany <object, object>(null, null)) },
                typeof(FetchManyExpressionNode));
            methodInfoRegistry.Register(
                new[] { ReflectHelper.GetMethodDefinition(() => EagerFetchingExtensionMethods.ThenFetch <object, object, object>(null, null)) },
                typeof(ThenFetchOneExpressionNode));
            methodInfoRegistry.Register(
                new[] { ReflectHelper.GetMethodDefinition(() => EagerFetchingExtensionMethods.ThenFetchMany <object, object, object>(null, null)) },
                typeof(ThenFetchManyExpressionNode));

            var nodeTypeProvider = ExpressionTreeParser.CreateDefaultNodeTypeProvider();

            nodeTypeProvider.InnerProviders.Add(methodInfoRegistry);
            defaultNodeTypeProvider = nodeTypeProvider;
        }
        private static ReadonlyNodeTypeProvider CreateNodeTypeProvider()
        {
            var methodInfoBasedNodeTypeRegistry = MethodInfoBasedNodeTypeRegistry.CreateFromRelinqAssembly();

            methodInfoBasedNodeTypeRegistry
            .Register(QueryAnnotationExpressionNode.SupportedMethods, typeof(QueryAnnotationExpressionNode));

            methodInfoBasedNodeTypeRegistry
            .Register(IncludeExpressionNode.SupportedMethods, typeof(IncludeExpressionNode));

            methodInfoBasedNodeTypeRegistry
            .Register(ThenIncludeExpressionNode.SupportedMethods, typeof(ThenIncludeExpressionNode));

            var innerProviders
                = new INodeTypeProvider[]
                {
                methodInfoBasedNodeTypeRegistry,
                MethodNameBasedNodeTypeRegistry.CreateFromRelinqAssembly()
                };

            return(new ReadonlyNodeTypeProvider(new CompoundNodeTypeProvider(innerProviders)));
        }
Ejemplo n.º 22
0
        public NHibernateNodeTypeProvider()
        {
            var methodInfoRegistry = new MethodInfoBasedNodeTypeRegistry();

            methodInfoRegistry.Register(new[] { typeof(EagerFetchingExtensionMethods).GetMethod("Fetch") }, typeof(FetchOneExpressionNode));
            methodInfoRegistry.Register(new[] { typeof(EagerFetchingExtensionMethods).GetMethod("FetchMany") }, typeof(FetchManyExpressionNode));
            methodInfoRegistry.Register(new[] { typeof(EagerFetchingExtensionMethods).GetMethod("ThenFetch") }, typeof(ThenFetchOneExpressionNode));
            methodInfoRegistry.Register(new[] { typeof(EagerFetchingExtensionMethods).GetMethod("ThenFetchMany") }, typeof(ThenFetchManyExpressionNode));

            methodInfoRegistry.Register(
                new[]
            {
                typeof(LinqExtensionMethods).GetMethod("Cacheable"),
                typeof(LinqExtensionMethods).GetMethod("CacheMode"),
                typeof(LinqExtensionMethods).GetMethod("CacheRegion"),
            }, typeof(CacheableExpressionNode));

            var nodeTypeProvider = ExpressionTreeParser.CreateDefaultNodeTypeProvider();

            nodeTypeProvider.InnerProviders.Add(methodInfoRegistry);
            defaultNodeTypeProvider = nodeTypeProvider;
        }
        /// <summary>
        ///     Creates a <see cref="INodeTypeProvider" />.
        /// </summary>
        /// <returns>The <see cref="INodeTypeProvider" />.</returns>
        public virtual INodeTypeProvider Create()
        {
            _methodInfoBasedNodeTypeRegistry
            .Register(TrackingExpressionNode.SupportedMethods, typeof(TrackingExpressionNode));

            _methodInfoBasedNodeTypeRegistry
            .Register(IncludeExpressionNode.SupportedMethods, typeof(IncludeExpressionNode));

            _methodInfoBasedNodeTypeRegistry
            .Register(StringIncludeExpressionNode.SupportedMethods, typeof(StringIncludeExpressionNode));

            _methodInfoBasedNodeTypeRegistry
            .Register(ThenIncludeExpressionNode.SupportedMethods, typeof(ThenIncludeExpressionNode));

            var innerProviders
                = new INodeTypeProvider[]
                {
                _methodInfoBasedNodeTypeRegistry,
                MethodNameBasedNodeTypeRegistry.CreateFromRelinqAssembly()
                };

            return(new CompoundNodeTypeProvider(innerProviders));
        }
Ejemplo n.º 24
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ExpressionTreeParser"/> class with a custom <see cref="INodeTypeProvider"/> and
 /// <see cref="IExpressionTreeProcessor"/> implementation.
 /// </summary>
 /// <param name="nodeTypeProvider">The <see cref="INodeTypeProvider"/> to use when parsing <see cref="Expression"/> trees. Use
 /// <see cref="CreateDefaultNodeTypeProvider"/> to create an instance of <see cref="CompoundNodeTypeProvider"/> that already includes all
 /// default node types. (The <see cref="CompoundNodeTypeProvider"/> can be customized as needed by adding or removing
 /// <see cref="CompoundNodeTypeProvider.InnerProviders"/>).</param>
 /// <param name="processor">The <see cref="IExpressionTreeProcessor"/> to apply to <see cref="Expression"/> trees before parsing their nodes. Use
 /// <see cref="CreateDefaultProcessor"/> to create an instance of <see cref="CompoundExpressionTreeProcessor"/> that already includes
 /// the default steps. (The <see cref="CompoundExpressionTreeProcessor"/> can be customized as needed by adding or removing
 /// <see cref="CompoundExpressionTreeProcessor.InnerProcessors"/>).</param>
 public ExpressionTreeParser(INodeTypeProvider nodeTypeProvider, IExpressionTreeProcessor processor)
 {
     _nodeTypeProvider           = nodeTypeProvider;
     _processor                  = processor;
     _methodCallExpressionParser = new MethodCallExpressionParser(_nodeTypeProvider);
 }
Ejemplo n.º 25
0
 private QueryParser CreateQueryParser(INodeTypeProvider nodeTypeProvider)
 => new QueryParser(
     new ExpressionTreeParser(
         nodeTypeProvider,
         new CompoundExpressionTreeProcessor(
             new IExpressionTreeProcessor[] { new PartialEvaluatingExpressionTreeProcessor(_reLinqEvaluatableExpressionFilter), new TransformingExpressionTreeProcessor(ExpressionTransformerRegistry.CreateDefault()) })));
Ejemplo n.º 26
0
 public MethodCallExpressionParser (INodeTypeProvider nodeTypeProvider)
 {
   ArgumentUtility.CheckNotNull ("nodeTypeProvider", nodeTypeProvider);
   _nodeTypeProvider = nodeTypeProvider;
 }
Ejemplo n.º 27
0
 static QueryParserHelper()
 {
     _nodeTypeProvider    = CreateDefaultNodeTypeProvider();
     _transformerRegistry = CreateDefaultTransformerRegistry();
     _prePartialEvaluationTransformerRegistry = CreatePrePartialEvaluationDefaultTransformerRegistry();
 }
 static QueryParserHelper()
 {
     _nodeTypeProvider    = CreateDefaultNodeTypeProvider();
     _transformerRegistry = CreateDefaultTransformerRegistry();
 }
Ejemplo n.º 29
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ExpressionTreeParser"/> class with a custom <see cref="INodeTypeProvider"/> and 
 /// <see cref="IExpressionTreeProcessor"/> implementation.
 /// </summary>
 /// <param name="nodeTypeProvider">The <see cref="INodeTypeProvider"/> to use when parsing <see cref="Expression"/> trees. Use 
 /// <see cref="CreateDefaultNodeTypeProvider"/> to create an instance of <see cref="CompoundNodeTypeProvider"/> that already includes all
 /// default node types. (The <see cref="CompoundNodeTypeProvider"/> can be customized as needed by adding or removing 
 /// <see cref="CompoundNodeTypeProvider.InnerProviders"/>).</param>
 /// <param name="processor">The <see cref="IExpressionTreeProcessor"/> to apply to <see cref="Expression"/> trees before parsing their nodes. Use
 /// <see cref="CreateDefaultProcessor"/> to create an instance of <see cref="CompoundExpressionTreeProcessor"/> that already includes
 /// the default steps. (The <see cref="CompoundExpressionTreeProcessor"/> can be customized as needed by adding or removing 
 /// <see cref="CompoundExpressionTreeProcessor.InnerProcessors"/>).</param>
 public ExpressionTreeParser (INodeTypeProvider nodeTypeProvider, IExpressionTreeProcessor processor)
 {
   ArgumentUtility.CheckNotNull ("nodeTypeProvider", nodeTypeProvider);
   ArgumentUtility.CheckNotNull ("processor", processor);
   
   _nodeTypeProvider = nodeTypeProvider;
   _processor = processor;
   _methodCallExpressionParser = new MethodCallExpressionParser (_nodeTypeProvider);
 }
        public static Expression Process(Expression expressionTree, INodeTypeProvider nodeTypeProvider)
        {
            var visitor = new SubQueryFindingExpressionTreeVisitor(nodeTypeProvider);

            return(visitor.VisitExpression(expressionTree));
        }
 private SubQueryFindingExpressionTreeVisitor(INodeTypeProvider nodeTypeProvider)
 {
     _nodeTypeProvider     = nodeTypeProvider;
     _expressionTreeParser = new ExpressionTreeParser(_nodeTypeProvider, new NullExpressionTreeProcessor());
     _queryParser          = new QueryParser(_expressionTreeParser);
 }
 public MongoNodeTypeProvider()
 {
     defaultNodeTypeProvider = ExpressionTreeParser.CreateDefaultNodeTypeProvider();
 }
Ejemplo n.º 33
0
 public MethodCallExpressionParser(INodeTypeProvider nodeTypeProvider)
 {
     ArgumentUtility.CheckNotNull("nodeTypeProvider", nodeTypeProvider);
     _nodeTypeProvider = nodeTypeProvider;
 }
Ejemplo n.º 34
0
 public NodeTypeProviderProxy(INodeTypeProvider inner)
 {
     _inner = inner;
 }
 public SDataQueryModelVisitor(INodeTypeProvider nodeTypeProvider = null, INamingScheme namingScheme = null)
 {
     _nodeTypeProvider = nodeTypeProvider ?? ExpressionTreeParser.CreateDefaultNodeTypeProvider();
     _namingScheme     = namingScheme ?? NamingScheme.Default;
 }
Ejemplo n.º 36
0
 public MethodCallExpressionParser(INodeTypeProvider nodeTypeProvider)
 {
     _nodeTypeProvider = nodeTypeProvider;
 }
 public SDataQueryModelVisitor(INodeTypeProvider nodeTypeProvider = null, INamingScheme namingScheme = null)
 {
     _nodeTypeProvider = nodeTypeProvider ?? ExpressionTreeParser.CreateDefaultNodeTypeProvider();
     _namingScheme = namingScheme ?? NamingScheme.Default;
 }
 public ReadonlyNodeTypeProvider(INodeTypeProvider nodeTypeProvider)
 {
     _nodeTypeProvider = nodeTypeProvider;
 }