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