/// <summary>
        /// Rewrite a given query.
        /// </summary>
        /// <typeparam name="T">The type of the query data.</typeparam>
        /// <param name="value">The query to rewrite.</param>
        /// <param name="rewriter">The rewriter to rewrite the query.</param>
        /// <returns>The rewritten query.</returns>
        public static IOrderedQueryable <T> EntityRewrite <T>(this IOrderedQueryable <T> value, ExpressionVisitor rewriter)
        {
            if (value == null)
            {
                throw new ArgumentNullException(nameof(value));
            }
            if (rewriter == null)
            {
                throw new ArgumentNullException(nameof(rewriter));
            }

            var provider = new RewriteEntityQueryProvider(value.Provider, rewriter);

            return(new RewriteEntityQueryable <T>(value, provider));
        }
        /// <summary>
        /// Rewrite a given query.
        /// </summary>
        /// <param name="value">The query to rewrite.</param>
        /// <param name="rewriter">The rewriter to rewrite the query.</param>
        /// <returns>The rewritten query.</returns>
        public static IOrderedQueryable EntityRewrite(this IOrderedQueryable value, ExpressionVisitor rewriter)
        {
            if (value == null)
            {
                throw new ArgumentNullException(nameof(value));
            }
            if (rewriter == null)
            {
                throw new ArgumentNullException(nameof(rewriter));
            }

            var provider = new RewriteEntityQueryProvider(value.Provider, rewriter);

            return((IOrderedQueryable)Activator.CreateInstance(
                       typeof(RewriteEntityQueryable <>).MakeGenericType(value.ElementType),
                       value, provider));
        }
Пример #3
0
 /// <summary>
 /// Create a new query to rewrite.
 /// </summary>
 /// <param name="query">The actual query.</param>
 /// <param name="provider">The provider to rewrite the query.</param>
 public RewriteEntityQueryable(IQueryable query, RewriteEntityQueryProvider provider)
     : base(query, provider)
 {
     providerAdapter = new EntityQueryProviderAdapter(provider);
 }
Пример #4
0
 public EntityQueryProviderAdapter(RewriteEntityQueryProvider provider)
     : base(new EmptyQueryCompiler())
 {
     this.provider = provider;
 }