示例#1
0
        protected string CompileJoins(QueryBuilder query, IList <JoinClause> joins)
        {
            IList <string> sql = new List <string>();

            foreach (JoinClause join in joins)
            {
                string         table   = WrapTable(join.Table);
                IList <string> clauses = new List <string>();

                foreach (ClauseInJoin clause in join.Clauses)
                {
                    clauses.Add(CompileJoinConstraint(clause));
                }

                foreach (string binding in join.Bindings)
                {
                    query.AddBinding(BindingType.Join, binding);
                }


                clauses[0] = clauses[0].PregReplace("and |or ", "", 1);
                string clausesSql = String.Join(" ", clauses);

                sql.Add(join.Type.ToString().AddSpacesToSentence(false).ToLower() + " join " + table + " on " + clausesSql);
            }

            return(String.Join(" ", sql));
        }