@@ -136,7 +136,14 @@ public override void Join_navigation_key_access_optional()
136
136
base . Join_navigation_key_access_optional ( ) ;
137
137
138
138
Assert . Equal (
139
- @"" , Sql ) ;
139
+ @"SELECT [e1].[Id], [e2].[Id]
140
+ FROM [Level1] AS [e1]
141
+ INNER JOIN [Level2] AS [e2] ON [e1].[Id] = (
142
+ SELECT TOP(1) [subQuery0].[Id]
143
+ FROM [Level1] AS [subQuery0]
144
+ WHERE [subQuery0].[Id] = [e2].[Level1_Optional_Id]
145
+ )" ,
146
+ Sql ) ;
140
147
}
141
148
142
149
public override void Join_navigation_key_access_required ( )
@@ -146,15 +153,20 @@ public override void Join_navigation_key_access_required()
146
153
Assert . Equal (
147
154
@"SELECT [e1].[Id], [e2].[Id]
148
155
FROM [Level1] AS [e1]
149
- INNER JOIN [Level2] AS [e2] ON [e1].[Id] = [e2].[Level1_Required_Id]" , Sql ) ;
156
+ INNER JOIN [Level2] AS [e2] ON [e1].[Id] = [e2].[Level1_Required_Id]" ,
157
+ Sql ) ;
150
158
}
151
159
152
160
public override void Navigation_key_access_optional_comparison ( )
153
161
{
154
162
base . Navigation_key_access_optional_comparison ( ) ;
155
163
156
164
Assert . Equal (
157
- @"" , Sql ) ;
165
+ @"SELECT [e2].[Id], [e2].[Level1_Optional_Id], [e2].[Level1_Required_Id], [e2].[Name], [e2].[OneToMany_Optional_InverseId], [e2].[OneToMany_Optional_Self_InverseId], [e2].[OneToMany_Required_InverseId], [e2].[OneToMany_Required_Self_InverseId], [e2].[OneToOne_Optional_PK_InverseId], [e2].[OneToOne_Optional_SelfId], [e2.OneToOne_Optional_PK_Inverse].[Id], [e2.OneToOne_Optional_PK_Inverse].[Name], [e2.OneToOne_Optional_PK_Inverse].[OneToMany_Optional_Self_InverseId], [e2.OneToOne_Optional_PK_Inverse].[OneToMany_Required_Self_InverseId], [e2.OneToOne_Optional_PK_Inverse].[OneToOne_Optional_SelfId]
166
+ FROM [Level2] AS [e2]
167
+ LEFT JOIN [Level1] AS [e2.OneToOne_Optional_PK_Inverse] ON [e2].[OneToOne_Optional_PK_InverseId] = [e2.OneToOne_Optional_PK_Inverse].[Id]
168
+ ORDER BY [e2].[OneToOne_Optional_PK_InverseId]" ,
169
+ Sql ) ;
158
170
}
159
171
160
172
public override void Navigation_key_access_required_comparison ( )
@@ -846,6 +858,93 @@ FROM [Level1] AS [e]
846
858
Sql ) ;
847
859
}
848
860
861
+ public override void Include_nested_with_optional_navigation ( )
862
+ {
863
+ base . Include_nested_with_optional_navigation ( ) ;
864
+
865
+ Assert . Equal (
866
+ @"SELECT [e].[Id], [e].[Name], [e].[OneToMany_Optional_Self_InverseId], [e].[OneToMany_Required_Self_InverseId], [e].[OneToOne_Optional_SelfId], [e.OneToOne_Optional_FK].[Id], [e.OneToOne_Optional_FK].[Level1_Optional_Id], [e.OneToOne_Optional_FK].[Level1_Required_Id], [e.OneToOne_Optional_FK].[Name], [e.OneToOne_Optional_FK].[OneToMany_Optional_InverseId], [e.OneToOne_Optional_FK].[OneToMany_Optional_Self_InverseId], [e.OneToOne_Optional_FK].[OneToMany_Required_InverseId], [e.OneToOne_Optional_FK].[OneToMany_Required_Self_InverseId], [e.OneToOne_Optional_FK].[OneToOne_Optional_PK_InverseId], [e.OneToOne_Optional_FK].[OneToOne_Optional_SelfId], [l].[Id], [l].[Level1_Optional_Id], [l].[Level1_Required_Id], [l].[Name], [l].[OneToMany_Optional_InverseId], [l].[OneToMany_Optional_Self_InverseId], [l].[OneToMany_Required_InverseId], [l].[OneToMany_Required_Self_InverseId], [l].[OneToOne_Optional_PK_InverseId], [l].[OneToOne_Optional_SelfId]
867
+ FROM [Level1] AS [e]
868
+ LEFT JOIN [Level2] AS [e.OneToOne_Optional_FK] ON [e].[Id] = [e.OneToOne_Optional_FK].[Level1_Optional_Id]
869
+ LEFT JOIN [Level2] AS [l] ON [l].[Level1_Optional_Id] = [e].[Id]
870
+ ORDER BY [e].[Id], [l].[Id]
871
+
872
+ SELECT [l0].[Id], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_InverseId], [l0].[OneToMany_Optional_Self_InverseId], [l0].[OneToMany_Required_InverseId], [l0].[OneToMany_Required_Self_InverseId], [l0].[OneToOne_Optional_PK_InverseId], [l0].[OneToOne_Optional_SelfId], [l2].[Id], [l2].[Level3_Optional_Id], [l2].[Level3_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_InverseId], [l2].[OneToMany_Optional_Self_InverseId], [l2].[OneToMany_Required_InverseId], [l2].[OneToMany_Required_Self_InverseId], [l2].[OneToOne_Optional_PK_InverseId], [l2].[OneToOne_Optional_SelfId]
873
+ FROM [Level3] AS [l0]
874
+ INNER JOIN (
875
+ SELECT DISTINCT [e].[Id], [l].[Id] AS [Id0]
876
+ FROM [Level1] AS [e]
877
+ LEFT JOIN [Level2] AS [e.OneToOne_Optional_FK] ON [e].[Id] = [e.OneToOne_Optional_FK].[Level1_Optional_Id]
878
+ LEFT JOIN [Level2] AS [l] ON [l].[Level1_Optional_Id] = [e].[Id]
879
+ ) AS [l1] ON [l0].[OneToMany_Required_InverseId] = [l1].[Id0]
880
+ LEFT JOIN [Level4] AS [l2] ON [l2].[Level3_Required_Id] = [l0].[Id]
881
+ ORDER BY [l1].[Id], [l1].[Id0]" ,
882
+ Sql ) ;
883
+ }
884
+
885
+ public override void Include_with_groupjoin_skip_and_take ( )
886
+ {
887
+ base . Include_with_groupjoin_skip_and_take ( ) ;
888
+
889
+ Assert . Equal (
890
+ @"@__p_0: ?
891
+ @__p_1: ?
892
+
893
+ SELECT [e].[Id], [e].[Name], [e].[OneToMany_Optional_Self_InverseId], [e].[OneToMany_Required_Self_InverseId], [e].[OneToOne_Optional_SelfId], [t].[Id], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_InverseId], [t].[OneToMany_Optional_Self_InverseId], [t].[OneToMany_Required_InverseId], [t].[OneToMany_Required_Self_InverseId], [t].[OneToOne_Optional_PK_InverseId], [t].[OneToOne_Optional_SelfId], [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_InverseId], [l1].[OneToMany_Optional_Self_InverseId], [l1].[OneToMany_Required_InverseId], [l1].[OneToMany_Required_Self_InverseId], [l1].[OneToOne_Optional_PK_InverseId], [l1].[OneToOne_Optional_SelfId]
894
+ FROM [Level1] AS [e]
895
+ LEFT JOIN (
896
+ SELECT [e1].[Id], [e1].[Level1_Optional_Id], [e1].[Level1_Required_Id], [e1].[Name], [e1].[OneToMany_Optional_InverseId], [e1].[OneToMany_Optional_Self_InverseId], [e1].[OneToMany_Required_InverseId], [e1].[OneToMany_Required_Self_InverseId], [e1].[OneToOne_Optional_PK_InverseId], [e1].[OneToOne_Optional_SelfId]
897
+ FROM [Level2] AS [e1]
898
+ ) AS [t] ON [e].[Id] = [t].[Level1_Optional_Id]
899
+ LEFT JOIN [Level3] AS [l1] ON [l1].[Id] = [t].[Id]
900
+ WHERE ([e].[Name] <> N'L1 03') OR [e].[Name] IS NULL
901
+ ORDER BY [e].[Id]
902
+ OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY
903
+
904
+ @__p_0: ?
905
+ @__p_1: ?
906
+
907
+ SELECT [l].[Id], [l].[Level1_Optional_Id], [l].[Level1_Required_Id], [l].[Name], [l].[OneToMany_Optional_InverseId], [l].[OneToMany_Optional_Self_InverseId], [l].[OneToMany_Required_InverseId], [l].[OneToMany_Required_Self_InverseId], [l].[OneToOne_Optional_PK_InverseId], [l].[OneToOne_Optional_SelfId], [l0].[Id], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_InverseId], [l0].[OneToMany_Optional_Self_InverseId], [l0].[OneToMany_Required_InverseId], [l0].[OneToMany_Required_Self_InverseId], [l0].[OneToOne_Optional_PK_InverseId], [l0].[OneToOne_Optional_SelfId]
908
+ FROM [Level2] AS [l]
909
+ INNER JOIN (
910
+ SELECT DISTINCT [t0].*
911
+ FROM (
912
+ SELECT [e].[Id]
913
+ FROM [Level1] AS [e]
914
+ LEFT JOIN (
915
+ SELECT [e1].[Id], [e1].[Level1_Optional_Id], [e1].[Level1_Required_Id], [e1].[Name], [e1].[OneToMany_Optional_InverseId], [e1].[OneToMany_Optional_Self_InverseId], [e1].[OneToMany_Required_InverseId], [e1].[OneToMany_Required_Self_InverseId], [e1].[OneToOne_Optional_PK_InverseId], [e1].[OneToOne_Optional_SelfId]
916
+ FROM [Level2] AS [e1]
917
+ ) AS [t] ON [e].[Id] = [t].[Level1_Optional_Id]
918
+ WHERE ([e].[Name] <> N'L1 03') OR [e].[Name] IS NULL
919
+ ORDER BY [e].[Id]
920
+ OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY
921
+ ) AS [t0]
922
+ ) AS [e2] ON [l].[OneToMany_Optional_InverseId] = [e2].[Id]
923
+ LEFT JOIN [Level3] AS [l0] ON [l0].[Level2_Optional_Id] = [l].[Id]
924
+ ORDER BY [e2].[Id]" ,
925
+ Sql ) ;
926
+ }
927
+
928
+ public override void Join_flattening_bug_4539 ( )
929
+ {
930
+ base . Join_flattening_bug_4539 ( ) ;
931
+
932
+ Assert . Equal (
933
+ @"" ,
934
+ Sql ) ;
935
+
936
+ }
937
+
938
+ public override void Query_source_materialization_bug_4547 ( )
939
+ {
940
+ base . Query_source_materialization_bug_4547 ( ) ;
941
+
942
+ Assert . Equal (
943
+ @"" ,
944
+ Sql ) ;
945
+ }
946
+
947
+
849
948
// issue #3491
850
949
//[Fact]
851
950
public virtual void Multiple_complex_includes_from_sql ( )
0 commit comments