@@ -61,5 +61,42 @@ public async Task CanQueryOnEnumStoredAsString_Small_1Async()
6161
6262 Assert . AreEqual ( expectedCount , query . Count ) ;
6363 }
64+
65+ [ Test ]
66+ public async Task ConditionalNavigationPropertyAsync ( )
67+ {
68+ EnumStoredAsString ? type = null ;
69+ await ( db . Users . Where ( o => o . Enum1 == EnumStoredAsString . Large ) . ToListAsync ( ) ) ;
70+ await ( db . Users . Where ( o => EnumStoredAsString . Large != o . Enum1 ) . ToListAsync ( ) ) ;
71+ await ( db . Users . Where ( o => ( o . NullableEnum1 ?? EnumStoredAsString . Large ) == EnumStoredAsString . Medium ) . ToListAsync ( ) ) ;
72+ await ( db . Users . Where ( o => ( ( o . NullableEnum1 ?? type ) ?? o . Enum1 ) == EnumStoredAsString . Medium ) . ToListAsync ( ) ) ;
73+
74+ await ( db . Users . Where ( o => ( o . NullableEnum1 . HasValue ? o . Enum1 : EnumStoredAsString . Unspecified ) == EnumStoredAsString . Medium ) . ToListAsync ( ) ) ;
75+ await ( db . Users . Where ( o => ( o . Enum1 != EnumStoredAsString . Large
76+ ? ( o . NullableEnum1 . HasValue ? o . Enum1 : EnumStoredAsString . Unspecified )
77+ : EnumStoredAsString . Small ) == EnumStoredAsString . Medium ) . ToListAsync ( ) ) ;
78+
79+ await ( db . Users . Where ( o => ( o . Enum1 == EnumStoredAsString . Large ? o . Role : o . Role ) . Name == "test" ) . ToListAsync ( ) ) ;
80+ }
81+
82+ [ Test ]
83+ public async Task CanQueryComplexExpressionOnEnumStoredAsStringAsync ( )
84+ {
85+ var type = EnumStoredAsString . Unspecified ;
86+ var query = await ( ( from user in db . Users
87+ where ( user . NullableEnum1 == EnumStoredAsString . Large
88+ ? EnumStoredAsString . Medium
89+ : user . NullableEnum1 ?? user . Enum1
90+ ) == type
91+ select new
92+ {
93+ user ,
94+ simple = user . Enum1 ,
95+ condition = user . Enum1 == EnumStoredAsString . Large ? EnumStoredAsString . Medium : user . Enum1 ,
96+ coalesce = user . NullableEnum1 ?? EnumStoredAsString . Medium
97+ } ) . ToListAsync ( ) ) ;
98+
99+ Assert . That ( query . Count , Is . EqualTo ( 0 ) ) ;
100+ }
64101 }
65102}
0 commit comments