@@ -239,6 +239,80 @@ public class ComplexTypeWithAllNulls
239239
240240 #endregion 37162
241241
242+ #region 37304
243+
244+ [ ConditionalFact ]
245+ public virtual async Task Non_optional_complex_type_with_all_nullable_properties_via_left_join ( )
246+ {
247+ var contextFactory = await InitializeNonSharedTest < Context37304 > (
248+ seed : context =>
249+ {
250+ context . Add (
251+ new Context37304 . Parent
252+ {
253+ Id = 1 ,
254+ Children =
255+ [
256+ new Context37304 . Child
257+ {
258+ Id = 1 ,
259+ ComplexType = new Context37304 . ComplexTypeWithAllNulls ( )
260+ }
261+ ]
262+ } ) ;
263+ return context . SaveChangesAsync ( ) ;
264+ } ) ;
265+
266+ await using var context = contextFactory . CreateDbContext ( ) ;
267+
268+ var parent = await context . Set < Context37304 . Parent > ( ) . Include ( p => p . Children ) . SingleAsync ( ) ;
269+
270+ var child = parent . Children . Single ( ) ;
271+ Assert . NotNull ( child . ComplexType ) ;
272+ Assert . Null ( child . ComplexType . NullableString ) ;
273+ Assert . Null ( child . ComplexType . NullableDateTime ) ;
274+ }
275+
276+ private class Context37304 ( DbContextOptions options ) : DbContext ( options )
277+ {
278+ protected override void OnModelCreating ( ModelBuilder modelBuilder )
279+ {
280+ modelBuilder . Entity < Parent > ( b =>
281+ {
282+ b . Property ( p => p . Id ) . ValueGeneratedNever ( ) ;
283+ } ) ;
284+
285+ modelBuilder . Entity < Child > ( b =>
286+ {
287+ b . Property ( c => c . Id ) . ValueGeneratedNever ( ) ;
288+ b . HasOne ( c => c . Parent ) . WithMany ( p => p . Children ) . HasForeignKey ( c => c . ParentId ) ;
289+ b . ComplexProperty ( c => c . ComplexType ) ;
290+ } ) ;
291+ }
292+
293+ public class Parent
294+ {
295+ public int Id { get ; set ; }
296+ public List < Child > Children { get ; set ; } = [ ] ;
297+ }
298+
299+ public class Child
300+ {
301+ public int Id { get ; set ; }
302+ public int ParentId { get ; set ; }
303+ public Parent Parent { get ; set ; } = null ! ;
304+ public ComplexTypeWithAllNulls ComplexType { get ; set ; } = null ! ;
305+ }
306+
307+ public class ComplexTypeWithAllNulls
308+ {
309+ public string ? NullableString { get ; set ; }
310+ public DateTime ? NullableDateTime { get ; set ; }
311+ }
312+ }
313+
314+ #endregion 37304
315+
242316 #region Issue37337
243317
244318 private const string Issue37337CreatedByShadowPropertyName = "CreatedBy" ;
0 commit comments