diff --git a/test/EFCore.Specification.Tests/Query/InheritanceRelationshipsQueryFixtureBase.cs b/test/EFCore.Specification.Tests/Query/InheritanceRelationshipsQueryFixtureBase.cs index 30c9f774153..28bc0843fe2 100644 --- a/test/EFCore.Specification.Tests/Query/InheritanceRelationshipsQueryFixtureBase.cs +++ b/test/EFCore.Specification.Tests/Query/InheritanceRelationshipsQueryFixtureBase.cs @@ -9,125 +9,6 @@ public abstract class InheritanceRelationshipsQueryFixtureBase : SharedStoreFixt { protected override string StoreName { get; } = "InheritanceRelationships"; - protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext context) - { - modelBuilder.Entity().HasBaseType(); - modelBuilder.Entity().HasKey(e => e.Id); - - modelBuilder.Entity(); - modelBuilder.Entity(); - modelBuilder.Entity(); - modelBuilder.Entity(); - modelBuilder.Entity(); - modelBuilder.Entity(); - modelBuilder.Entity().HasKey(e => e.Id); - modelBuilder.Entity().HasKey(e => e.Id); - modelBuilder.Entity().HasKey(e => e.Id); - modelBuilder.Entity().HasKey(e => e.Id); - modelBuilder.Entity().HasKey(e => e.Id); - modelBuilder.Entity().HasKey(e => e.Id); - - modelBuilder.Entity() - .HasOne(e => e.DerivedSefReferenceOnBase) - .WithOne(e => e.BaseSelfReferenceOnDerived) - .HasForeignKey(e => e.BaseId) - .IsRequired(false); - - modelBuilder.Entity() - .HasOne(e => e.BaseReferenceOnBase) - .WithOne(e => e.BaseParent) - .HasForeignKey(e => e.BaseParentId) - .IsRequired(false); - - modelBuilder.Entity() - .HasOne(e => e.ReferenceOnBase) - .WithOne(e => e.Parent) - .HasForeignKey(e => e.ParentId) - .IsRequired(false); - - modelBuilder.Entity() - .HasMany(e => e.BaseCollectionOnBase) - .WithOne(e => e.BaseParent) - .HasForeignKey(e => e.BaseParentId) - .IsRequired(false); - - modelBuilder.Entity() - .HasMany(e => e.CollectionOnBase) - .WithOne(e => e.Parent) - .HasForeignKey(e => e.ParentId) - .IsRequired(false); - - modelBuilder.Entity() - .HasOne(e => e.DerivedReferenceOnDerived) - .WithOne() - .HasForeignKey("DerivedInheritanceRelationshipEntityId") - .IsRequired(false); - - modelBuilder.Entity() - .HasOne(e => e.ReferenceOnDerived) - .WithOne(e => e.Parent) - .HasForeignKey(e => e.ParentId) - .IsRequired(false); - - modelBuilder.Entity() - .HasMany(e => e.BaseCollectionOnDerived) - .WithOne(e => e.BaseParent) - .HasForeignKey(e => e.ParentId) - .IsRequired(false); - - modelBuilder.Entity() - .HasMany(e => e.CollectionOnDerived) - .WithOne(e => e.Parent) - .HasForeignKey(e => e.ParentId) - .IsRequired(false); - - modelBuilder.Entity() - .HasMany(e => e.DerivedCollectionOnDerived) - .WithOne() - .HasForeignKey("DerivedInheritanceRelationshipEntityId") - .IsRequired(false); - - modelBuilder.Entity() - .HasOne(e => e.BaseReferenceOnDerived) - .WithOne(e => e.BaseParent) - .HasForeignKey(e => e.BaseParentId) - .IsRequired(false); - - modelBuilder.Entity() - .HasOne(e => e.NestedReference) - .WithOne(e => e.ParentReference) - .HasForeignKey(e => e.ParentReferenceId) - .IsRequired(false); - - modelBuilder.Entity() - .HasMany(e => e.NestedCollection) - .WithOne(e => e.ParentReference) - .HasForeignKey(e => e.ParentReferenceId) - .IsRequired(false); - - modelBuilder.Entity() - .HasOne(e => e.NestedReference) - .WithOne(e => e.ParentCollection) - .HasForeignKey(e => e.ParentCollectionId) - .IsRequired(false); - - modelBuilder.Entity() - .HasMany(e => e.NestedCollection) - .WithOne(e => e.ParentCollection) - .HasForeignKey(e => e.ParentCollectionId) - .IsRequired(false); - - modelBuilder.Entity() - .HasOne(e => e.Reference) - .WithMany() - .IsRequired(false); - - modelBuilder.Entity() - .HasMany(e => e.Principals) - .WithOne() - .IsRequired(false); - } - protected override void Seed(InheritanceRelationshipsContext context) => InheritanceRelationshipsContext.Seed(context); diff --git a/test/EFCore.Specification.Tests/Query/InheritanceRelationshipsQueryTestBase.cs b/test/EFCore.Specification.Tests/Query/InheritanceRelationshipsQueryTestBase.cs index 9e88fc3ca93..df8a478e62d 100644 --- a/test/EFCore.Specification.Tests/Query/InheritanceRelationshipsQueryTestBase.cs +++ b/test/EFCore.Specification.Tests/Query/InheritanceRelationshipsQueryTestBase.cs @@ -74,7 +74,7 @@ public virtual void Entity_can_make_separate_relationships_with_base_type_and_de } [ConditionalFact] - public virtual void Include_reference_with_inheritance1() + public virtual void Include_reference_with_inheritance() { using var context = CreateContext(); var query = context.BaseEntities.Include(e => e.BaseReferenceOnBase); @@ -114,7 +114,7 @@ public virtual void Include_self_reference_with_inheritance_reverse() } [ConditionalFact] - public virtual void Include_reference_with_inheritance_with_filter1() + public virtual void Include_reference_with_inheritance_with_filter() { using var context = CreateContext(); var query = context.BaseEntities.Include(e => e.BaseReferenceOnBase).Where(e => e.Name != "Bar"); @@ -174,7 +174,7 @@ public virtual void Include_reference_without_inheritance_with_filter_reverse() } [ConditionalFact] - public virtual void Include_collection_with_inheritance1() + public virtual void Include_collection_with_inheritance() { using var context = CreateContext(); var query = context.BaseEntities.Include(e => e.BaseCollectionOnBase); @@ -196,7 +196,7 @@ public virtual void Include_collection_with_inheritance_reverse() } [ConditionalFact] - public virtual void Include_collection_with_inheritance_with_filter1() + public virtual void Include_collection_with_inheritance_with_filter() { using var context = CreateContext(); var query = context.BaseEntities.Include(e => e.BaseCollectionOnBase).Where(e => e.Name != "Bar"); @@ -410,7 +410,7 @@ public virtual void Include_collection_with_inheritance_on_derived_reverse() } [ConditionalFact] - public virtual void Nested_include_with_inheritance_reference_reference1() + public virtual void Nested_include_with_inheritance_reference_reference() { using var context = CreateContext(); var query = context.BaseEntities.Include(e => e.BaseReferenceOnBase.NestedReference); @@ -420,7 +420,7 @@ public virtual void Nested_include_with_inheritance_reference_reference1() } [ConditionalFact] - public virtual void Nested_include_with_inheritance_reference_reference3() + public virtual void Nested_include_with_inheritance_reference_reference_on_base() { using var context = CreateContext(); var query = context.DerivedEntities.Include(e => e.BaseReferenceOnBase.NestedReference); @@ -440,7 +440,7 @@ public virtual void Nested_include_with_inheritance_reference_reference_reverse( } [ConditionalFact] - public virtual void Nested_include_with_inheritance_reference_collection1() + public virtual void Nested_include_with_inheritance_reference_collection() { using var context = CreateContext(); var query = context.BaseEntities.Include(e => e.BaseReferenceOnBase.NestedCollection); @@ -450,7 +450,7 @@ public virtual void Nested_include_with_inheritance_reference_collection1() } [ConditionalFact] - public virtual void Nested_include_with_inheritance_reference_collection3() + public virtual void Nested_include_with_inheritance_reference_collection_on_base() { using var context = CreateContext(); var query = context.DerivedEntities.Include(e => e.BaseReferenceOnBase.NestedCollection); @@ -470,7 +470,7 @@ public virtual void Nested_include_with_inheritance_reference_collection_reverse } [ConditionalFact] - public virtual void Nested_include_with_inheritance_collection_reference1() + public virtual void Nested_include_with_inheritance_collection_reference() { using var context = CreateContext(); var query = context.BaseEntities.Include(e => e.BaseCollectionOnBase).ThenInclude(e => e.NestedReference); @@ -492,7 +492,7 @@ public virtual void Nested_include_with_inheritance_collection_reference_reverse } [ConditionalFact] - public virtual void Nested_include_with_inheritance_collection_collection1() + public virtual void Nested_include_with_inheritance_collection_collection() { using var context = CreateContext(); var query = context.BaseEntities.Include(e => e.BaseCollectionOnBase).ThenInclude(e => e.NestedCollection); diff --git a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseCollectionOnBase.cs b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseCollectionOnBase.cs index 01f4366948e..9cc510f0b2a 100644 --- a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseCollectionOnBase.cs +++ b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseCollectionOnBase.cs @@ -2,13 +2,11 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; namespace Microsoft.EntityFrameworkCore.TestModels.InheritanceRelationships { public class BaseCollectionOnBase { - [NotMapped] public int Id { get; set; } public string Name { get; set; } @@ -16,10 +14,8 @@ public class BaseCollectionOnBase public int? BaseParentId { get; set; } public BaseInheritanceRelationshipEntity BaseParent { get; set; } - [NotMapped] public NestedReferenceBase NestedReference { get; set; } - [NotMapped] public List NestedCollection { get; set; } } } diff --git a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseCollectionOnDerived.cs b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseCollectionOnDerived.cs index b85c047f2ee..01c301dfb06 100644 --- a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseCollectionOnDerived.cs +++ b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseCollectionOnDerived.cs @@ -1,13 +1,10 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System.ComponentModel.DataAnnotations.Schema; - namespace Microsoft.EntityFrameworkCore.TestModels.InheritanceRelationships { public class BaseCollectionOnDerived { - [NotMapped] public int Id { get; set; } public string Name { get; set; } diff --git a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseInheritanceRelationshipEntity.cs b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseInheritanceRelationshipEntity.cs index d6f9b9ece49..891e1fabca2 100644 --- a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseInheritanceRelationshipEntity.cs +++ b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseInheritanceRelationshipEntity.cs @@ -2,30 +2,22 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; namespace Microsoft.EntityFrameworkCore.TestModels.InheritanceRelationships { public class BaseInheritanceRelationshipEntity { - [NotMapped] public int Id { get; set; } public string Name { get; set; } - [NotMapped] public DerivedInheritanceRelationshipEntity DerivedSefReferenceOnBase { get; set; } - - [NotMapped] public BaseReferenceOnBase BaseReferenceOnBase { get; set; } - - [NotMapped] public ReferenceOnBase ReferenceOnBase { get; set; } + public OwnedEntity OwnedReferenceOnBase { get; set; } - [NotMapped] public List BaseCollectionOnBase { get; set; } - - [NotMapped] public List CollectionOnBase { get; set; } + public List OwnedCollectionOnBase { get; set; } } } diff --git a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseReferenceOnBase.cs b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseReferenceOnBase.cs index 854433996df..0afa95307f3 100644 --- a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseReferenceOnBase.cs +++ b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseReferenceOnBase.cs @@ -2,13 +2,11 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; namespace Microsoft.EntityFrameworkCore.TestModels.InheritanceRelationships { public class BaseReferenceOnBase { - [NotMapped] public int Id { get; set; } public string Name { get; set; } @@ -16,10 +14,8 @@ public class BaseReferenceOnBase public int? BaseParentId { get; set; } public BaseInheritanceRelationshipEntity BaseParent { get; set; } - [NotMapped] public NestedReferenceBase NestedReference { get; set; } - [NotMapped] public List NestedCollection { get; set; } } } diff --git a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseReferenceOnDerived.cs b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseReferenceOnDerived.cs index b1da76dcdb2..c21699a225d 100644 --- a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseReferenceOnDerived.cs +++ b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/BaseReferenceOnDerived.cs @@ -1,20 +1,15 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System.ComponentModel.DataAnnotations.Schema; - namespace Microsoft.EntityFrameworkCore.TestModels.InheritanceRelationships { public class BaseReferenceOnDerived { - [NotMapped] public int Id { get; set; } public string Name { get; set; } public int? BaseParentId { get; set; } - - [NotMapped] public DerivedInheritanceRelationshipEntity BaseParent { get; set; } } } diff --git a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/DerivedInheritanceRelationshipEntity.cs b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/DerivedInheritanceRelationshipEntity.cs index bb5e9843d29..87cdf2c38ef 100644 --- a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/DerivedInheritanceRelationshipEntity.cs +++ b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/DerivedInheritanceRelationshipEntity.cs @@ -13,9 +13,11 @@ public class DerivedInheritanceRelationshipEntity : BaseInheritanceRelationshipE public DerivedReferenceOnDerived DerivedReferenceOnDerived { get; set; } public ReferenceOnDerived ReferenceOnDerived { get; set; } public BaseInheritanceRelationshipEntity BaseSelfReferenceOnDerived { get; set; } + public OwnedEntity OwnedReferenceOnDerived { get; set; } public List BaseCollectionOnDerived { get; set; } public List DerivedCollectionOnDerived { get; set; } public List CollectionOnDerived { get; set; } + public List OwnedCollectionOnDerived { get; set; } } } diff --git a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/InheritanceRelationshipsContext.cs b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/InheritanceRelationshipsContext.cs index 82abeaf6a26..8774bd09202 100644 --- a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/InheritanceRelationshipsContext.cs +++ b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/InheritanceRelationshipsContext.cs @@ -229,7 +229,21 @@ public static void Seed(InheritanceRelationshipsContext context) BaseReferenceOnBase = brob1, ReferenceOnBase = rob1, BaseCollectionOnBase = new List { bcob11 }, - CollectionOnBase = new List { cob11, cob12 } + CollectionOnBase = new List { cob11, cob12 }, + OwnedReferenceOnBase = new OwnedEntity + { + Name = "OROB1" + }, + OwnedCollectionOnBase = new List{ + new OwnedEntity + { + Id = 1, + Name = "OCOB11" + }, new OwnedEntity + { + Id = 2, + Name = "OCOB12" + }} }; var baseEntity2 = new BaseInheritanceRelationshipEntity @@ -237,7 +251,17 @@ public static void Seed(InheritanceRelationshipsContext context) Name = "Base2", BaseReferenceOnBase = drob2, ReferenceOnBase = rob2, - CollectionOnBase = new List { cob21 } + CollectionOnBase = new List { cob21 }, + OwnedReferenceOnBase = new OwnedEntity + { + Name = "OROB2" + }, + OwnedCollectionOnBase = new List{ + new OwnedEntity + { + Id = 3, + Name = "OCOB21" + }} }; var baseEntity3 = new BaseInheritanceRelationshipEntity @@ -260,7 +284,35 @@ public static void Seed(InheritanceRelationshipsContext context) ReferenceOnDerived = rod1, BaseCollectionOnDerived = new List { bcod11 }, DerivedCollectionOnDerived = new List { dcod11, dcod12 }, - CollectionOnDerived = new List { cod11 } + CollectionOnDerived = new List { cod11 }, + OwnedReferenceOnBase = new OwnedEntity + { + Name = "OROB4" + }, + OwnedCollectionOnBase = new List{ + new OwnedEntity + { + Id = 4, + Name = "OCOB41" + }, new OwnedEntity + { + Id = 5, + Name = "OCOB42" + }}, + OwnedReferenceOnDerived = new OwnedEntity + { + Name = "OROD4" + }, + OwnedCollectionOnDerived = new List{ + new OwnedEntity + { + Id = 1, + Name = "OCOD41" + }, new OwnedEntity + { + Id = 2, + Name = "OCOD42" + }} }; var derivedEntity2 = new DerivedInheritanceRelationshipEntity @@ -272,7 +324,27 @@ public static void Seed(InheritanceRelationshipsContext context) CollectionOnBase = new List { cob41 }, BaseReferenceOnDerived = drod2, ReferenceOnDerived = rod2, - CollectionOnDerived = new List { cod21, cod22 } + CollectionOnDerived = new List { cod21, cod22 }, + OwnedReferenceOnBase = new OwnedEntity + { + Name = "OROB5" + }, + OwnedCollectionOnBase = new List{ + new OwnedEntity + { + Id = 6, + Name = "OCOB51" + }}, + OwnedReferenceOnDerived = new OwnedEntity + { + Name = "OROD5" + }, + OwnedCollectionOnDerived = new List{ + new OwnedEntity + { + Id = 3, + Name = "OCOD51" + }} }; var derivedEntity3 = new DerivedInheritanceRelationshipEntity @@ -306,5 +378,124 @@ public static void Seed(InheritanceRelationshipsContext context) context.SaveChanges(); } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Owned(); + modelBuilder.Entity(); + modelBuilder.Entity(); + modelBuilder.Entity(); + modelBuilder.Entity(); + modelBuilder.Entity(); + modelBuilder.Entity(); + + modelBuilder.Entity() + .HasOne(e => e.DerivedSefReferenceOnBase) + .WithOne(e => e.BaseSelfReferenceOnDerived) + .HasForeignKey(e => e.BaseId) + .IsRequired(false); + + modelBuilder.Entity() + .HasOne(e => e.BaseReferenceOnBase) + .WithOne(e => e.BaseParent) + .HasForeignKey(e => e.BaseParentId) + .IsRequired(false); + + modelBuilder.Entity() + .HasOne(e => e.ReferenceOnBase) + .WithOne(e => e.Parent) + .HasForeignKey(e => e.ParentId) + .IsRequired(false); + + modelBuilder.Entity() + .HasMany(e => e.BaseCollectionOnBase) + .WithOne(e => e.BaseParent) + .HasForeignKey(e => e.BaseParentId) + .IsRequired(false); + + modelBuilder.Entity() + .HasMany(e => e.CollectionOnBase) + .WithOne(e => e.Parent) + .HasForeignKey(e => e.ParentId) + .IsRequired(false); + + modelBuilder.Entity() + .OwnsMany(e => e.OwnedCollectionOnBase) + .Property(e => e.Id).ValueGeneratedNever(); + + modelBuilder.Entity() + .HasOne(e => e.DerivedReferenceOnDerived) + .WithOne() + .HasForeignKey("DerivedInheritanceRelationshipEntityId") + .IsRequired(false); + + modelBuilder.Entity() + .HasOne(e => e.ReferenceOnDerived) + .WithOne(e => e.Parent) + .HasForeignKey(e => e.ParentId) + .IsRequired(false); + + modelBuilder.Entity() + .HasMany(e => e.BaseCollectionOnDerived) + .WithOne(e => e.BaseParent) + .HasForeignKey(e => e.ParentId) + .IsRequired(false); + + modelBuilder.Entity() + .HasMany(e => e.CollectionOnDerived) + .WithOne(e => e.Parent) + .HasForeignKey(e => e.ParentId) + .IsRequired(false); + + modelBuilder.Entity() + .HasMany(e => e.DerivedCollectionOnDerived) + .WithOne() + .HasForeignKey("DerivedInheritanceRelationshipEntityId") + .IsRequired(false); + + modelBuilder.Entity() + .HasOne(e => e.BaseReferenceOnDerived) + .WithOne(e => e.BaseParent) + .HasForeignKey(e => e.BaseParentId) + .IsRequired(false); + + modelBuilder.Entity() + .OwnsMany(e => e.OwnedCollectionOnDerived) + .Property(e => e.Id).ValueGeneratedNever(); + + modelBuilder.Entity() + .HasOne(e => e.NestedReference) + .WithOne(e => e.ParentReference) + .HasForeignKey(e => e.ParentReferenceId) + .IsRequired(false); + + modelBuilder.Entity() + .HasMany(e => e.NestedCollection) + .WithOne(e => e.ParentReference) + .HasForeignKey(e => e.ParentReferenceId) + .IsRequired(false); + + modelBuilder.Entity() + .HasOne(e => e.NestedReference) + .WithOne(e => e.ParentCollection) + .HasForeignKey(e => e.ParentCollectionId) + .IsRequired(false); + + modelBuilder.Entity() + .HasMany(e => e.NestedCollection) + .WithOne(e => e.ParentCollection) + .HasForeignKey(e => e.ParentCollectionId) + .IsRequired(false); + + modelBuilder.Entity() + .HasOne(e => e.Reference) + .WithMany() + .IsRequired(false); + + modelBuilder.Entity() + .HasMany(e => e.Principals) + .WithOne() + .IsRequired(false); + } } } diff --git a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/NestedCollectionBase.cs b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/NestedCollectionBase.cs index f400c3435c6..67a5b15783f 100644 --- a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/NestedCollectionBase.cs +++ b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/NestedCollectionBase.cs @@ -7,7 +7,6 @@ namespace Microsoft.EntityFrameworkCore.TestModels.InheritanceRelationships { public class NestedCollectionBase { - [NotMapped] public int Id { get; set; } public string Name { get; set; } diff --git a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/NestedReferenceBase.cs b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/NestedReferenceBase.cs index dc56e2f3223..da1a934386a 100644 --- a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/NestedReferenceBase.cs +++ b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/NestedReferenceBase.cs @@ -1,13 +1,10 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System.ComponentModel.DataAnnotations.Schema; - namespace Microsoft.EntityFrameworkCore.TestModels.InheritanceRelationships { public class NestedReferenceBase { - [NotMapped] public int Id { get; set; } public string Name { get; set; } diff --git a/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/OwnedEntity.cs b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/OwnedEntity.cs new file mode 100644 index 00000000000..401cb467bd2 --- /dev/null +++ b/test/EFCore.Specification.Tests/TestModels/InheritanceRelationships/OwnedEntity.cs @@ -0,0 +1,11 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.EntityFrameworkCore.TestModels.InheritanceRelationships +{ + public class OwnedEntity + { + public int Id { get; set; } + public string Name { get; set; } + } +} diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/InheritanceRelationshipsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/InheritanceRelationshipsQuerySqlServerTest.cs index 0e8f84848bb..183fb8ddd45 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/InheritanceRelationshipsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/InheritanceRelationshipsQuerySqlServerTest.cs @@ -15,14 +15,18 @@ public InheritanceRelationshipsQuerySqlServerTest( fixture.TestSqlLoggerFactory.Clear(); } - public override void Include_reference_with_inheritance1() + public override void Include_reference_with_inheritance() { - base.Include_reference_with_inheritance1(); + base.Include_reference_with_inheritance(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseEntities] AS [b] -LEFT JOIN [BaseReferencesOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId]"); +LEFT JOIN [BaseReferencesOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); + } public override void Include_reference_with_inheritance_reverse() @@ -30,9 +34,12 @@ public override void Include_reference_with_inheritance_reverse() base.Include_reference_with_inheritance_reverse(); AssertSql( - @"SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId] + @"SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId], [b0].[OwnedReferenceOnBase_Id], [b0].[OwnedReferenceOnBase_Name], [b0].[OwnedReferenceOnDerived_Id], [b0].[OwnedReferenceOnDerived_Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseReferencesOnBase] AS [b] -LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id]"); +LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b0].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b0].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } public override void Include_self_reference_with_inheritance() @@ -40,13 +47,18 @@ public override void Include_self_reference_with_inheritance() base.Include_self_reference_with_inheritance(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId], [t].[Id0], [t].[OwnedReferenceOnBase_Id], [t].[OwnedReferenceOnBase_Name], [t].[OwnedReferenceOnDerived_Id], [t].[OwnedReferenceOnDerived_Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b3].[BaseInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b4].[DerivedInheritanceRelationshipEntityId], [b4].[Id], [b4].[Name] FROM [BaseEntities] AS [b] LEFT JOIN ( - SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId] + SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId], [b0].[Id] AS [Id0], [b0].[OwnedReferenceOnBase_Id], [b0].[OwnedReferenceOnBase_Name], [b0].[OwnedReferenceOnDerived_Id], [b0].[OwnedReferenceOnDerived_Name] FROM [BaseEntities] AS [b0] WHERE [b0].[Discriminator] = N'DerivedInheritanceRelationshipEntity' -) AS [t] ON [b].[Id] = [t].[BaseId]"); +) AS [t] ON [b].[Id] = [t].[BaseId] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b3] ON [t].[Id] = [b3].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b4] ON [t].[Id] = [b4].[DerivedInheritanceRelationshipEntityId] +ORDER BY [b].[Id], [t].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b3].[BaseInheritanceRelationshipEntityId], [b3].[Id], [b4].[DerivedInheritanceRelationshipEntityId], [b4].[Id]"); } public override void Include_self_reference_with_inheritance_reverse() @@ -54,21 +66,29 @@ public override void Include_self_reference_with_inheritance_reverse() base.Include_self_reference_with_inheritance_reverse(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId], [b0].[OwnedReferenceOnBase_Id], [b0].[OwnedReferenceOnBase_Name], [b0].[OwnedReferenceOnDerived_Id], [b0].[OwnedReferenceOnDerived_Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b3].[BaseInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b4].[DerivedInheritanceRelationshipEntityId], [b4].[Id], [b4].[Name] FROM [BaseEntities] AS [b] LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseId] = [b0].[Id] -WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity'"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b3] ON [b0].[Id] = [b3].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b4] ON [b0].[Id] = [b4].[DerivedInheritanceRelationshipEntityId] +WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' +ORDER BY [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b3].[BaseInheritanceRelationshipEntityId], [b3].[Id], [b4].[DerivedInheritanceRelationshipEntityId], [b4].[Id]"); } - public override void Include_reference_with_inheritance_with_filter1() + public override void Include_reference_with_inheritance_with_filter() { - base.Include_reference_with_inheritance_with_filter1(); + base.Include_reference_with_inheritance_with_filter(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseEntities] AS [b] LEFT JOIN [BaseReferencesOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] -WHERE ([b].[Name] <> N'Bar') OR [b].[Name] IS NULL"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +WHERE ([b].[Name] <> N'Bar') OR [b].[Name] IS NULL +ORDER BY [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } public override void Include_reference_with_inheritance_with_filter_reverse() @@ -76,10 +96,14 @@ public override void Include_reference_with_inheritance_with_filter_reverse() base.Include_reference_with_inheritance_with_filter_reverse(); AssertSql( - @"SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId] + @"SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId], [b0].[OwnedReferenceOnBase_Id], [b0].[OwnedReferenceOnBase_Name], [b0].[OwnedReferenceOnDerived_Id], [b0].[OwnedReferenceOnDerived_Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseReferencesOnBase] AS [b] LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] -WHERE ([b].[Name] <> N'Bar') OR [b].[Name] IS NULL"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b0].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b0].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +WHERE ([b].[Name] <> N'Bar') OR [b].[Name] IS NULL +ORDER BY [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); + } public override void Include_reference_without_inheritance() @@ -87,9 +111,13 @@ public override void Include_reference_without_inheritance() base.Include_reference_without_inheritance(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [r].[Id], [r].[Name], [r].[ParentId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [r].[Id], [r].[Name], [r].[ParentId], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name] FROM [BaseEntities] AS [b] -LEFT JOIN [ReferencesOnBase] AS [r] ON [b].[Id] = [r].[ParentId]"); +LEFT JOIN [ReferencesOnBase] AS [r] ON [b].[Id] = [r].[ParentId] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +ORDER BY [b].[Id], [r].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id]"); + } public override void Include_reference_without_inheritance_reverse() @@ -97,9 +125,13 @@ public override void Include_reference_without_inheritance_reverse() base.Include_reference_without_inheritance_reverse(); AssertSql( - @"SELECT [r].[Id], [r].[Name], [r].[ParentId], [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId] + @"SELECT [r].[Id], [r].[Name], [r].[ParentId], [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name] FROM [ReferencesOnBase] AS [r] -LEFT JOIN [BaseEntities] AS [b] ON [r].[ParentId] = [b].[Id]"); +LEFT JOIN [BaseEntities] AS [b] ON [r].[ParentId] = [b].[Id] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +ORDER BY [r].[Id], [b].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id]"); + } public override void Include_reference_without_inheritance_with_filter() @@ -107,10 +139,13 @@ public override void Include_reference_without_inheritance_with_filter() base.Include_reference_without_inheritance_with_filter(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [r].[Id], [r].[Name], [r].[ParentId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [r].[Id], [r].[Name], [r].[ParentId], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name] FROM [BaseEntities] AS [b] LEFT JOIN [ReferencesOnBase] AS [r] ON [b].[Id] = [r].[ParentId] -WHERE ([b].[Name] <> N'Bar') OR [b].[Name] IS NULL"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +WHERE ([b].[Name] <> N'Bar') OR [b].[Name] IS NULL +ORDER BY [b].[Id], [r].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id]"); } public override void Include_reference_without_inheritance_with_filter_reverse() @@ -118,21 +153,26 @@ public override void Include_reference_without_inheritance_with_filter_reverse() base.Include_reference_without_inheritance_with_filter_reverse(); AssertSql( - @"SELECT [r].[Id], [r].[Name], [r].[ParentId], [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId] + @"SELECT [r].[Id], [r].[Name], [r].[ParentId], [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name] FROM [ReferencesOnBase] AS [r] LEFT JOIN [BaseEntities] AS [b] ON [r].[ParentId] = [b].[Id] -WHERE ([r].[Name] <> N'Bar') OR [r].[Name] IS NULL"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +WHERE ([r].[Name] <> N'Bar') OR [r].[Name] IS NULL +ORDER BY [r].[Id], [b].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id]"); } - public override void Include_collection_with_inheritance1() + public override void Include_collection_with_inheritance() { - base.Include_collection_with_inheritance1(); + base.Include_collection_with_inheritance(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedProperty] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[Id], [b2].[BaseParentId], [b2].[Discriminator], [b2].[Name], [b2].[DerivedProperty] FROM [BaseEntities] AS [b] -LEFT JOIN [BaseCollectionsOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] -ORDER BY [b].[Id], [b0].[Id]"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +LEFT JOIN [BaseCollectionsOnBase] AS [b2] ON [b].[Id] = [b2].[BaseParentId] +ORDER BY [b].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b2].[Id]"); } public override void Include_collection_with_inheritance_reverse() @@ -140,21 +180,26 @@ public override void Include_collection_with_inheritance_reverse() base.Include_collection_with_inheritance_reverse(); AssertSql( - @"SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b].[DerivedProperty], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId] + @"SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b].[DerivedProperty], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId], [b0].[OwnedReferenceOnBase_Id], [b0].[OwnedReferenceOnBase_Name], [b0].[OwnedReferenceOnDerived_Id], [b0].[OwnedReferenceOnDerived_Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseCollectionsOnBase] AS [b] -LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id]"); +LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b0].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b0].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } - public override void Include_collection_with_inheritance_with_filter1() + public override void Include_collection_with_inheritance_with_filter() { - base.Include_collection_with_inheritance_with_filter1(); + base.Include_collection_with_inheritance_with_filter(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedProperty] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[Id], [b2].[BaseParentId], [b2].[Discriminator], [b2].[Name], [b2].[DerivedProperty] FROM [BaseEntities] AS [b] -LEFT JOIN [BaseCollectionsOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +LEFT JOIN [BaseCollectionsOnBase] AS [b2] ON [b].[Id] = [b2].[BaseParentId] WHERE ([b].[Name] <> N'Bar') OR [b].[Name] IS NULL -ORDER BY [b].[Id], [b0].[Id]"); +ORDER BY [b].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b2].[Id]"); } public override void Include_collection_with_inheritance_with_filter_reverse() @@ -162,10 +207,13 @@ public override void Include_collection_with_inheritance_with_filter_reverse() base.Include_collection_with_inheritance_with_filter_reverse(); AssertSql( - @"SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b].[DerivedProperty], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId] + @"SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b].[DerivedProperty], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId], [b0].[OwnedReferenceOnBase_Id], [b0].[OwnedReferenceOnBase_Name], [b0].[OwnedReferenceOnDerived_Id], [b0].[OwnedReferenceOnDerived_Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseCollectionsOnBase] AS [b] LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] -WHERE ([b].[Name] <> N'Bar') OR [b].[Name] IS NULL"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b0].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b0].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +WHERE ([b].[Name] <> N'Bar') OR [b].[Name] IS NULL +ORDER BY [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } public override void Include_collection_without_inheritance() @@ -173,10 +221,12 @@ public override void Include_collection_without_inheritance() base.Include_collection_without_inheritance(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [c].[Id], [c].[Name], [c].[ParentId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [c].[Id], [c].[Name], [c].[ParentId] FROM [BaseEntities] AS [b] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] LEFT JOIN [CollectionsOnBase] AS [c] ON [b].[Id] = [c].[ParentId] -ORDER BY [b].[Id], [c].[Id]"); +ORDER BY [b].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [c].[Id]"); } public override void Include_collection_without_inheritance_reverse() @@ -184,9 +234,12 @@ public override void Include_collection_without_inheritance_reverse() base.Include_collection_without_inheritance_reverse(); AssertSql( - @"SELECT [c].[Id], [c].[Name], [c].[ParentId], [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId] + @"SELECT [c].[Id], [c].[Name], [c].[ParentId], [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name] FROM [CollectionsOnBase] AS [c] -LEFT JOIN [BaseEntities] AS [b] ON [c].[ParentId] = [b].[Id]"); +LEFT JOIN [BaseEntities] AS [b] ON [c].[ParentId] = [b].[Id] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +ORDER BY [c].[Id], [b].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id]"); } public override void Include_collection_without_inheritance_with_filter() @@ -194,11 +247,13 @@ public override void Include_collection_without_inheritance_with_filter() base.Include_collection_without_inheritance_with_filter(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [c].[Id], [c].[Name], [c].[ParentId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [c].[Id], [c].[Name], [c].[ParentId] FROM [BaseEntities] AS [b] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] LEFT JOIN [CollectionsOnBase] AS [c] ON [b].[Id] = [c].[ParentId] WHERE ([b].[Name] <> N'Bar') OR [b].[Name] IS NULL -ORDER BY [b].[Id], [c].[Id]"); +ORDER BY [b].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [c].[Id]"); } public override void Include_collection_without_inheritance_with_filter_reverse() @@ -206,10 +261,13 @@ public override void Include_collection_without_inheritance_with_filter_reverse( base.Include_collection_without_inheritance_with_filter_reverse(); AssertSql( - @"SELECT [c].[Id], [c].[Name], [c].[ParentId], [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId] + @"SELECT [c].[Id], [c].[Name], [c].[ParentId], [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name] FROM [CollectionsOnBase] AS [c] LEFT JOIN [BaseEntities] AS [b] ON [c].[ParentId] = [b].[Id] -WHERE ([c].[Name] <> N'Bar') OR [c].[Name] IS NULL"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +WHERE ([c].[Name] <> N'Bar') OR [c].[Name] IS NULL +ORDER BY [c].[Id], [b].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id]"); } public override void Include_reference_with_inheritance_on_derived1() @@ -217,10 +275,13 @@ public override void Include_reference_with_inheritance_on_derived1() base.Include_reference_with_inheritance_on_derived1(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseEntities] AS [b] LEFT JOIN [BaseReferencesOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] -WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity'"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' +ORDER BY [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } public override void Include_reference_with_inheritance_on_derived2() @@ -228,10 +289,13 @@ public override void Include_reference_with_inheritance_on_derived2() base.Include_reference_with_inheritance_on_derived2(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedInheritanceRelationshipEntityId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedInheritanceRelationshipEntityId], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseEntities] AS [b] LEFT JOIN [BaseReferencesOnDerived] AS [b0] ON [b].[Id] = [b0].[BaseParentId] -WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity'"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' +ORDER BY [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } public override void Include_reference_with_inheritance_on_derived4() @@ -239,14 +303,17 @@ public override void Include_reference_with_inheritance_on_derived4() base.Include_reference_with_inheritance_on_derived4(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t].[DerivedInheritanceRelationshipEntityId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t].[DerivedInheritanceRelationshipEntityId], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseEntities] AS [b] LEFT JOIN ( SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedInheritanceRelationshipEntityId] FROM [BaseReferencesOnDerived] AS [b0] WHERE [b0].[Discriminator] = N'DerivedReferenceOnDerived' ) AS [t] ON [b].[Id] = [t].[DerivedInheritanceRelationshipEntityId] -WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity'"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' +ORDER BY [b].[Id], [t].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } public override void Include_reference_with_inheritance_on_derived_reverse() @@ -254,13 +321,17 @@ public override void Include_reference_with_inheritance_on_derived_reverse() base.Include_reference_with_inheritance_on_derived_reverse(); AssertSql( - @"SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b].[DerivedInheritanceRelationshipEntityId], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId] + @"SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b].[DerivedInheritanceRelationshipEntityId], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId], [t].[Id0], [t].[OwnedReferenceOnBase_Id], [t].[OwnedReferenceOnBase_Name], [t].[OwnedReferenceOnDerived_Id], [t].[OwnedReferenceOnDerived_Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseReferencesOnDerived] AS [b] LEFT JOIN ( - SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId] + SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId], [b0].[Id] AS [Id0], [b0].[OwnedReferenceOnBase_Id], [b0].[OwnedReferenceOnBase_Name], [b0].[OwnedReferenceOnDerived_Id], [b0].[OwnedReferenceOnDerived_Name] FROM [BaseEntities] AS [b0] WHERE [b0].[Discriminator] = N'DerivedInheritanceRelationshipEntity' -) AS [t] ON [b].[BaseParentId] = [t].[Id]"); +) AS [t] ON [b].[BaseParentId] = [t].[Id] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [t].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [t].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [b].[Id], [t].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); + } public override void Include_reference_with_inheritance_on_derived_with_filter1() @@ -268,10 +339,13 @@ public override void Include_reference_with_inheritance_on_derived_with_filter1( base.Include_reference_with_inheritance_on_derived_with_filter1(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseEntities] AS [b] LEFT JOIN [BaseReferencesOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] -WHERE ([b].[Discriminator] = N'DerivedInheritanceRelationshipEntity') AND (([b].[Name] <> N'Bar') OR [b].[Name] IS NULL)"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +WHERE ([b].[Discriminator] = N'DerivedInheritanceRelationshipEntity') AND (([b].[Name] <> N'Bar') OR [b].[Name] IS NULL) +ORDER BY [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } public override void Include_reference_with_inheritance_on_derived_with_filter2() @@ -279,10 +353,13 @@ public override void Include_reference_with_inheritance_on_derived_with_filter2( base.Include_reference_with_inheritance_on_derived_with_filter2(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedInheritanceRelationshipEntityId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedInheritanceRelationshipEntityId], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseEntities] AS [b] LEFT JOIN [BaseReferencesOnDerived] AS [b0] ON [b].[Id] = [b0].[BaseParentId] -WHERE ([b].[Discriminator] = N'DerivedInheritanceRelationshipEntity') AND (([b].[Name] <> N'Bar') OR [b].[Name] IS NULL)"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +WHERE ([b].[Discriminator] = N'DerivedInheritanceRelationshipEntity') AND (([b].[Name] <> N'Bar') OR [b].[Name] IS NULL) +ORDER BY [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } public override void Include_reference_with_inheritance_on_derived_with_filter4() @@ -290,14 +367,17 @@ public override void Include_reference_with_inheritance_on_derived_with_filter4( base.Include_reference_with_inheritance_on_derived_with_filter4(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t].[DerivedInheritanceRelationshipEntityId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t].[DerivedInheritanceRelationshipEntityId], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseEntities] AS [b] LEFT JOIN ( SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedInheritanceRelationshipEntityId] FROM [BaseReferencesOnDerived] AS [b0] WHERE [b0].[Discriminator] = N'DerivedReferenceOnDerived' ) AS [t] ON [b].[Id] = [t].[DerivedInheritanceRelationshipEntityId] -WHERE ([b].[Discriminator] = N'DerivedInheritanceRelationshipEntity') AND (([b].[Name] <> N'Bar') OR [b].[Name] IS NULL)"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +WHERE ([b].[Discriminator] = N'DerivedInheritanceRelationshipEntity') AND (([b].[Name] <> N'Bar') OR [b].[Name] IS NULL) +ORDER BY [b].[Id], [t].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } public override void Include_reference_with_inheritance_on_derived_with_filter_reverse() @@ -305,14 +385,17 @@ public override void Include_reference_with_inheritance_on_derived_with_filter_r base.Include_reference_with_inheritance_on_derived_with_filter_reverse(); AssertSql( - @"SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b].[DerivedInheritanceRelationshipEntityId], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId] + @"SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b].[DerivedInheritanceRelationshipEntityId], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId], [t].[Id0], [t].[OwnedReferenceOnBase_Id], [t].[OwnedReferenceOnBase_Name], [t].[OwnedReferenceOnDerived_Id], [t].[OwnedReferenceOnDerived_Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseReferencesOnDerived] AS [b] LEFT JOIN ( - SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId] + SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId], [b0].[Id] AS [Id0], [b0].[OwnedReferenceOnBase_Id], [b0].[OwnedReferenceOnBase_Name], [b0].[OwnedReferenceOnDerived_Id], [b0].[OwnedReferenceOnDerived_Name] FROM [BaseEntities] AS [b0] WHERE [b0].[Discriminator] = N'DerivedInheritanceRelationshipEntity' ) AS [t] ON [b].[BaseParentId] = [t].[Id] -WHERE ([b].[Name] <> N'Bar') OR [b].[Name] IS NULL"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [t].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [t].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +WHERE ([b].[Name] <> N'Bar') OR [b].[Name] IS NULL +ORDER BY [b].[Id], [t].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } public override void Include_reference_without_inheritance_on_derived1() @@ -320,10 +403,13 @@ public override void Include_reference_without_inheritance_on_derived1() base.Include_reference_without_inheritance_on_derived1(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [r].[Id], [r].[Name], [r].[ParentId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [r].[Id], [r].[Name], [r].[ParentId], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name] FROM [BaseEntities] AS [b] LEFT JOIN [ReferencesOnBase] AS [r] ON [b].[Id] = [r].[ParentId] -WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity'"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' +ORDER BY [b].[Id], [r].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id]"); } public override void Include_reference_without_inheritance_on_derived2() @@ -331,10 +417,13 @@ public override void Include_reference_without_inheritance_on_derived2() base.Include_reference_without_inheritance_on_derived2(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [r].[Id], [r].[Name], [r].[ParentId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [r].[Id], [r].[Name], [r].[ParentId], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name] FROM [BaseEntities] AS [b] LEFT JOIN [ReferencesOnDerived] AS [r] ON [b].[Id] = [r].[ParentId] -WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity'"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' +ORDER BY [b].[Id], [r].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id]"); } public override void Include_reference_without_inheritance_on_derived_reverse() @@ -342,13 +431,16 @@ public override void Include_reference_without_inheritance_on_derived_reverse() base.Include_reference_without_inheritance_on_derived_reverse(); AssertSql( - @"SELECT [r].[Id], [r].[Name], [r].[ParentId], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId] + @"SELECT [r].[Id], [r].[Name], [r].[ParentId], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId], [t].[Id0], [t].[OwnedReferenceOnBase_Id], [t].[OwnedReferenceOnBase_Name], [t].[OwnedReferenceOnDerived_Id], [t].[OwnedReferenceOnDerived_Name], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name] FROM [ReferencesOnDerived] AS [r] LEFT JOIN ( - SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId] + SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[Id] AS [Id0], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name] FROM [BaseEntities] AS [b] WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' -) AS [t] ON [r].[ParentId] = [t].[Id]"); +) AS [t] ON [r].[ParentId] = [t].[Id] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [t].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [t].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +ORDER BY [r].[Id], [t].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id]"); } public override void Include_collection_with_inheritance_on_derived1() @@ -356,11 +448,13 @@ public override void Include_collection_with_inheritance_on_derived1() base.Include_collection_with_inheritance_on_derived1(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedProperty] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[Id], [b2].[BaseParentId], [b2].[Discriminator], [b2].[Name], [b2].[DerivedProperty] FROM [BaseEntities] AS [b] -LEFT JOIN [BaseCollectionsOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +LEFT JOIN [BaseCollectionsOnBase] AS [b2] ON [b].[Id] = [b2].[BaseParentId] WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' -ORDER BY [b].[Id], [b0].[Id]"); +ORDER BY [b].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b2].[Id]"); } public override void Include_collection_with_inheritance_on_derived2() @@ -368,11 +462,13 @@ public override void Include_collection_with_inheritance_on_derived2() base.Include_collection_with_inheritance_on_derived2(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[ParentId], [b0].[DerivedInheritanceRelationshipEntityId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[Id], [b2].[Discriminator], [b2].[Name], [b2].[ParentId], [b2].[DerivedInheritanceRelationshipEntityId] FROM [BaseEntities] AS [b] -LEFT JOIN [BaseCollectionsOnDerived] AS [b0] ON [b].[Id] = [b0].[ParentId] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +LEFT JOIN [BaseCollectionsOnDerived] AS [b2] ON [b].[Id] = [b2].[ParentId] WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' -ORDER BY [b].[Id], [b0].[Id]"); +ORDER BY [b].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b2].[Id]"); } public override void Include_collection_with_inheritance_on_derived3() @@ -380,15 +476,18 @@ public override void Include_collection_with_inheritance_on_derived3() base.Include_collection_with_inheritance_on_derived3(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [t].[Id], [t].[Discriminator], [t].[Name], [t].[ParentId], [t].[DerivedInheritanceRelationshipEntityId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [t].[Id], [t].[Discriminator], [t].[Name], [t].[ParentId], [t].[DerivedInheritanceRelationshipEntityId] FROM [BaseEntities] AS [b] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] LEFT JOIN ( - SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[ParentId], [b0].[DerivedInheritanceRelationshipEntityId] - FROM [BaseCollectionsOnDerived] AS [b0] - WHERE [b0].[Discriminator] = N'DerivedCollectionOnDerived' + SELECT [b2].[Id], [b2].[Discriminator], [b2].[Name], [b2].[ParentId], [b2].[DerivedInheritanceRelationshipEntityId] + FROM [BaseCollectionsOnDerived] AS [b2] + WHERE [b2].[Discriminator] = N'DerivedCollectionOnDerived' ) AS [t] ON [b].[Id] = [t].[DerivedInheritanceRelationshipEntityId] WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' -ORDER BY [b].[Id], [t].[Id]"); +ORDER BY [b].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [t].[Id]"); + } public override void Include_collection_with_inheritance_on_derived_reverse() @@ -396,36 +495,45 @@ public override void Include_collection_with_inheritance_on_derived_reverse() base.Include_collection_with_inheritance_on_derived_reverse(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[ParentId], [b].[DerivedInheritanceRelationshipEntityId], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[ParentId], [b].[DerivedInheritanceRelationshipEntityId], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId], [t].[Id0], [t].[OwnedReferenceOnBase_Id], [t].[OwnedReferenceOnBase_Name], [t].[OwnedReferenceOnDerived_Id], [t].[OwnedReferenceOnDerived_Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseCollectionsOnDerived] AS [b] LEFT JOIN ( - SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId] + SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId], [b0].[Id] AS [Id0], [b0].[OwnedReferenceOnBase_Id], [b0].[OwnedReferenceOnBase_Name], [b0].[OwnedReferenceOnDerived_Id], [b0].[OwnedReferenceOnDerived_Name] FROM [BaseEntities] AS [b0] WHERE [b0].[Discriminator] = N'DerivedInheritanceRelationshipEntity' -) AS [t] ON [b].[ParentId] = [t].[Id]"); +) AS [t] ON [b].[ParentId] = [t].[Id] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [t].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [t].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [b].[Id], [t].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } - public override void Nested_include_with_inheritance_reference_reference1() + public override void Nested_include_with_inheritance_reference_reference() { - base.Nested_include_with_inheritance_reference_reference1(); + base.Nested_include_with_inheritance_reference_reference(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseEntities] AS [b] LEFT JOIN [BaseReferencesOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] -LEFT JOIN [NestedReferences] AS [n] ON [b0].[Id] = [n].[ParentReferenceId]"); +LEFT JOIN [NestedReferences] AS [n] ON [b0].[Id] = [n].[ParentReferenceId] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [b].[Id], [b0].[Id], [n].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } - public override void Nested_include_with_inheritance_reference_reference3() + public override void Nested_include_with_inheritance_reference_reference_on_base() { - base.Nested_include_with_inheritance_reference_reference3(); + base.Nested_include_with_inheritance_reference_reference_on_base(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [BaseEntities] AS [b] LEFT JOIN [BaseReferencesOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] LEFT JOIN [NestedReferences] AS [n] ON [b0].[Id] = [n].[ParentReferenceId] -WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity'"); +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' +ORDER BY [b].[Id], [b0].[Id], [n].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } public override void Nested_include_with_inheritance_reference_reference_reverse() @@ -433,35 +541,42 @@ public override void Nested_include_with_inheritance_reference_reference_reverse base.Nested_include_with_inheritance_reference_reference_reverse(); AssertSql( - @"SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId] + @"SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId], [b0].[OwnedReferenceOnBase_Id], [b0].[OwnedReferenceOnBase_Name], [b0].[OwnedReferenceOnDerived_Id], [b0].[OwnedReferenceOnDerived_Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [NestedReferences] AS [n] LEFT JOIN [BaseReferencesOnBase] AS [b] ON [n].[ParentReferenceId] = [b].[Id] -LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id]"); +LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b0].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b0].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [n].[Id], [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } - public override void Nested_include_with_inheritance_reference_collection1() + public override void Nested_include_with_inheritance_reference_collection() { - base.Nested_include_with_inheritance_reference_collection1(); + base.Nested_include_with_inheritance_reference_collection(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId] FROM [BaseEntities] AS [b] LEFT JOIN [BaseReferencesOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] LEFT JOIN [NestedCollections] AS [n] ON [b0].[Id] = [n].[ParentReferenceId] -ORDER BY [b].[Id], [b0].[Id], [n].[Id]"); +ORDER BY [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [n].[Id]"); } - public override void Nested_include_with_inheritance_reference_collection3() + public override void Nested_include_with_inheritance_reference_collection_on_base() { - base.Nested_include_with_inheritance_reference_collection3(); + base.Nested_include_with_inheritance_reference_collection_on_base(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId] FROM [BaseEntities] AS [b] LEFT JOIN [BaseReferencesOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] LEFT JOIN [NestedCollections] AS [n] ON [b0].[Id] = [n].[ParentReferenceId] WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' -ORDER BY [b].[Id], [b0].[Id], [n].[Id]"); +ORDER BY [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [n].[Id]"); } public override void Nested_include_with_inheritance_reference_collection_reverse() @@ -469,25 +584,30 @@ public override void Nested_include_with_inheritance_reference_collection_revers base.Nested_include_with_inheritance_reference_collection_reverse(); AssertSql( - @"SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId] + @"SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId], [b0].[OwnedReferenceOnBase_Id], [b0].[OwnedReferenceOnBase_Name], [b0].[OwnedReferenceOnDerived_Id], [b0].[OwnedReferenceOnDerived_Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [NestedCollections] AS [n] LEFT JOIN [BaseReferencesOnBase] AS [b] ON [n].[ParentReferenceId] = [b].[Id] -LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id]"); +LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b0].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b0].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [n].[Id], [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } - public override void Nested_include_with_inheritance_collection_reference1() + public override void Nested_include_with_inheritance_collection_reference() { - base.Nested_include_with_inheritance_collection_reference1(); + base.Nested_include_with_inheritance_collection_reference(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t].[DerivedProperty], [t].[Id0], [t].[Discriminator0], [t].[Name0], [t].[ParentCollectionId], [t].[ParentReferenceId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t].[DerivedProperty], [t].[Id0], [t].[Discriminator0], [t].[Name0], [t].[ParentCollectionId], [t].[ParentReferenceId] FROM [BaseEntities] AS [b] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] LEFT JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedProperty], [n].[Id] AS [Id0], [n].[Discriminator] AS [Discriminator0], [n].[Name] AS [Name0], [n].[ParentCollectionId], [n].[ParentReferenceId] - FROM [BaseCollectionsOnBase] AS [b0] - LEFT JOIN [NestedReferences] AS [n] ON [b0].[Id] = [n].[ParentCollectionId] + SELECT [b2].[Id], [b2].[BaseParentId], [b2].[Discriminator], [b2].[Name], [b2].[DerivedProperty], [n].[Id] AS [Id0], [n].[Discriminator] AS [Discriminator0], [n].[Name] AS [Name0], [n].[ParentCollectionId], [n].[ParentReferenceId] + FROM [BaseCollectionsOnBase] AS [b2] + LEFT JOIN [NestedReferences] AS [n] ON [b2].[Id] = [n].[ParentCollectionId] ) AS [t] ON [b].[Id] = [t].[BaseParentId] -ORDER BY [b].[Id], [t].[Id], [t].[Id0]"); +ORDER BY [b].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [t].[Id], [t].[Id0]"); } public override void Nested_include_with_inheritance_collection_reference_reverse() @@ -495,25 +615,30 @@ public override void Nested_include_with_inheritance_collection_reference_revers base.Nested_include_with_inheritance_collection_reference_reverse(); AssertSql( - @"SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b].[DerivedProperty], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId] + @"SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b].[DerivedProperty], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId], [b0].[OwnedReferenceOnBase_Id], [b0].[OwnedReferenceOnBase_Name], [b0].[OwnedReferenceOnDerived_Id], [b0].[OwnedReferenceOnDerived_Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [NestedReferences] AS [n] LEFT JOIN [BaseCollectionsOnBase] AS [b] ON [n].[ParentCollectionId] = [b].[Id] -LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id]"); +LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b0].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b0].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [n].[Id], [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } - public override void Nested_include_with_inheritance_collection_collection1() + public override void Nested_include_with_inheritance_collection_collection() { - base.Nested_include_with_inheritance_collection_collection1(); + base.Nested_include_with_inheritance_collection_collection(); AssertSql( - @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t].[DerivedProperty], [t].[Id0], [t].[Discriminator0], [t].[Name0], [t].[ParentCollectionId], [t].[ParentReferenceId] + @"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [b].[OwnedReferenceOnBase_Id], [b].[OwnedReferenceOnBase_Name], [b].[OwnedReferenceOnDerived_Id], [b].[OwnedReferenceOnDerived_Name], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t].[DerivedProperty], [t].[Id0], [t].[Discriminator0], [t].[Name0], [t].[ParentCollectionId], [t].[ParentReferenceId] FROM [BaseEntities] AS [b] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] LEFT JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedProperty], [n].[Id] AS [Id0], [n].[Discriminator] AS [Discriminator0], [n].[Name] AS [Name0], [n].[ParentCollectionId], [n].[ParentReferenceId] - FROM [BaseCollectionsOnBase] AS [b0] - LEFT JOIN [NestedCollections] AS [n] ON [b0].[Id] = [n].[ParentCollectionId] + SELECT [b2].[Id], [b2].[BaseParentId], [b2].[Discriminator], [b2].[Name], [b2].[DerivedProperty], [n].[Id] AS [Id0], [n].[Discriminator] AS [Discriminator0], [n].[Name] AS [Name0], [n].[ParentCollectionId], [n].[ParentReferenceId] + FROM [BaseCollectionsOnBase] AS [b2] + LEFT JOIN [NestedCollections] AS [n] ON [b2].[Id] = [n].[ParentCollectionId] ) AS [t] ON [b].[Id] = [t].[BaseParentId] -ORDER BY [b].[Id], [t].[Id], [t].[Id0]"); +ORDER BY [b].[Id], [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [t].[Id], [t].[Id0]"); } public override void Nested_include_with_inheritance_collection_collection_reverse() @@ -521,10 +646,13 @@ public override void Nested_include_with_inheritance_collection_collection_rever base.Nested_include_with_inheritance_collection_collection_reverse(); AssertSql( - @"SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b].[DerivedProperty], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId] + @"SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b].[DerivedProperty], [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId], [b0].[OwnedReferenceOnBase_Id], [b0].[OwnedReferenceOnBase_Name], [b0].[OwnedReferenceOnDerived_Id], [b0].[OwnedReferenceOnDerived_Name], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name] FROM [NestedCollections] AS [n] LEFT JOIN [BaseCollectionsOnBase] AS [b] ON [n].[ParentCollectionId] = [b].[Id] -LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id]"); +LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] +LEFT JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b0].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b2] ON [b0].[Id] = [b2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [n].[Id], [b].[Id], [b0].[Id], [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b2].[DerivedInheritanceRelationshipEntityId], [b2].[Id]"); } public override void Nested_include_collection_reference_on_non_entity_base()