@@ -557,11 +557,14 @@ private static void AssertViews(IRelationalModel model, Mapping mapping)
557557
558558 Assert . Null ( customerView . EntityTypeMappings . Single ( ) . IsSharedTablePrincipal ) ;
559559 Assert . Null ( customerView . EntityTypeMappings . Single ( ) . IsSplitEntityTypePrincipal ) ;
560- Assert . Equal ( 5 , customerView . Columns . Count ( ) ) ;
560+ Assert . Equal ( 6 , customerView . Columns . Count ( ) ) ;
561+ Assert . Same (
562+ abstractBaseType . FindComplexProperty ( nameof ( AbstractBase . Tag ) ) ! . ComplexType . FindProperty ( nameof ( Tag . Name ) ) ,
563+ Assert . Single ( customerView . FindColumn ( "Tag_Name" ) ! . PropertyMappings ) . Property ) ;
561564
562565 Assert . Single ( specialCustomerView . EntityTypeMappings ) ;
563566
564- Assert . Equal ( 9 , specialCustomerView . Columns . Count ( ) ) ;
567+ Assert . Equal ( 10 , specialCustomerView . Columns . Count ( ) ) ;
565568
566569 Assert . False ( specialtyColumn . IsNullable ) ;
567570
@@ -571,7 +574,7 @@ private static void AssertViews(IRelationalModel model, Mapping mapping)
571574 Assert . False ( extraSpecialCustomerView . EntityTypeMappings . Last ( ) . IsSharedTablePrincipal ) ;
572575 Assert . Null ( extraSpecialCustomerView . EntityTypeMappings . Last ( ) . IsSplitEntityTypePrincipal ) ;
573576
574- Assert . Equal ( 11 , extraSpecialCustomerView . Columns . Count ( ) ) ;
577+ Assert . Equal ( 12 , extraSpecialCustomerView . Columns . Count ( ) ) ;
575578 }
576579 }
577580 }
@@ -799,6 +802,12 @@ private static void AssertTables(IRelationalModel model, Mapping mapping)
799802
800803 var complexType = abstractBaseType . GetComplexProperties ( ) . Single ( ) . ComplexType ;
801804
805+ foreach ( var columnMapping in complexType . GetTableMappings ( ) . SelectMany ( m => m . ColumnMappings ) )
806+ {
807+ Assert . Equal ( "Tag_Name" , columnMapping . Column . Name ) ;
808+ Assert . Same ( complexType . FindProperty ( nameof ( Tag . Name ) ) , columnMapping . Property ) ;
809+ }
810+
802811 if ( mapping == Mapping . TPT )
803812 {
804813 var baseTable = abstractBaseType . GetTableMappings ( ) . Single ( ) . Table ;
@@ -3658,8 +3667,8 @@ public void Json_element_tree_is_built_for_owned_entity_json_columns()
36583667 Assert . All ( datePropertyMappings , m => Assert . Equal ( "Date" , m . Element . PropertyName ) ) ;
36593668 }
36603669
3661- [ Fact ]
3662- public void Json_element_tree_is_merged_for_existing_json_columns ( )
3670+ [ Theory , InlineData ( false ) , InlineData ( true ) ]
3671+ public void Json_element_tree_is_merged_for_existing_json_columns ( bool defaultMapping )
36633672 {
36643673 var modelBuilder = CreateConventionModelBuilder ( ) ;
36653674
@@ -3669,28 +3678,35 @@ public void Json_element_tree_is_merged_for_existing_json_columns()
36693678 b => b . ToJson ( "complex_data" ) ) ;
36703679
36713680 var model = Finalize ( modelBuilder ) ;
3672- var table = model . Tables . Single ( ) ;
3681+ var entityType = model . Model . FindEntityType ( typeof ( EntityWithNestedComplexProperty ) ) ! ;
3682+ var table = defaultMapping
3683+ ? entityType . GetDefaultMappings ( ) . Single ( ) . Table
3684+ : model . Tables . Single ( ) ;
36733685 var jsonColumn = table . FindColumn ( "complex_data" ) ! ;
36743686
36753687 var jsonObject = Assert . IsAssignableFrom < IRelationalJsonObject > ( jsonColumn . JsonElement ) ;
36763688 var nestedObject = Assert . IsAssignableFrom < IRelationalJsonObject > ( jsonObject . FindProperty ( "Nested" ) ) ;
36773689 Assert . NotNull ( nestedObject . FindProperty ( "Number" ) ) ;
36783690
3679- var entityType = model . Model . FindEntityType ( typeof ( EntityWithNestedComplexProperty ) ) ! ;
36803691 var complexProperty = entityType . FindComplexProperty ( nameof ( EntityWithNestedComplexProperty . ComplexProperty ) ) ! ;
36813692 var nestedComplexProperty = complexProperty . ComplexType . FindComplexProperty ( nameof ( OuterComplexData . Nested ) ) ! ;
36823693
36833694 Assert . Same ( jsonColumn , table . FindColumn ( complexProperty ) ) ;
36843695 Assert . Same ( jsonColumn , table . FindColumn ( nestedComplexProperty ) ) ;
3696+ Assert . Same (
3697+ table ,
3698+ defaultMapping
3699+ ? nestedComplexProperty . ComplexType . GetDefaultMappings ( ) . Single ( ) . Table
3700+ : nestedComplexProperty . ComplexType . GetTableMappings ( ) . Single ( ) . Table ) ;
36853701
36863702 var numberProperty = nestedComplexProperty . ComplexType . FindProperty ( nameof ( NestedComplexData . Number ) ) ! ;
36873703 var numberMappings = numberProperty . GetJsonElementMappings ( ) . ToList ( ) ;
36883704 Assert . NotEmpty ( numberMappings ) ;
36893705 Assert . All ( numberMappings , m => Assert . Equal ( "Number" , m . Element . PropertyName ) ) ;
36903706 }
36913707
3692- [ Fact ]
3693- public void Json_element_tree_is_built_for_complex_property_json_columns ( )
3708+ [ Theory , InlineData ( false ) , InlineData ( true ) ]
3709+ public void Json_element_tree_is_built_for_complex_property_json_columns ( bool defaultMapping )
36943710 {
36953711 var modelBuilder = CreateConventionModelBuilder ( ) ;
36963712
@@ -3699,7 +3715,10 @@ public void Json_element_tree_is_built_for_complex_property_json_columns()
36993715 e => e . ComplexProperty , b => b . ToJson ( "complex_data" ) ) ;
37003716
37013717 var model = Finalize ( modelBuilder ) ;
3702- var table = model . Tables . Single ( ) ;
3718+ var entityType = model . Model . FindEntityType ( typeof ( EntityWithComplexProperty ) ) ! ;
3719+ var table = defaultMapping
3720+ ? entityType . GetDefaultMappings ( ) . Single ( ) . Table
3721+ : model . Tables . Single ( ) ;
37033722
37043723 // Validate JsonElement on column
37053724 var jsonColumn = table . FindColumn ( "complex_data" ) ! ;
@@ -3730,21 +3749,20 @@ public void Json_element_tree_is_built_for_complex_property_json_columns()
37303749 Assert . False ( numberProp . IsNullable ) ;
37313750
37323751 // Validate FindColumn(IPropertyBase) with complex property
3733- var entityType = model . Model . FindEntityType ( typeof ( EntityWithComplexProperty ) ) ! ;
37343752 var complexProperty = entityType . FindComplexProperty ( nameof ( EntityWithComplexProperty . ComplexProperty ) ) ! ;
37353753 var column = table . FindColumn ( complexProperty ) ;
37363754 Assert . NotNull ( column ) ;
37373755 Assert . Equal ( "complex_data" , column . Name ) ;
37383756 Assert . Same ( root , column . JsonElement ) ;
37393757
37403758 // Validate GetJsonElementMappings for complex property
3741- var complexMappings = complexProperty . GetJsonElementMappings ( ) . ToList ( ) ;
3759+ var complexMappings = complexProperty . GetJsonElementMappings ( ) . Where ( m => m . TableMapping . Table == table ) . ToList ( ) ;
37423760 Assert . Single ( complexMappings ) ;
37433761 Assert . Same ( root , complexMappings [ 0 ] . Element ) ;
37443762
37453763 // Validate scalar properties have mappings
37463764 var valueProperty = complexProperty . ComplexType . FindProperty ( "Value" ) ! ;
3747- var valueMappings = valueProperty . GetJsonElementMappings ( ) . ToList ( ) ;
3765+ var valueMappings = valueProperty . GetJsonElementMappings ( ) . Where ( m => m . TableMapping . Table == table ) . ToList ( ) ;
37483766 Assert . Single ( valueMappings ) ;
37493767 Assert . Equal ( "Value" , valueMappings [ 0 ] . Element . PropertyName ) ;
37503768 Assert . Same ( ( RelationalTypeMapping ) valueProperty . GetTypeMapping ( ) , valueMappings [ 0 ] . Element . StoreTypeMapping ) ;
0 commit comments