public void JoinIgnoresExistingJoinsWithSameAliasAndSameExpression() { var row = new ComplexRow(); var fld = ComplexRow.Fields; var query = new SqlQuery() .From(row) .Select(fld.CountryName) .LeftJoin(new Alias("TheCountryTable", "c"), new Criteria("c", "TheCountryID") == new Criteria(0, "CountryID")); Assert.Equal( Normalize.Sql( "SELECT c.Name AS [CountryName] FROM ComplexTable T0 LEFT JOIN TheCountryTable c ON (c.TheCountryID = T0.CountryID)"), Normalize.Sql( query.ToString())); }
public void Can_Create_Two_Rows_With_Different_Field_Names() { var fields1 = new ComplexRow.RowFields(); fields1.Initialize(annotations: null, dialect: SqlServer2012Dialect.Instance); fields1.BasicExpression.Expression = "Test1"; var row1 = new ComplexRow(fields1); var fields2 = new ComplexRow.RowFields(); fields2.Initialize(annotations: null, dialect: SqlServer2012Dialect.Instance); fields2.BasicExpression.Expression = "Test2"; var row2 = new ComplexRow(fields2); Assert.Equal("Test1", row1.GetFields().BasicExpression.Expression); Assert.Equal("Test2", row2.GetFields().BasicExpression.Expression); }
public void JoinThrowsExceptionForJoinsWithSameAliasButDifferentExpression() { var row = new ComplexRow(); var fld = ComplexRow.Fields; var exception = Assert.Throws <InvalidOperationException>(() => { var query = new SqlQuery() .From(row) .Select(fld.CountryName) .LeftJoin(new Alias("City", "c"), new Criteria("c", "CityID") == new Criteria(0, "CountryID")); }); Assert.Contains("already has a join 'c'", exception.Message); Assert.Contains("LEFT JOIN TheCountryTable c ON (c.TheCountryID = T0.CountryID)", exception.Message); Assert.Contains("Attempted join expression is 'LEFT JOIN City c ON (c.CityID = T0.CountryID)", exception.Message); }