@@ -61,5 +61,42 @@ public async Task CanQueryOnEnumStoredAsString_Small_1Async()
61
61
62
62
Assert . AreEqual ( expectedCount , query . Count ) ;
63
63
}
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
+ }
64
101
}
65
102
}
0 commit comments