protected override Expression VisitQuery(QueryExpression expression)
 {
     hasSubQuery = true;
     return base.VisitQuery(expression);
 }
 protected override Expression VisitQuery(QueryExpression expression)
 {
     return DoPrepare(expression);
 }
 protected virtual Expression VisitQuery(QueryExpression expression)
 {
     return expression;
 }
 protected override Expression VisitQuery(QueryExpression expression)
 {
     isConstant = false;
     return base.VisitQuery(expression);
 }
 protected virtual Expression VisitQuery(QueryExpression expression)
 {
     return(expression);
 }