private void addJoinItem(SelectBuilder builder, Join join) { JoinStart start = join as JoinStart; if (start == null) { builder.AddJoin(join); return; } AliasedSource source = start.Source; Table table = source.Source as Table; if (table != null) { builder.AddTable(table, source.Alias); return; } ISelectBuilder select = source.Source as SelectBuilder; if (select != null) { builder.AddSelect(select, source.Alias); return; } Function functionCall = source.Source as Function; if (functionCall != null) { builder.AddFunction(functionCall, source.Alias); return; } throw new InvalidOperationException(); }
public void TestSelect_CrossJoin() { SelectBuilder builder = new SelectBuilder(); Join join = Join.From(new Table("Table1")) .CrossJoin(new Table("Table2")); builder.AddJoin(join); builder.AddProjection(new AllColumns()); Formatter formatter = new Formatter(); string commandText = formatter.GetCommandText(builder); string expected = "SELECT * FROM Table1 CROSS JOIN Table2"; Assert.AreEqual(expected, commandText, "The wrong SQL was generated."); }
public void TestSelect_LeftOuterJoin() { SelectBuilder builder = new SelectBuilder(); Join join = Join.From(new Table("Table1")) .LeftOuterJoin(new Table("Table2")) .On(j => new EqualToFilter(j.Sources["Table1"].Column("Column"), j.Sources["Table2"].Column("Column"))); builder.AddJoin(join); builder.AddProjection(new AllColumns()); Formatter formatter = new Formatter(); string commandText = formatter.GetCommandText(builder); string expected = "SELECT * FROM Table1 LEFT OUTER JOIN Table2 ON Table1.Column = Table2.Column"; Assert.AreEqual(expected, commandText, "The wrong SQL was generated."); }
public void TestSelect_WrappedTable() { SelectBuilder builder = new SelectBuilder(); Join join = Join.From(new Table("Table1")) .InnerJoin(new Table("Table2")) .On(j => new EqualToFilter(j.Sources["Table1"].Column("Column"), j.Sources["Table2"].Column("Column"))); join.WrapInParentheses = true; builder.AddJoin(join); builder.AddProjection(builder.Sources["Table1"].Column("Column")); Formatter formatter = new Formatter(); string commandText = formatter.GetCommandText(builder); string expected = "SELECT Table1.Column FROM (Table1 INNER JOIN Table2 ON Table1.Column = Table2.Column)"; Assert.AreEqual(expected, commandText, "The wrong SQL was generated."); }