Skip to content

Commit 67beccb

Browse files
committed
Revert "Fix complex property JSON column not marked nullable in TPH hierarchy (#37781)"
This reverts commit 6a7fa61.
1 parent 6a7fa61 commit 67beccb

3 files changed

Lines changed: 2 additions & 42 deletions

File tree

src/EFCore.Relational/Metadata/Internal/RelationalModel.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -634,13 +634,8 @@ private static void CreateContainerColumn<TColumnMappingBase>(
634634
{
635635
complexType = (IComplexType)mappedType;
636636
#pragma warning disable EF1001 // Internal EF Core API usage.
637-
var chain = complexType.ComplexProperty.GetChainToComplexProperty(fromEntity: true);
638637
jsonColumn.IsNullable = complexType.ComplexProperty.IsNullable
639-
|| (chain[0].DeclaringType is IEntityType declaringEntityType
640-
&& declaringEntityType.BaseType != null
641-
&& (declaringEntityType.GetMappingStrategy() ?? RelationalAnnotationNames.TphMappingStrategy)
642-
== RelationalAnnotationNames.TphMappingStrategy)
643-
|| chain.Any(p => p.IsNullable);
638+
|| complexType.ComplexProperty.GetChainToComplexProperty(fromEntity: true).Any(p => p.IsNullable);
644639
#pragma warning restore EF1001 // Internal EF Core API usage.
645640
}
646641
}

test/EFCore.Relational.Tests/Metadata/RelationalModelTest.cs

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3201,26 +3201,6 @@ 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-
32243204
private static IRelationalModel Finalize(TestHelpers.TestModelBuilder modelBuilder)
32253205
=> modelBuilder.FinalizeModel(designTime: true).GetRelationalModel();
32263206

@@ -3338,18 +3318,6 @@ private class EntityWithComplexCollection
33383318
public List<ComplexData> ComplexCollection { get; set; }
33393319
}
33403320

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-
33533321
private class ComplexData
33543322
{
33553323
public string Value { get; set; }

test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/ComplexTypes/DbContextModelBuilder.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -406,10 +406,7 @@ private IRelationalModel CreateRelationalModel()
406406
var flagsEnum2Column = new Column("FlagsEnum2", "int", principalBaseTable);
407407
principalBaseTable.Columns.Add("FlagsEnum2", flagsEnum2Column);
408408
flagsEnum2Column.Accessors = ColumnAccessorsFactory.CreateGeneric<int>(flagsEnum2Column);
409-
var manyOwnedColumn = new JsonColumn("ManyOwned", "nvarchar(max)", principalBaseTable)
410-
{
411-
IsNullable = true
412-
};
409+
var manyOwnedColumn = new JsonColumn("ManyOwned", "nvarchar(max)", principalBaseTable);
413410
principalBaseTable.Columns.Add("ManyOwned", manyOwnedColumn);
414411
manyOwnedColumn.Accessors = ColumnAccessorsFactory.CreateGeneric<JsonTypePlaceholder>(manyOwnedColumn);
415412
var owned_NumberColumn = new Column("Owned_Number", "int", principalBaseTable);

0 commit comments

Comments
 (0)