You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
EntityFrameworkCore.Jet/test/EFCore.Jet.FunctionalTests/Query/InheritanceRelationshipsQue...

716 lines
36 KiB
C#

// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.EntityFrameworkCore.Query;
using Xunit.Abstractions;
namespace EntityFrameworkCore.Jet.FunctionalTests.Query
{
public class InheritanceRelationshipsQueryJetTest
: InheritanceRelationshipsQueryTestBase<InheritanceRelationshipsQueryJetFixture>
{
public InheritanceRelationshipsQueryJetTest(
InheritanceRelationshipsQueryJetFixture fixture, ITestOutputHelper testOutputHelper)
: base(fixture)
{
fixture.TestSqlLoggerFactory.Clear();
}
public override void Include_reference_with_inheritance1()
{
base.Include_reference_with_inheritance1();
AssertSql(
@"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name]
FROM [BaseReferencesOnBase] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseReferenceOnBase', 'DerivedReferenceOnBase')
) AS [t] ON [b].[Id] = [t].[BaseParentId]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')");
}
public override void Include_reference_with_inheritance_reverse()
{
base.Include_reference_with_inheritance_reverse();
AssertSql(
@"SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId]
FROM [BaseReferencesOnBase] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId]
FROM [BaseEntities] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
) AS [t] ON [b].[BaseParentId] = [t].[Id]
WHERE [b].[Discriminator] IN ('BaseReferenceOnBase', 'DerivedReferenceOnBase')");
}
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]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId]
FROM [BaseEntities] AS [b0]
WHERE [b0].[Discriminator] = 'DerivedInheritanceRelationshipEntity'
) AS [t] ON [b].[Id] = [t].[BaseId]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')");
}
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], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId]
FROM [BaseEntities] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
) AS [t] ON [b].[BaseId] = [t].[Id]
WHERE [b].[Discriminator] = 'DerivedInheritanceRelationshipEntity'");
}
public override void Include_reference_with_inheritance_with_filter1()
{
base.Include_reference_with_inheritance_with_filter1();
AssertSql(
@"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name]
FROM [BaseReferencesOnBase] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseReferenceOnBase', 'DerivedReferenceOnBase')
) AS [t] ON [b].[Id] = [t].[BaseParentId]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity') AND (([b].[Name] <> 'Bar') OR [b].[Name] IS NULL)");
}
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], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId]
FROM [BaseReferencesOnBase] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId]
FROM [BaseEntities] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
) AS [t] ON [b].[BaseParentId] = [t].[Id]
WHERE [b].[Discriminator] IN ('BaseReferenceOnBase', 'DerivedReferenceOnBase') AND (([b].[Name] <> 'Bar') OR [b].[Name] IS NULL)");
}
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]
FROM [BaseEntities] AS [b]
LEFT JOIN [ReferencesOnBase] AS [r] ON [b].[Id] = [r].[ParentId]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')");
}
public override void Include_reference_without_inheritance_reverse()
{
base.Include_reference_without_inheritance_reverse();
AssertSql(
@"SELECT [r].[Id], [r].[Name], [r].[ParentId], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId]
FROM [ReferencesOnBase] AS [r]
LEFT JOIN (
SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId]
FROM [BaseEntities] AS [b]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
) AS [t] ON [r].[ParentId] = [t].[Id]");
}
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]
FROM [BaseEntities] AS [b]
LEFT JOIN [ReferencesOnBase] AS [r] ON [b].[Id] = [r].[ParentId]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity') AND (([b].[Name] <> 'Bar') OR [b].[Name] IS NULL)");
}
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], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId]
FROM [ReferencesOnBase] AS [r]
LEFT JOIN (
SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId]
FROM [BaseEntities] AS [b]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
) AS [t] ON [r].[ParentId] = [t].[Id]
WHERE ([r].[Name] <> 'Bar') OR [r].[Name] IS NULL");
}
public override void Include_collection_with_inheritance1()
{
base.Include_collection_with_inheritance1();
AssertSql(
@"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t].[DerivedProperty]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedProperty]
FROM [BaseCollectionsOnBase] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseCollectionOnBase', 'DerivedCollectionOnBase')
) AS [t] ON [b].[Id] = [t].[BaseParentId]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
ORDER BY [b].[Id], [t].[Id]");
}
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], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId]
FROM [BaseCollectionsOnBase] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId]
FROM [BaseEntities] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
) AS [t] ON [b].[BaseParentId] = [t].[Id]
WHERE [b].[Discriminator] IN ('BaseCollectionOnBase', 'DerivedCollectionOnBase')");
}
public override void Include_collection_with_inheritance_with_filter1()
{
base.Include_collection_with_inheritance_with_filter1();
AssertSql(
@"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t].[DerivedProperty]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedProperty]
FROM [BaseCollectionsOnBase] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseCollectionOnBase', 'DerivedCollectionOnBase')
) AS [t] ON [b].[Id] = [t].[BaseParentId]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity') AND (([b].[Name] <> 'Bar') OR [b].[Name] IS NULL)
ORDER BY [b].[Id], [t].[Id]");
}
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], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId]
FROM [BaseCollectionsOnBase] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId]
FROM [BaseEntities] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
) AS [t] ON [b].[BaseParentId] = [t].[Id]
WHERE [b].[Discriminator] IN ('BaseCollectionOnBase', 'DerivedCollectionOnBase') AND (([b].[Name] <> 'Bar') OR [b].[Name] IS NULL)");
}
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]
FROM [BaseEntities] AS [b]
LEFT JOIN [CollectionsOnBase] AS [c] ON [b].[Id] = [c].[ParentId]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
ORDER BY [b].[Id], [c].[Id]");
}
public override void Include_collection_without_inheritance_reverse()
{
base.Include_collection_without_inheritance_reverse();
AssertSql(
@"SELECT [c].[Id], [c].[Name], [c].[ParentId], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId]
FROM [CollectionsOnBase] AS [c]
LEFT JOIN (
SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId]
FROM [BaseEntities] AS [b]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
) AS [t] ON [c].[ParentId] = [t].[Id]");
}
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]
FROM [BaseEntities] AS [b]
LEFT JOIN [CollectionsOnBase] AS [c] ON [b].[Id] = [c].[ParentId]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity') AND (([b].[Name] <> 'Bar') OR [b].[Name] IS NULL)
ORDER BY [b].[Id], [c].[Id]");
}
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], [t].[Id], [t].[Discriminator], [t].[Name], [t].[BaseId]
FROM [CollectionsOnBase] AS [c]
LEFT JOIN (
SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId]
FROM [BaseEntities] AS [b]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
) AS [t] ON [c].[ParentId] = [t].[Id]
WHERE ([c].[Name] <> 'Bar') OR [c].[Name] IS NULL");
}
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], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name]
FROM [BaseReferencesOnBase] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseReferenceOnBase', 'DerivedReferenceOnBase')
) AS [t] ON [b].[Id] = [t].[BaseParentId]
WHERE [b].[Discriminator] = 'DerivedInheritanceRelationshipEntity'");
}
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], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t].[DerivedInheritanceRelationshipEntityId]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedInheritanceRelationshipEntityId]
FROM [BaseReferencesOnDerived] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseReferenceOnDerived', 'DerivedReferenceOnDerived')
) AS [t] ON [b].[Id] = [t].[BaseParentId]
WHERE [b].[Discriminator] = 'DerivedInheritanceRelationshipEntity'");
}
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]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedInheritanceRelationshipEntityId]
FROM [BaseReferencesOnDerived] AS [b0]
WHERE [b0].[Discriminator] = 'DerivedReferenceOnDerived'
) AS [t] ON [b].[Id] = [t].[DerivedInheritanceRelationshipEntityId]
WHERE [b].[Discriminator] = 'DerivedInheritanceRelationshipEntity'");
}
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]
FROM [BaseReferencesOnDerived] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId]
FROM [BaseEntities] AS [b0]
WHERE [b0].[Discriminator] = 'DerivedInheritanceRelationshipEntity'
) AS [t] ON [b].[BaseParentId] = [t].[Id]
WHERE [b].[Discriminator] IN ('BaseReferenceOnDerived', 'DerivedReferenceOnDerived')");
}
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], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name]
FROM [BaseReferencesOnBase] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseReferenceOnBase', 'DerivedReferenceOnBase')
) AS [t] ON [b].[Id] = [t].[BaseParentId]
WHERE ([b].[Discriminator] = 'DerivedInheritanceRelationshipEntity') AND (([b].[Name] <> 'Bar') OR [b].[Name] IS NULL)");
}
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], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t].[DerivedInheritanceRelationshipEntityId]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedInheritanceRelationshipEntityId]
FROM [BaseReferencesOnDerived] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseReferenceOnDerived', 'DerivedReferenceOnDerived')
) AS [t] ON [b].[Id] = [t].[BaseParentId]
WHERE ([b].[Discriminator] = 'DerivedInheritanceRelationshipEntity') AND (([b].[Name] <> 'Bar') OR [b].[Name] IS NULL)");
}
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]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedInheritanceRelationshipEntityId]
FROM [BaseReferencesOnDerived] AS [b0]
WHERE [b0].[Discriminator] = 'DerivedReferenceOnDerived'
) AS [t] ON [b].[Id] = [t].[DerivedInheritanceRelationshipEntityId]
WHERE ([b].[Discriminator] = 'DerivedInheritanceRelationshipEntity') AND (([b].[Name] <> 'Bar') OR [b].[Name] IS NULL)");
}
public override void Include_reference_with_inheritance_on_derived_with_filter_reverse()
{
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]
FROM [BaseReferencesOnDerived] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId]
FROM [BaseEntities] AS [b0]
WHERE [b0].[Discriminator] = 'DerivedInheritanceRelationshipEntity'
) AS [t] ON [b].[BaseParentId] = [t].[Id]
WHERE [b].[Discriminator] IN ('BaseReferenceOnDerived', 'DerivedReferenceOnDerived') AND (([b].[Name] <> 'Bar') OR [b].[Name] IS NULL)");
}
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]
FROM [BaseEntities] AS [b]
LEFT JOIN [ReferencesOnBase] AS [r] ON [b].[Id] = [r].[ParentId]
WHERE [b].[Discriminator] = 'DerivedInheritanceRelationshipEntity'");
}
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]
FROM [BaseEntities] AS [b]
LEFT JOIN [ReferencesOnDerived] AS [r] ON [b].[Id] = [r].[ParentId]
WHERE [b].[Discriminator] = 'DerivedInheritanceRelationshipEntity'");
}
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]
FROM [ReferencesOnDerived] AS [r]
LEFT JOIN (
SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId]
FROM [BaseEntities] AS [b]
WHERE [b].[Discriminator] = 'DerivedInheritanceRelationshipEntity'
) AS [t] ON [r].[ParentId] = [t].[Id]");
}
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], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t].[DerivedProperty]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedProperty]
FROM [BaseCollectionsOnBase] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseCollectionOnBase', 'DerivedCollectionOnBase')
) AS [t] ON [b].[Id] = [t].[BaseParentId]
WHERE [b].[Discriminator] = 'DerivedInheritanceRelationshipEntity'
ORDER BY [b].[Id], [t].[Id]");
}
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], [t].[Id], [t].[Discriminator], [t].[Name], [t].[ParentId], [t].[DerivedInheritanceRelationshipEntityId]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[ParentId], [b0].[DerivedInheritanceRelationshipEntityId]
FROM [BaseCollectionsOnDerived] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseCollectionOnDerived', 'DerivedCollectionOnDerived')
) AS [t] ON [b].[Id] = [t].[ParentId]
WHERE [b].[Discriminator] = 'DerivedInheritanceRelationshipEntity'
ORDER BY [b].[Id], [t].[Id]");
}
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]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[ParentId], [b0].[DerivedInheritanceRelationshipEntityId]
FROM [BaseCollectionsOnDerived] AS [b0]
WHERE [b0].[Discriminator] = 'DerivedCollectionOnDerived'
) AS [t] ON [b].[Id] = [t].[DerivedInheritanceRelationshipEntityId]
WHERE [b].[Discriminator] = 'DerivedInheritanceRelationshipEntity'
ORDER BY [b].[Id], [t].[Id]");
}
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]
FROM [BaseCollectionsOnDerived] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId]
FROM [BaseEntities] AS [b0]
WHERE [b0].[Discriminator] = 'DerivedInheritanceRelationshipEntity'
) AS [t] ON [b].[ParentId] = [t].[Id]
WHERE [b].[Discriminator] IN ('BaseCollectionOnDerived', 'DerivedCollectionOnDerived')");
}
public override void Nested_include_with_inheritance_reference_reference1()
{
base.Nested_include_with_inheritance_reference_reference1();
AssertSql(
@"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t0].[Id], [t0].[Discriminator], [t0].[Name], [t0].[ParentCollectionId], [t0].[ParentReferenceId]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name]
FROM [BaseReferencesOnBase] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseReferenceOnBase', 'DerivedReferenceOnBase')
) AS [t] ON [b].[Id] = [t].[BaseParentId]
LEFT JOIN (
SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId]
FROM [NestedReferences] AS [n]
WHERE [n].[Discriminator] IN ('NestedReferenceBase', 'NestedReferenceDerived')
) AS [t0] ON [t].[Id] = [t0].[ParentReferenceId]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')");
}
public override void Nested_include_with_inheritance_reference_reference3()
{
base.Nested_include_with_inheritance_reference_reference3();
AssertSql(
@"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t0].[Id], [t0].[Discriminator], [t0].[Name], [t0].[ParentCollectionId], [t0].[ParentReferenceId]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name]
FROM [BaseReferencesOnBase] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseReferenceOnBase', 'DerivedReferenceOnBase')
) AS [t] ON [b].[Id] = [t].[BaseParentId]
LEFT JOIN (
SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId]
FROM [NestedReferences] AS [n]
WHERE [n].[Discriminator] IN ('NestedReferenceBase', 'NestedReferenceDerived')
) AS [t0] ON [t].[Id] = [t0].[ParentReferenceId]
WHERE [b].[Discriminator] = 'DerivedInheritanceRelationshipEntity'");
}
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], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t0].[Id], [t0].[Discriminator], [t0].[Name], [t0].[BaseId]
FROM [NestedReferences] AS [n]
LEFT JOIN (
SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name]
FROM [BaseReferencesOnBase] AS [b]
WHERE [b].[Discriminator] IN ('BaseReferenceOnBase', 'DerivedReferenceOnBase')
) AS [t] ON [n].[ParentReferenceId] = [t].[Id]
LEFT JOIN (
SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId]
FROM [BaseEntities] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
) AS [t0] ON [t].[BaseParentId] = [t0].[Id]
WHERE [n].[Discriminator] IN ('NestedReferenceBase', 'NestedReferenceDerived')");
}
public override void Nested_include_with_inheritance_reference_collection1()
{
base.Nested_include_with_inheritance_reference_collection1();
AssertSql(
@"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t0].[Id], [t0].[Discriminator], [t0].[Name], [t0].[ParentCollectionId], [t0].[ParentReferenceId]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name]
FROM [BaseReferencesOnBase] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseReferenceOnBase', 'DerivedReferenceOnBase')
) AS [t] ON [b].[Id] = [t].[BaseParentId]
LEFT JOIN (
SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId]
FROM [NestedCollections] AS [n]
WHERE [n].[Discriminator] IN ('NestedCollectionBase', 'NestedCollectionDerived')
) AS [t0] ON [t].[Id] = [t0].[ParentReferenceId]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
ORDER BY [b].[Id], [t0].[Id]");
}
public override void Nested_include_with_inheritance_reference_collection3()
{
base.Nested_include_with_inheritance_reference_collection3();
AssertSql(
@"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t0].[Id], [t0].[Discriminator], [t0].[Name], [t0].[ParentCollectionId], [t0].[ParentReferenceId]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name]
FROM [BaseReferencesOnBase] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseReferenceOnBase', 'DerivedReferenceOnBase')
) AS [t] ON [b].[Id] = [t].[BaseParentId]
LEFT JOIN (
SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId]
FROM [NestedCollections] AS [n]
WHERE [n].[Discriminator] IN ('NestedCollectionBase', 'NestedCollectionDerived')
) AS [t0] ON [t].[Id] = [t0].[ParentReferenceId]
WHERE [b].[Discriminator] = 'DerivedInheritanceRelationshipEntity'
ORDER BY [b].[Id], [t0].[Id]");
}
public override void Nested_include_with_inheritance_reference_collection_reverse()
{
base.Nested_include_with_inheritance_reference_collection_reverse();
AssertSql(
@"SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t0].[Id], [t0].[Discriminator], [t0].[Name], [t0].[BaseId]
FROM [NestedCollections] AS [n]
LEFT JOIN (
SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name]
FROM [BaseReferencesOnBase] AS [b]
WHERE [b].[Discriminator] IN ('BaseReferenceOnBase', 'DerivedReferenceOnBase')
) AS [t] ON [n].[ParentReferenceId] = [t].[Id]
LEFT JOIN (
SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId]
FROM [BaseEntities] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
) AS [t0] ON [t].[BaseParentId] = [t0].[Id]
WHERE [n].[Discriminator] IN ('NestedCollectionBase', 'NestedCollectionDerived')");
}
public override void Nested_include_with_inheritance_collection_reference1()
{
base.Nested_include_with_inheritance_collection_reference1();
AssertSql(
@"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [t0].[Id], [t0].[BaseParentId], [t0].[Discriminator], [t0].[Name], [t0].[DerivedProperty], [t0].[Id0], [t0].[Discriminator0], [t0].[Name0], [t0].[ParentCollectionId], [t0].[ParentReferenceId]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedProperty], [t].[Id] AS [Id0], [t].[Discriminator] AS [Discriminator0], [t].[Name] AS [Name0], [t].[ParentCollectionId], [t].[ParentReferenceId]
FROM [BaseCollectionsOnBase] AS [b0]
LEFT JOIN (
SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId]
FROM [NestedReferences] AS [n]
WHERE [n].[Discriminator] IN ('NestedReferenceBase', 'NestedReferenceDerived')
) AS [t] ON [b0].[Id] = [t].[ParentCollectionId]
WHERE [b0].[Discriminator] IN ('BaseCollectionOnBase', 'DerivedCollectionOnBase')
) AS [t0] ON [b].[Id] = [t0].[BaseParentId]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
ORDER BY [b].[Id], [t0].[Id]");
}
public override void Nested_include_with_inheritance_collection_reference_reverse()
{
base.Nested_include_with_inheritance_collection_reference_reverse();
AssertSql(
@"SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t].[DerivedProperty], [t0].[Id], [t0].[Discriminator], [t0].[Name], [t0].[BaseId]
FROM [NestedReferences] AS [n]
LEFT JOIN (
SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b].[DerivedProperty]
FROM [BaseCollectionsOnBase] AS [b]
WHERE [b].[Discriminator] IN ('BaseCollectionOnBase', 'DerivedCollectionOnBase')
) AS [t] ON [n].[ParentCollectionId] = [t].[Id]
LEFT JOIN (
SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId]
FROM [BaseEntities] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
) AS [t0] ON [t].[BaseParentId] = [t0].[Id]
WHERE [n].[Discriminator] IN ('NestedReferenceBase', 'NestedReferenceDerived')");
}
public override void Nested_include_with_inheritance_collection_collection1()
{
base.Nested_include_with_inheritance_collection_collection1();
AssertSql(
@"SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[BaseId], [t0].[Id], [t0].[BaseParentId], [t0].[Discriminator], [t0].[Name], [t0].[DerivedProperty], [t0].[Id0], [t0].[Discriminator0], [t0].[Name0], [t0].[ParentCollectionId], [t0].[ParentReferenceId]
FROM [BaseEntities] AS [b]
LEFT JOIN (
SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedProperty], [t].[Id] AS [Id0], [t].[Discriminator] AS [Discriminator0], [t].[Name] AS [Name0], [t].[ParentCollectionId], [t].[ParentReferenceId]
FROM [BaseCollectionsOnBase] AS [b0]
LEFT JOIN (
SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId]
FROM [NestedCollections] AS [n]
WHERE [n].[Discriminator] IN ('NestedCollectionBase', 'NestedCollectionDerived')
) AS [t] ON [b0].[Id] = [t].[ParentCollectionId]
WHERE [b0].[Discriminator] IN ('BaseCollectionOnBase', 'DerivedCollectionOnBase')
) AS [t0] ON [b].[Id] = [t0].[BaseParentId]
WHERE [b].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
ORDER BY [b].[Id], [t0].[Id], [t0].[Id0]");
}
public override void Nested_include_with_inheritance_collection_collection_reverse()
{
base.Nested_include_with_inheritance_collection_collection_reverse();
AssertSql(
@"SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t].[DerivedProperty], [t0].[Id], [t0].[Discriminator], [t0].[Name], [t0].[BaseId]
FROM [NestedCollections] AS [n]
LEFT JOIN (
SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [b].[DerivedProperty]
FROM [BaseCollectionsOnBase] AS [b]
WHERE [b].[Discriminator] IN ('BaseCollectionOnBase', 'DerivedCollectionOnBase')
) AS [t] ON [n].[ParentCollectionId] = [t].[Id]
LEFT JOIN (
SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[BaseId]
FROM [BaseEntities] AS [b0]
WHERE [b0].[Discriminator] IN ('BaseInheritanceRelationshipEntity', 'DerivedInheritanceRelationshipEntity')
) AS [t0] ON [t].[BaseParentId] = [t0].[Id]
WHERE [n].[Discriminator] IN ('NestedCollectionBase', 'NestedCollectionDerived')");
}
public override void Nested_include_collection_reference_on_non_entity_base()
{
base.Nested_include_collection_reference_on_non_entity_base();
AssertSql(
@"SELECT [r].[Id], [r].[Name], [t].[Id], [t].[Name], [t].[ReferenceId], [t].[ReferencedEntityId], [t].[Id0], [t].[Name0]
FROM [ReferencedEntities] AS [r]
LEFT JOIN (
SELECT [p].[Id], [p].[Name], [p].[ReferenceId], [p].[ReferencedEntityId], [r0].[Id] AS [Id0], [r0].[Name] AS [Name0]
FROM [PrincipalEntities] AS [p]
LEFT JOIN [ReferencedEntities] AS [r0] ON [p].[ReferenceId] = [r0].[Id]
) AS [t] ON [r].[Id] = [t].[ReferencedEntityId]
ORDER BY [r].[Id], [t].[Id]");
}
private void AssertSql(params string[] expected)
=> Fixture.TestSqlLoggerFactory.AssertBaseline(expected);
}
}