public void JoinOfUnionsOnRightSideofJoin()
{
using (testEntities context = new testEntities())
{
string eSql = @"SELECT c.Id, c.Name, Union1.Id, Union1.Name,
Union2.Id, Union2.Name FROM
testEntities.Companies AS c JOIN (
((SELECT t.Id, t.Name FROM testEntities.Toys as t)
UNION ALL
(SELECT s.Id, s.Name FROM testEntities.Shops as s)) AS Union1
JOIN
((SELECT a.Id, a.Name FROM testEntities.Authors AS a)
UNION ALL
(SELECT b.Id, b.Name FROM testEntities.Books AS b)) AS Union2
ON Union1.Id = Union2.Id) ON c.Id = Union1.Id";
ObjectQuery<DbDataRecord> query = context.CreateQuery<DbDataRecord>(eSql);
string sql = query.ToTraceString();
CheckSql(sql, SQLSyntax.JoinOfUnionsOnRightSideOfJoin);
foreach (DbDataRecord record in query)
{
Assert.AreEqual(6, record.FieldCount);
}
}
}