/// <summary>Executes the given expression.</summary>
 /// <typeparam name="TResult">Type of the result.</typeparam>
 /// <param name="expression">The expression to execute.</param>
 /// <returns>The object returned by the execution of the expression.</returns>
 public TResult Execute <TResult>(Expression expression)
 {
     expression = CurrentQueryable.Visit(expression);
     return(OriginalProvider.Execute <TResult>(expression));
 }
 /// <summary>Executes the asynchronous operation.</summary>
 /// <param name="expression">The expression.</param>
 /// <param name="cancellationToken">The cancellation token.</param>
 /// <returns>A Task&lt;object&gt;</returns>
 public Task <object> ExecuteAsync(Expression expression, CancellationToken cancellationToken)
 {
     expression = CurrentQueryable.Visit(expression);
     return(OriginalProvider.ExecuteAsync(expression, cancellationToken));
 }
 /// <summary>Executes the given expression.</summary>
 /// <param name="expression">The expression to execute.</param>
 /// <returns>The object returned by the execution of the expression.</returns>
 public object Execute(Expression expression)
 {
     expression = CurrentQueryable.Visit(expression);
     return(OriginalProvider.Execute(expression));
 }