public override void VisitOrderByClause(OrderByClause orderByClause, QueryModel queryModel, int index)
 {
     Log($"VisitOrderByClause({index}): " + orderByClause, logLevel++);
     _queryParts.AddOrderByPart(orderByClause.Orderings.Select(item => SqlExpressionTreeVisitor.GetSqlExpression(item.Expression)));
     base.VisitOrderByClause(orderByClause, queryModel, index);
     logLevel--;
 }
 public override void VisitSelectClause(SelectClause selectClause, QueryModel queryModel)
 {
     Log("VisitSelectClause: " + selectClause, logLevel++);
     _queryParts.SelectPart = SqlExpressionTreeVisitor.GetSqlExpression(selectClause.Selector) + ".*";
     base.VisitSelectClause(selectClause, queryModel);
     logLevel--;
 }
 public override void VisitWhereClause(WhereClause whereClause, QueryModel queryModel, int index)
 {
     Log($"VisitWhereClause({index}): " + whereClause, logLevel++);
     _queryParts.AddWherePart(SqlExpressionTreeVisitor.GetSqlExpression(whereClause.Predicate));
     base.VisitWhereClause(whereClause, queryModel, index);
     logLevel--;
 }
        public static string GetSqlExpression(Expression exp)
        {
            var visitor = new SqlExpressionTreeVisitor();

            visitor.Visit(exp);
            return(visitor.sql.ToString());
        }
 public override void VisitJoinClause(JoinClause joinClause, QueryModel queryModel, int index)
 {
     Log($"VisitJoinClause({index}): " + joinClause, logLevel++);
     _queryParts.AddFromPart(joinClause);
     _queryParts.AddWherePart($"({SqlExpressionTreeVisitor.GetSqlExpression(joinClause.OuterKeySelector)} = {SqlExpressionTreeVisitor.GetSqlExpression(joinClause.InnerKeySelector)})");
     base.VisitJoinClause(joinClause, queryModel, index);
     logLevel--;
 }