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()));
        }
Exemple #2
0
        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);
        }