@@ -56,6 +56,46 @@ public void JoinWithExplicitClauseUsingNamedParameters()
5656 " join [dbo].[department] on ([dbo].[department].[id] = [dbo].[employee].[departmentid])" ) ;
5757 }
5858
59+ [ Test ]
60+ public void OuterJoinWithExplicitClauseUsingNamedParameters ( )
61+ {
62+ var q = _db . Employees . Query ( )
63+ . OuterJoin ( _db . Department , Id : _db . Employees . DepartmentId )
64+ . Select ( _db . Employees . Name , _db . Department . Name . As ( "Department" ) ) ;
65+
66+ try
67+ {
68+ q . ToList ( ) ;
69+ }
70+ catch ( InvalidOperationException )
71+ {
72+ // This won't work on Mock provider, but the SQL should be generated OK
73+ }
74+
75+ GeneratedSqlIs ( "select [dbo].[employee].[name],[dbo].[department].[name] as [Department] from [dbo].[employee]" +
76+ " left join [dbo].[department] on ([dbo].[department].[id] = [dbo].[employee].[departmentid])" ) ;
77+ }
78+
79+ [ Test ]
80+ public void LeftJoinWithExplicitClauseUsingNamedParameters ( )
81+ {
82+ var q = _db . Employees . Query ( )
83+ . LeftJoin ( _db . Department , Id : _db . Employees . DepartmentId )
84+ . Select ( _db . Employees . Name , _db . Department . Name . As ( "Department" ) ) ;
85+
86+ try
87+ {
88+ q . ToList ( ) ;
89+ }
90+ catch ( InvalidOperationException )
91+ {
92+ // This won't work on Mock provider, but the SQL should be generated OK
93+ }
94+
95+ GeneratedSqlIs ( "select [dbo].[employee].[name],[dbo].[department].[name] as [Department] from [dbo].[employee]" +
96+ " left join [dbo].[department] on ([dbo].[department].[id] = [dbo].[employee].[departmentid])" ) ;
97+ }
98+
5999 [ Test ]
60100 public void JoinWithExplicitClauseUsingExpression ( )
61101 {
@@ -76,6 +116,26 @@ public void JoinWithExplicitClauseUsingExpression()
76116 " join [dbo].[department] on ([dbo].[department].[id] = [dbo].[employee].[departmentid])" ) ;
77117 }
78118
119+ [ Test ]
120+ public void LeftJoinWithExplicitClauseUsingExpression ( )
121+ {
122+ var q = _db . Employees . Query ( )
123+ . LeftJoin ( _db . Department ) . On ( _db . Department . Id == _db . Employees . DepartmentId )
124+ . Select ( _db . Employees . Name , _db . Department . Name . As ( "Department" ) ) ;
125+
126+ try
127+ {
128+ q . ToList ( ) ;
129+ }
130+ catch ( InvalidOperationException )
131+ {
132+ // This won't work on Mock provider, but the SQL should be generated OK
133+ }
134+
135+ GeneratedSqlIs ( "select [dbo].[employee].[name],[dbo].[department].[name] as [Department] from [dbo].[employee]" +
136+ " left join [dbo].[department] on ([dbo].[department].[id] = [dbo].[employee].[departmentid])" ) ;
137+ }
138+
79139 [ Test ]
80140 public void SelfJoinWithExplicitClauseUsingNamedParameters ( )
81141 {
@@ -97,6 +157,27 @@ public void SelfJoinWithExplicitClauseUsingNamedParameters()
97157 " join [dbo].[employee] [manager] on ([manager].[id] = [dbo].[employee].[managerid])" ) ;
98158 }
99159
160+ [ Test ]
161+ public void LeftSelfJoinWithExplicitClauseUsingNamedParameters ( )
162+ {
163+ var q = _db . Employees . Query ( )
164+ . LeftJoin ( _db . Employees . As ( "Manager" ) , Id : _db . Employees . ManagerId ) ;
165+
166+ q = q . Select ( _db . Employees . Name , q . Manager . Name . As ( "Manager" ) ) ;
167+
168+ try
169+ {
170+ q . ToList ( ) ;
171+ }
172+ catch ( InvalidOperationException )
173+ {
174+ // This won't work on Mock provider, but the SQL should be generated OK
175+ }
176+
177+ GeneratedSqlIs ( "select [dbo].[employee].[name],[manager].[name] as [Manager] from [dbo].[employee]" +
178+ " left join [dbo].[employee] [manager] on ([manager].[id] = [dbo].[employee].[managerid])" ) ;
179+ }
180+
100181 [ Test ]
101182 public void SelfJoinWithExplicitClauseUsingOutParameterAndNamedParameters ( )
102183 {
@@ -118,6 +199,27 @@ public void SelfJoinWithExplicitClauseUsingOutParameterAndNamedParameters()
118199 " join [dbo].[employee] [manager] on ([manager].[id] = [dbo].[employee].[managerid])" ) ;
119200 }
120201
202+ [ Test ]
203+ public void LeftSelfJoinWithExplicitClauseUsingOutParameterAndNamedParameters ( )
204+ {
205+ dynamic manager ;
206+ var q = _db . Employees . Query ( )
207+ . LeftJoin ( _db . Employees . As ( "Manager" ) , out manager ) . On ( Id : _db . Employees . ManagerId )
208+ . Select ( _db . Employees . Name , manager . Name . As ( "Manager" ) ) ;
209+
210+ try
211+ {
212+ q . ToList ( ) ;
213+ }
214+ catch ( InvalidOperationException )
215+ {
216+ // This won't work on Mock provider, but the SQL should be generated OK
217+ }
218+
219+ GeneratedSqlIs ( "select [dbo].[employee].[name],[manager].[name] as [Manager] from [dbo].[employee]" +
220+ " left join [dbo].[employee] [manager] on ([manager].[id] = [dbo].[employee].[managerid])" ) ;
221+ }
222+
121223 [ Test ]
122224 public void SelfJoinWithExplicitClauseUsingExpression ( )
123225 {
0 commit comments