diff --git a/test/EFCore.Relational.Specification.Tests/Query/PrecompiledQueryRelationalTestBase.cs b/test/EFCore.Relational.Specification.Tests/Query/PrecompiledQueryRelationalTestBase.cs index bb94abd7284..6006d510c6b 100644 --- a/test/EFCore.Relational.Specification.Tests/Query/PrecompiledQueryRelationalTestBase.cs +++ b/test/EFCore.Relational.Specification.Tests/Query/PrecompiledQueryRelationalTestBase.cs @@ -17,7 +17,7 @@ namespace Microsoft.EntityFrameworkCore.Query; /// See also for tests specifically related to SQL pregeneration. /// [Collection("PrecompiledQuery")] -public class PrecompiledQueryRelationalTestBase +public abstract class PrecompiledQueryRelationalTestBase { public PrecompiledQueryRelationalTestBase(PrecompiledQueryRelationalFixture fixture, ITestOutputHelper testOutputHelper) { diff --git a/test/EFCore.Relational.Specification.Tests/Query/PrecompiledSqlPregenerationQueryRelationalTestBase.cs b/test/EFCore.Relational.Specification.Tests/Query/PrecompiledSqlPregenerationQueryRelationalTestBase.cs index a5b2cfab23b..e0ade9bb120 100644 --- a/test/EFCore.Relational.Specification.Tests/Query/PrecompiledSqlPregenerationQueryRelationalTestBase.cs +++ b/test/EFCore.Relational.Specification.Tests/Query/PrecompiledSqlPregenerationQueryRelationalTestBase.cs @@ -14,7 +14,7 @@ namespace Microsoft.EntityFrameworkCore.Query; /// SQL pregeneration. /// [Collection("PrecompiledQuery")] -public class PrecompiledSqlPregenerationQueryRelationalTestBase +public abstract class PrecompiledSqlPregenerationQueryRelationalTestBase { public PrecompiledSqlPregenerationQueryRelationalTestBase( PrecompiledSqlPregenerationQueryRelationalFixture fixture, diff --git a/test/EFCore.SqlServer.FunctionalTests/ModelBuilding/SqlServerModelBuilderTestBase.cs b/test/EFCore.SqlServer.FunctionalTests/ModelBuilding/SqlServerModelBuilderTestBase.cs index dc9c3b689ac..0b239106d0f 100644 --- a/test/EFCore.SqlServer.FunctionalTests/ModelBuilding/SqlServerModelBuilderTestBase.cs +++ b/test/EFCore.SqlServer.FunctionalTests/ModelBuilding/SqlServerModelBuilderTestBase.cs @@ -1099,6 +1099,53 @@ public virtual void Owned_type_collections_can_be_mapped_to_different_tables() Assert.Null(owned.GetSchema()); } + [ConditionalFact] + public virtual void Owned_type_collections_are_mapped_to_same_tables_by_default() + { + var modelBuilder = CreateModelBuilder(); + + modelBuilder.Entity(b => + { + b.OwnsOne(x => x.OwnedReference1, bb => + { + bb.OwnsOne(x => x.Reference1); + bb.OwnsOne(x => x.Reference2); + bb.OwnsMany(x => x.Collection1); + bb.OwnsMany(x => x.Collection2); + }); + + b.OwnsOne(x => x.OwnedReference2, bb => + { + bb.OwnsOne(x => x.Reference1); + bb.OwnsOne(x => x.Reference2); + bb.OwnsMany(x => x.Collection1); + bb.OwnsMany(x => x.Collection2); + }); + + b.OwnsMany(x => x.OwnedCollection1, bb => + { + bb.OwnsOne(x => x.Reference1); + bb.OwnsOne(x => x.Reference2); + bb.OwnsMany(x => x.Collection1); + bb.OwnsMany(x => x.Collection2); + }); + + b.OwnsMany(x => x.OwnedCollection2, bb => + { + bb.OwnsOne(x => x.Reference1); + bb.OwnsOne(x => x.Reference2); + bb.OwnsMany(x => x.Collection1); + bb.OwnsMany(x => x.Collection2); + }); + }); + + Assert.Equal(RelationalStrings.IncompatibleTableNoRelationship( + "JsonEntityWithNesting_Collection1", + "JsonEntityWithNesting.OwnedReference2#OwnedEntityExtraLevel.Collection1#OwnedEntity", + "JsonEntityWithNesting.OwnedReference1#OwnedEntityExtraLevel.Collection1#OwnedEntity"), + Assert.Throws(() => modelBuilder.FinalizeModel()).Message); + } + [ConditionalFact] public virtual void Owned_type_collections_can_be_mapped_to_a_view() { @@ -2007,27 +2054,6 @@ public virtual void Json_entity_with_custom_property_names() Assert.Equal("InnerEnum", ownedEntity.GetProperty("Enum").GetJsonPropertyName()); } } - - [ConditionalFact] - public virtual void Json_entity_and_normal_owned_can_exist_side_to_side_on_same_entity() - { - var modelBuilder = CreateModelBuilder(); - - modelBuilder.Entity(b => - { - b.OwnsOne(x => x.OwnedReference1); - b.OwnsOne(x => x.OwnedReference2, bb => bb.ToJson("reference")); - b.OwnsMany(x => x.OwnedCollection1); - b.OwnsMany(x => x.OwnedCollection2, bb => bb.ToJson("collection")); - }); - - var model = modelBuilder.FinalizeModel(); - - var ownedEntities = model.FindEntityTypes(typeof(OwnedEntity)); - Assert.Equal(4, ownedEntities.Count()); - Assert.Equal(2, ownedEntities.Where(e => e.IsMappedToJson()).Count()); - Assert.Equal(2, ownedEntities.Where(e => e.IsOwned() && !e.IsMappedToJson()).Count()); - } } public class SqlServerModelBuilderFixture : RelationalModelBuilderFixture