diff --git a/src/EFCore.Relational/Update/ModificationCommand.cs b/src/EFCore.Relational/Update/ModificationCommand.cs index f2aaf2db6ce..f3d08738e53 100644 --- a/src/EFCore.Relational/Update/ModificationCommand.cs +++ b/src/EFCore.Relational/Update/ModificationCommand.cs @@ -288,7 +288,7 @@ private List GenerateColumnModifications() } } - if (_entries.Any(e => e.EntityType is { } entityType + if (!deleting && _entries.Any(e => e.EntityType is { } entityType && (entityType.IsMappedToJson() || entityType.GetFlattenedComplexProperties().Any(cp => cp.ComplexType.IsMappedToJson()) || entityType.GetNavigations().Any(e => e.IsCollection && e.TargetEntityType.IsMappedToJson())))) diff --git a/test/EFCore.Relational.Specification.Tests/Update/ComplexCollectionJsonUpdateTestBase.cs b/test/EFCore.Relational.Specification.Tests/Update/ComplexCollectionJsonUpdateTestBase.cs index b28f632297e..8a1ac0049b8 100644 --- a/test/EFCore.Relational.Specification.Tests/Update/ComplexCollectionJsonUpdateTestBase.cs +++ b/test/EFCore.Relational.Specification.Tests/Update/ComplexCollectionJsonUpdateTestBase.cs @@ -70,6 +70,30 @@ public virtual Task Remove_element_from_complex_collection_mapped_to_json() } }); + [ConditionalFact] + public virtual Task Delete_complex_collection_owner_entity_mapped_to_json() + => TestHelpers.ExecuteWithStrategyInTransactionAsync( + CreateContext, + UseTransaction, + async context => + { + var company = await context.Companies.SingleAsync(c => c.Id == 1); + + context.Remove(company); + + ClearLog(); + + await context.SaveChangesAsync(); + }, + async context => + { + using (SuspendRecordingEvents()) + { + var exists = await context.Companies.AnyAsync(c => c.Id == 1); + Assert.False(exists); + } + }); + [ConditionalFact] public virtual Task Modify_element_in_complex_collection_mapped_to_json() => TestHelpers.ExecuteWithStrategyInTransactionAsync( diff --git a/test/EFCore.SqlServer.FunctionalTests/Update/ComplexCollectionJsonUpdateSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Update/ComplexCollectionJsonUpdateSqlServerTest.cs index 0fcc606db00..ef3c7f79a90 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Update/ComplexCollectionJsonUpdateSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Update/ComplexCollectionJsonUpdateSqlServerTest.cs @@ -44,6 +44,23 @@ OUTPUT 1 """); } + public override async Task Delete_complex_collection_owner_entity_mapped_to_json() + { + await base.Delete_complex_collection_owner_entity_mapped_to_json(); + + AssertSql( + """ +@p0='1' + +SET IMPLICIT_TRANSACTIONS OFF; +SET NOCOUNT ON; +DELETE FROM [Companies] +OUTPUT 1 +WHERE [Id] = @p0; +"""); + } + + public override async Task Modify_element_in_complex_collection_mapped_to_json() { await base.Modify_element_in_complex_collection_mapped_to_json();