@@ -3201,6 +3201,26 @@ public void Container_column_type_is_used_for_complex_collection_json_column()
32013201 Assert . IsType < JsonColumn > ( jsonColumn ) ;
32023202 }
32033203
3204+ [ ConditionalFact ]
3205+ public void Complex_property_json_column_is_nullable_in_TPH_hierarchy ( )
3206+ {
3207+ var modelBuilder = CreateConventionModelBuilder ( ) ;
3208+
3209+ modelBuilder . Entity < TphBaseEntity > ( ) ;
3210+ modelBuilder . Entity < EntityWithoutComplexProperty > ( ) ;
3211+ modelBuilder . Entity < TphEntityWithComplexProperty > ( )
3212+ . ComplexProperty ( e => e . ComplexProperty , b => b . ToJson ( ) ) ;
3213+
3214+ var model = modelBuilder . FinalizeModel ( ) ;
3215+ var relationalModel = model . GetRelationalModel ( ) ;
3216+
3217+ var table = relationalModel . Tables . Single ( ) ;
3218+ var jsonColumn = table . Columns . Single ( c => c . Name == "ComplexProperty" ) ;
3219+
3220+ Assert . True ( jsonColumn . IsNullable ) ;
3221+ Assert . IsType < JsonColumn > ( jsonColumn ) ;
3222+ }
3223+
32043224 private static IRelationalModel Finalize ( TestHelpers . TestModelBuilder modelBuilder )
32053225 => modelBuilder . FinalizeModel ( designTime : true ) . GetRelationalModel ( ) ;
32063226
@@ -3318,6 +3338,18 @@ private class EntityWithComplexCollection
33183338 public List < ComplexData > ComplexCollection { get ; set ; }
33193339 }
33203340
3341+ private abstract class TphBaseEntity
3342+ {
3343+ public int Id { get ; set ; }
3344+ }
3345+
3346+ private class EntityWithoutComplexProperty : TphBaseEntity ;
3347+
3348+ private class TphEntityWithComplexProperty : TphBaseEntity
3349+ {
3350+ public ComplexData ComplexProperty { get ; set ; }
3351+ }
3352+
33213353 private class ComplexData
33223354 {
33233355 public string Value { get ; set ; }
0 commit comments