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/OwnedQueryJetTest.cs

1757 lines
76 KiB
C#

// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using EntityFrameworkCore.Jet.FunctionalTests.TestUtilities;
using Microsoft.EntityFrameworkCore.Query;
using Microsoft.EntityFrameworkCore.TestUtilities;
using Xunit.Abstractions;
namespace EntityFrameworkCore.Jet.FunctionalTests.Query
{
public class OwnedQueryJetTest : RelationalOwnedQueryTestBase<OwnedQueryJetTest.OwnedQueryJetFixture>
{
public OwnedQueryJetTest(OwnedQueryJetFixture fixture, ITestOutputHelper testOutputHelper)
: base(fixture)
{
Fixture.TestSqlLoggerFactory.SetTestOutputHelper(testOutputHelper);
}
public override async Task Query_with_owned_entity_equality_operator(bool isAsync)
{
await base.Query_with_owned_entity_equality_operator(isAsync);
AssertSql(
@"SELECT [o].[Id], [o].[Discriminator], [t1].[Id], [t4].[Id], [t4].[PersonAddress_Country_Name], [t4].[PersonAddress_Country_PlanetId], [t6].[Id], [t9].[Id], [t9].[BranchAddress_Country_Name], [t9].[BranchAddress_Country_PlanetId], [t11].[Id], [t14].[Id], [t14].[LeafAAddress_Country_Name], [t14].[LeafAAddress_Country_PlanetId], [t].[Id], [o16].[ClientId], [o16].[Id]
FROM [OwnedPerson] AS [o],
(
SELECT [o0].[Id], [o0].[Discriminator]
FROM [OwnedPerson] AS [o0]
WHERE [o0].[Discriminator] = 'LeafB'
) AS [t]
LEFT JOIN (
SELECT [o1].[Id], [t0].[Id] AS [Id0]
FROM [OwnedPerson] AS [o1]
INNER JOIN (
SELECT [o2].[Id], [o2].[Discriminator]
FROM [OwnedPerson] AS [o2]
WHERE [o2].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t0] ON [o1].[Id] = [t0].[Id]
) AS [t1] ON [o].[Id] = [t1].[Id]
LEFT JOIN (
SELECT [o3].[Id], [o3].[PersonAddress_Country_Name], [o3].[PersonAddress_Country_PlanetId], [t3].[Id] AS [Id0], [t3].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [t2].[Id] AS [Id0]
FROM [OwnedPerson] AS [o4]
INNER JOIN (
SELECT [o5].[Id], [o5].[Discriminator]
FROM [OwnedPerson] AS [o5]
WHERE [o5].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t2] ON [o4].[Id] = [t2].[Id]
) AS [t3] ON [o3].[Id] = [t3].[Id]
WHERE [o3].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t4] ON [t1].[Id] = [t4].[Id]
LEFT JOIN (
SELECT [o6].[Id], [t5].[Id] AS [Id0]
FROM [OwnedPerson] AS [o6]
INNER JOIN (
SELECT [o7].[Id], [o7].[Discriminator]
FROM [OwnedPerson] AS [o7]
WHERE [o7].[Discriminator] IN ('Branch', 'LeafA')
) AS [t5] ON [o6].[Id] = [t5].[Id]
) AS [t6] ON [o].[Id] = [t6].[Id]
LEFT JOIN (
SELECT [o8].[Id], [o8].[BranchAddress_Country_Name], [o8].[BranchAddress_Country_PlanetId], [t8].[Id] AS [Id0], [t8].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o8]
INNER JOIN (
SELECT [o9].[Id], [t7].[Id] AS [Id0]
FROM [OwnedPerson] AS [o9]
INNER JOIN (
SELECT [o10].[Id], [o10].[Discriminator]
FROM [OwnedPerson] AS [o10]
WHERE [o10].[Discriminator] IN ('Branch', 'LeafA')
) AS [t7] ON [o9].[Id] = [t7].[Id]
) AS [t8] ON [o8].[Id] = [t8].[Id]
WHERE [o8].[BranchAddress_Country_PlanetId] IS NOT NULL
) AS [t9] ON [t6].[Id] = [t9].[Id]
LEFT JOIN (
SELECT [o11].[Id], [t10].[Id] AS [Id0]
FROM [OwnedPerson] AS [o11]
INNER JOIN (
SELECT [o12].[Id], [o12].[Discriminator]
FROM [OwnedPerson] AS [o12]
WHERE [o12].[Discriminator] = 'LeafA'
) AS [t10] ON [o11].[Id] = [t10].[Id]
) AS [t11] ON [o].[Id] = [t11].[Id]
LEFT JOIN (
SELECT [o13].[Id], [o13].[LeafAAddress_Country_Name], [o13].[LeafAAddress_Country_PlanetId], [t13].[Id] AS [Id0], [t13].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o13]
INNER JOIN (
SELECT [o14].[Id], [t12].[Id] AS [Id0]
FROM [OwnedPerson] AS [o14]
INNER JOIN (
SELECT [o15].[Id], [o15].[Discriminator]
FROM [OwnedPerson] AS [o15]
WHERE [o15].[Discriminator] = 'LeafA'
) AS [t12] ON [o14].[Id] = [t12].[Id]
) AS [t13] ON [o13].[Id] = [t13].[Id]
WHERE [o13].[LeafAAddress_Country_PlanetId] IS NOT NULL
) AS [t14] ON [t11].[Id] = [t14].[Id]
LEFT JOIN [Order] AS [o16] ON [o].[Id] = [o16].[ClientId]
WHERE False = True
ORDER BY [o].[Id], [t].[Id], [o16].[ClientId], [o16].[Id]");
}
public override async Task Query_for_base_type_loads_all_owned_navs(bool isAsync)
{
await base.Query_for_base_type_loads_all_owned_navs(isAsync);
// See issue #10067
AssertSql(
@"SELECT [o].[Id], [o].[Discriminator], [t0].[Id], [t3].[Id], [t3].[PersonAddress_Country_Name], [t3].[PersonAddress_Country_PlanetId], [t5].[Id], [t8].[Id], [t8].[BranchAddress_Country_Name], [t8].[BranchAddress_Country_PlanetId], [t10].[Id], [t13].[Id], [t13].[LeafBAddress_Country_Name], [t13].[LeafBAddress_Country_PlanetId], [t15].[Id], [t18].[Id], [t18].[LeafAAddress_Country_Name], [t18].[LeafAAddress_Country_PlanetId], [o20].[ClientId], [o20].[Id]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN (
SELECT [o5].[Id], [t4].[Id] AS [Id0]
FROM [OwnedPerson] AS [o5]
INNER JOIN (
SELECT [o6].[Id], [o6].[Discriminator]
FROM [OwnedPerson] AS [o6]
WHERE [o6].[Discriminator] IN ('Branch', 'LeafA')
) AS [t4] ON [o5].[Id] = [t4].[Id]
) AS [t5] ON [o].[Id] = [t5].[Id]
LEFT JOIN (
SELECT [o7].[Id], [o7].[BranchAddress_Country_Name], [o7].[BranchAddress_Country_PlanetId], [t7].[Id] AS [Id0], [t7].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o7]
INNER JOIN (
SELECT [o8].[Id], [t6].[Id] AS [Id0]
FROM [OwnedPerson] AS [o8]
INNER JOIN (
SELECT [o9].[Id], [o9].[Discriminator]
FROM [OwnedPerson] AS [o9]
WHERE [o9].[Discriminator] IN ('Branch', 'LeafA')
) AS [t6] ON [o8].[Id] = [t6].[Id]
) AS [t7] ON [o7].[Id] = [t7].[Id]
WHERE [o7].[BranchAddress_Country_PlanetId] IS NOT NULL
) AS [t8] ON [t5].[Id] = [t8].[Id]
LEFT JOIN (
SELECT [o10].[Id], [t9].[Id] AS [Id0]
FROM [OwnedPerson] AS [o10]
INNER JOIN (
SELECT [o11].[Id], [o11].[Discriminator]
FROM [OwnedPerson] AS [o11]
WHERE [o11].[Discriminator] = 'LeafB'
) AS [t9] ON [o10].[Id] = [t9].[Id]
) AS [t10] ON [o].[Id] = [t10].[Id]
LEFT JOIN (
SELECT [o12].[Id], [o12].[LeafBAddress_Country_Name], [o12].[LeafBAddress_Country_PlanetId], [t12].[Id] AS [Id0], [t12].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o12]
INNER JOIN (
SELECT [o13].[Id], [t11].[Id] AS [Id0]
FROM [OwnedPerson] AS [o13]
INNER JOIN (
SELECT [o14].[Id], [o14].[Discriminator]
FROM [OwnedPerson] AS [o14]
WHERE [o14].[Discriminator] = 'LeafB'
) AS [t11] ON [o13].[Id] = [t11].[Id]
) AS [t12] ON [o12].[Id] = [t12].[Id]
WHERE [o12].[LeafBAddress_Country_PlanetId] IS NOT NULL
) AS [t13] ON [t10].[Id] = [t13].[Id]
LEFT JOIN (
SELECT [o15].[Id], [t14].[Id] AS [Id0]
FROM [OwnedPerson] AS [o15]
INNER JOIN (
SELECT [o16].[Id], [o16].[Discriminator]
FROM [OwnedPerson] AS [o16]
WHERE [o16].[Discriminator] = 'LeafA'
) AS [t14] ON [o15].[Id] = [t14].[Id]
) AS [t15] ON [o].[Id] = [t15].[Id]
LEFT JOIN (
SELECT [o17].[Id], [o17].[LeafAAddress_Country_Name], [o17].[LeafAAddress_Country_PlanetId], [t17].[Id] AS [Id0], [t17].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o17]
INNER JOIN (
SELECT [o18].[Id], [t16].[Id] AS [Id0]
FROM [OwnedPerson] AS [o18]
INNER JOIN (
SELECT [o19].[Id], [o19].[Discriminator]
FROM [OwnedPerson] AS [o19]
WHERE [o19].[Discriminator] = 'LeafA'
) AS [t16] ON [o18].[Id] = [t16].[Id]
) AS [t17] ON [o17].[Id] = [t17].[Id]
WHERE [o17].[LeafAAddress_Country_PlanetId] IS NOT NULL
) AS [t18] ON [t15].[Id] = [t18].[Id]
LEFT JOIN [Order] AS [o20] ON [o].[Id] = [o20].[ClientId]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
ORDER BY [o].[Id], [o20].[ClientId], [o20].[Id]");
}
public override async Task No_ignored_include_warning_when_implicit_load(bool isAsync)
{
await base.No_ignored_include_warning_when_implicit_load(isAsync);
AssertSql(
@"SELECT COUNT(*)
FROM [OwnedPerson] AS [o]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')");
}
public override async Task Query_for_branch_type_loads_all_owned_navs(bool isAsync)
{
await base.Query_for_branch_type_loads_all_owned_navs(isAsync);
AssertSql(
@"SELECT [o].[Id], [o].[Discriminator], [t0].[Id], [t3].[Id], [t3].[PersonAddress_Country_Name], [t3].[PersonAddress_Country_PlanetId], [t5].[Id], [t8].[Id], [t8].[BranchAddress_Country_Name], [t8].[BranchAddress_Country_PlanetId], [t10].[Id], [t13].[Id], [t13].[LeafAAddress_Country_Name], [t13].[LeafAAddress_Country_PlanetId], [o15].[ClientId], [o15].[Id]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN (
SELECT [o5].[Id], [t4].[Id] AS [Id0]
FROM [OwnedPerson] AS [o5]
INNER JOIN (
SELECT [o6].[Id], [o6].[Discriminator]
FROM [OwnedPerson] AS [o6]
WHERE [o6].[Discriminator] IN ('Branch', 'LeafA')
) AS [t4] ON [o5].[Id] = [t4].[Id]
) AS [t5] ON [o].[Id] = [t5].[Id]
LEFT JOIN (
SELECT [o7].[Id], [o7].[BranchAddress_Country_Name], [o7].[BranchAddress_Country_PlanetId], [t7].[Id] AS [Id0], [t7].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o7]
INNER JOIN (
SELECT [o8].[Id], [t6].[Id] AS [Id0]
FROM [OwnedPerson] AS [o8]
INNER JOIN (
SELECT [o9].[Id], [o9].[Discriminator]
FROM [OwnedPerson] AS [o9]
WHERE [o9].[Discriminator] IN ('Branch', 'LeafA')
) AS [t6] ON [o8].[Id] = [t6].[Id]
) AS [t7] ON [o7].[Id] = [t7].[Id]
WHERE [o7].[BranchAddress_Country_PlanetId] IS NOT NULL
) AS [t8] ON [t5].[Id] = [t8].[Id]
LEFT JOIN (
SELECT [o10].[Id], [t9].[Id] AS [Id0]
FROM [OwnedPerson] AS [o10]
INNER JOIN (
SELECT [o11].[Id], [o11].[Discriminator]
FROM [OwnedPerson] AS [o11]
WHERE [o11].[Discriminator] = 'LeafA'
) AS [t9] ON [o10].[Id] = [t9].[Id]
) AS [t10] ON [o].[Id] = [t10].[Id]
LEFT JOIN (
SELECT [o12].[Id], [o12].[LeafAAddress_Country_Name], [o12].[LeafAAddress_Country_PlanetId], [t12].[Id] AS [Id0], [t12].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o12]
INNER JOIN (
SELECT [o13].[Id], [t11].[Id] AS [Id0]
FROM [OwnedPerson] AS [o13]
INNER JOIN (
SELECT [o14].[Id], [o14].[Discriminator]
FROM [OwnedPerson] AS [o14]
WHERE [o14].[Discriminator] = 'LeafA'
) AS [t11] ON [o13].[Id] = [t11].[Id]
) AS [t12] ON [o12].[Id] = [t12].[Id]
WHERE [o12].[LeafAAddress_Country_PlanetId] IS NOT NULL
) AS [t13] ON [t10].[Id] = [t13].[Id]
LEFT JOIN [Order] AS [o15] ON [o].[Id] = [o15].[ClientId]
WHERE [o].[Discriminator] IN ('Branch', 'LeafA')
ORDER BY [o].[Id], [o15].[ClientId], [o15].[Id]");
}
public override async Task Query_for_branch_type_loads_all_owned_navs_tracking(bool isAsync)
{
await base.Query_for_branch_type_loads_all_owned_navs_tracking(isAsync);
AssertSql(
@"SELECT [o].[Id], [o].[Discriminator], [t0].[Id], [t3].[Id], [t3].[PersonAddress_Country_Name], [t3].[PersonAddress_Country_PlanetId], [t5].[Id], [t8].[Id], [t8].[BranchAddress_Country_Name], [t8].[BranchAddress_Country_PlanetId], [t10].[Id], [t13].[Id], [t13].[LeafAAddress_Country_Name], [t13].[LeafAAddress_Country_PlanetId], [o15].[ClientId], [o15].[Id]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN (
SELECT [o5].[Id], [t4].[Id] AS [Id0]
FROM [OwnedPerson] AS [o5]
INNER JOIN (
SELECT [o6].[Id], [o6].[Discriminator]
FROM [OwnedPerson] AS [o6]
WHERE [o6].[Discriminator] IN ('Branch', 'LeafA')
) AS [t4] ON [o5].[Id] = [t4].[Id]
) AS [t5] ON [o].[Id] = [t5].[Id]
LEFT JOIN (
SELECT [o7].[Id], [o7].[BranchAddress_Country_Name], [o7].[BranchAddress_Country_PlanetId], [t7].[Id] AS [Id0], [t7].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o7]
INNER JOIN (
SELECT [o8].[Id], [t6].[Id] AS [Id0]
FROM [OwnedPerson] AS [o8]
INNER JOIN (
SELECT [o9].[Id], [o9].[Discriminator]
FROM [OwnedPerson] AS [o9]
WHERE [o9].[Discriminator] IN ('Branch', 'LeafA')
) AS [t6] ON [o8].[Id] = [t6].[Id]
) AS [t7] ON [o7].[Id] = [t7].[Id]
WHERE [o7].[BranchAddress_Country_PlanetId] IS NOT NULL
) AS [t8] ON [t5].[Id] = [t8].[Id]
LEFT JOIN (
SELECT [o10].[Id], [t9].[Id] AS [Id0]
FROM [OwnedPerson] AS [o10]
INNER JOIN (
SELECT [o11].[Id], [o11].[Discriminator]
FROM [OwnedPerson] AS [o11]
WHERE [o11].[Discriminator] = 'LeafA'
) AS [t9] ON [o10].[Id] = [t9].[Id]
) AS [t10] ON [o].[Id] = [t10].[Id]
LEFT JOIN (
SELECT [o12].[Id], [o12].[LeafAAddress_Country_Name], [o12].[LeafAAddress_Country_PlanetId], [t12].[Id] AS [Id0], [t12].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o12]
INNER JOIN (
SELECT [o13].[Id], [t11].[Id] AS [Id0]
FROM [OwnedPerson] AS [o13]
INNER JOIN (
SELECT [o14].[Id], [o14].[Discriminator]
FROM [OwnedPerson] AS [o14]
WHERE [o14].[Discriminator] = 'LeafA'
) AS [t11] ON [o13].[Id] = [t11].[Id]
) AS [t12] ON [o12].[Id] = [t12].[Id]
WHERE [o12].[LeafAAddress_Country_PlanetId] IS NOT NULL
) AS [t13] ON [t10].[Id] = [t13].[Id]
LEFT JOIN [Order] AS [o15] ON [o].[Id] = [o15].[ClientId]
WHERE [o].[Discriminator] IN ('Branch', 'LeafA')
ORDER BY [o].[Id], [o15].[ClientId], [o15].[Id]");
}
public override async Task Query_for_leaf_type_loads_all_owned_navs(bool isAsync)
{
await base.Query_for_leaf_type_loads_all_owned_navs(isAsync);
AssertSql(
@"SELECT [o].[Id], [o].[Discriminator], [t0].[Id], [t3].[Id], [t3].[PersonAddress_Country_Name], [t3].[PersonAddress_Country_PlanetId], [t5].[Id], [t8].[Id], [t8].[BranchAddress_Country_Name], [t8].[BranchAddress_Country_PlanetId], [t10].[Id], [t13].[Id], [t13].[LeafAAddress_Country_Name], [t13].[LeafAAddress_Country_PlanetId], [o15].[ClientId], [o15].[Id]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN (
SELECT [o5].[Id], [t4].[Id] AS [Id0]
FROM [OwnedPerson] AS [o5]
INNER JOIN (
SELECT [o6].[Id], [o6].[Discriminator]
FROM [OwnedPerson] AS [o6]
WHERE [o6].[Discriminator] IN ('Branch', 'LeafA')
) AS [t4] ON [o5].[Id] = [t4].[Id]
) AS [t5] ON [o].[Id] = [t5].[Id]
LEFT JOIN (
SELECT [o7].[Id], [o7].[BranchAddress_Country_Name], [o7].[BranchAddress_Country_PlanetId], [t7].[Id] AS [Id0], [t7].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o7]
INNER JOIN (
SELECT [o8].[Id], [t6].[Id] AS [Id0]
FROM [OwnedPerson] AS [o8]
INNER JOIN (
SELECT [o9].[Id], [o9].[Discriminator]
FROM [OwnedPerson] AS [o9]
WHERE [o9].[Discriminator] IN ('Branch', 'LeafA')
) AS [t6] ON [o8].[Id] = [t6].[Id]
) AS [t7] ON [o7].[Id] = [t7].[Id]
WHERE [o7].[BranchAddress_Country_PlanetId] IS NOT NULL
) AS [t8] ON [t5].[Id] = [t8].[Id]
LEFT JOIN (
SELECT [o10].[Id], [t9].[Id] AS [Id0]
FROM [OwnedPerson] AS [o10]
INNER JOIN (
SELECT [o11].[Id], [o11].[Discriminator]
FROM [OwnedPerson] AS [o11]
WHERE [o11].[Discriminator] = 'LeafA'
) AS [t9] ON [o10].[Id] = [t9].[Id]
) AS [t10] ON [o].[Id] = [t10].[Id]
LEFT JOIN (
SELECT [o12].[Id], [o12].[LeafAAddress_Country_Name], [o12].[LeafAAddress_Country_PlanetId], [t12].[Id] AS [Id0], [t12].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o12]
INNER JOIN (
SELECT [o13].[Id], [t11].[Id] AS [Id0]
FROM [OwnedPerson] AS [o13]
INNER JOIN (
SELECT [o14].[Id], [o14].[Discriminator]
FROM [OwnedPerson] AS [o14]
WHERE [o14].[Discriminator] = 'LeafA'
) AS [t11] ON [o13].[Id] = [t11].[Id]
) AS [t12] ON [o12].[Id] = [t12].[Id]
WHERE [o12].[LeafAAddress_Country_PlanetId] IS NOT NULL
) AS [t13] ON [t10].[Id] = [t13].[Id]
LEFT JOIN [Order] AS [o15] ON [o].[Id] = [o15].[ClientId]
WHERE [o].[Discriminator] = 'LeafA'
ORDER BY [o].[Id], [o15].[ClientId], [o15].[Id]");
}
public override async Task Query_when_group_by(bool isAsync)
{
await base.Query_when_group_by(isAsync);
AssertSql(
@"SELECT [op].[Id], [op].[Discriminator], [t].[Id], [t0].[Id], [t0].[LeafBAddress_Country_Name], [t0].[LeafBAddress_Country_PlanetId], [t1].[Id], [t2].[Id], [t2].[LeafAAddress_Country_Name], [t2].[LeafAAddress_Country_PlanetId], [t3].[Id], [t4].[Id], [t4].[BranchAddress_Country_Name], [t4].[BranchAddress_Country_PlanetId], [t5].[Id], [t6].[Id], [t6].[PersonAddress_Country_Name], [t6].[PersonAddress_Country_PlanetId]
FROM [OwnedPerson] AS [op]
LEFT JOIN (
SELECT [op.LeafBAddress].*
FROM [OwnedPerson] AS [op.LeafBAddress]
WHERE [op.LeafBAddress].[Discriminator] = 'LeafB'
) AS [t] ON [op].[Id] = [t].[Id]
LEFT JOIN (
SELECT [op.LeafBAddress.Country].*
FROM [OwnedPerson] AS [op.LeafBAddress.Country]
WHERE [op.LeafBAddress.Country].[Discriminator] = 'LeafB'
) AS [t0] ON [t].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [op.LeafAAddress].*
FROM [OwnedPerson] AS [op.LeafAAddress]
WHERE [op.LeafAAddress].[Discriminator] = 'LeafA'
) AS [t1] ON [op].[Id] = [t1].[Id]
LEFT JOIN (
SELECT [op.LeafAAddress.Country].*
FROM [OwnedPerson] AS [op.LeafAAddress.Country]
WHERE [op.LeafAAddress.Country].[Discriminator] = 'LeafA'
) AS [t2] ON [t1].[Id] = [t2].[Id]
LEFT JOIN (
SELECT [op.BranchAddress].*
FROM [OwnedPerson] AS [op.BranchAddress]
WHERE [op.BranchAddress].[Discriminator] IN ('LeafA', 'Branch')
) AS [t3] ON [op].[Id] = [t3].[Id]
LEFT JOIN (
SELECT [op.BranchAddress.Country].*
FROM [OwnedPerson] AS [op.BranchAddress.Country]
WHERE [op.BranchAddress.Country].[Discriminator] IN ('LeafA', 'Branch')
) AS [t4] ON [t3].[Id] = [t4].[Id]
LEFT JOIN (
SELECT [op.PersonAddress].*
FROM [OwnedPerson] AS [op.PersonAddress]
WHERE [op.PersonAddress].[Discriminator] IN ('LeafB', 'LeafA', 'Branch', 'OwnedPerson')
) AS [t5] ON [op].[Id] = [t5].[Id]
LEFT JOIN (
SELECT [op.PersonAddress.Country].*
FROM [OwnedPerson] AS [op.PersonAddress.Country]
WHERE [op.PersonAddress.Country].[Discriminator] IN ('LeafB', 'LeafA', 'Branch', 'OwnedPerson')
) AS [t6] ON [t5].[Id] = [t6].[Id]
WHERE [op].[Discriminator] IN ('LeafB', 'LeafA', 'Branch', 'OwnedPerson')
ORDER BY [op].[Id]",
//
@"SELECT [op.Orders].[Id], [op.Orders].[ClientId]
FROM [Order] AS [op.Orders]
INNER JOIN (
SELECT DISTINCT [op0].[Id]
FROM [OwnedPerson] AS [op0]
LEFT JOIN (
SELECT [op.LeafBAddress0].*
FROM [OwnedPerson] AS [op.LeafBAddress0]
WHERE [op.LeafBAddress0].[Discriminator] = 'LeafB'
) AS [t7] ON [op0].[Id] = [t7].[Id]
LEFT JOIN (
SELECT [op.LeafBAddress.Country0].*
FROM [OwnedPerson] AS [op.LeafBAddress.Country0]
WHERE [op.LeafBAddress.Country0].[Discriminator] = 'LeafB'
) AS [t8] ON [t7].[Id] = [t8].[Id]
LEFT JOIN (
SELECT [op.LeafAAddress0].*
FROM [OwnedPerson] AS [op.LeafAAddress0]
WHERE [op.LeafAAddress0].[Discriminator] = 'LeafA'
) AS [t9] ON [op0].[Id] = [t9].[Id]
LEFT JOIN (
SELECT [op.LeafAAddress.Country0].*
FROM [OwnedPerson] AS [op.LeafAAddress.Country0]
WHERE [op.LeafAAddress.Country0].[Discriminator] = 'LeafA'
) AS [t10] ON [t9].[Id] = [t10].[Id]
LEFT JOIN (
SELECT [op.BranchAddress0].*
FROM [OwnedPerson] AS [op.BranchAddress0]
WHERE [op.BranchAddress0].[Discriminator] IN ('LeafA', 'Branch')
) AS [t11] ON [op0].[Id] = [t11].[Id]
LEFT JOIN (
SELECT [op.BranchAddress.Country0].*
FROM [OwnedPerson] AS [op.BranchAddress.Country0]
WHERE [op.BranchAddress.Country0].[Discriminator] IN ('LeafA', 'Branch')
) AS [t12] ON [t11].[Id] = [t12].[Id]
LEFT JOIN (
SELECT [op.PersonAddress0].*
FROM [OwnedPerson] AS [op.PersonAddress0]
WHERE [op.PersonAddress0].[Discriminator] IN ('LeafB', 'LeafA', 'Branch', 'OwnedPerson')
) AS [t13] ON [op0].[Id] = [t13].[Id]
LEFT JOIN (
SELECT [op.PersonAddress.Country0].*
FROM [OwnedPerson] AS [op.PersonAddress.Country0]
WHERE [op.PersonAddress.Country0].[Discriminator] IN ('LeafB', 'LeafA', 'Branch', 'OwnedPerson')
) AS [t14] ON [t13].[Id] = [t14].[Id]
WHERE [op0].[Discriminator] IN ('LeafB', 'LeafA', 'Branch', 'OwnedPerson')
) AS [t15] ON [op.Orders].[ClientId] = [t15].[Id]
ORDER BY [t15].[Id]");
}
public override async Task Query_when_subquery(bool isAsync)
{
await base.Query_when_subquery(isAsync);
AssertSql(
@"@__p_0='5'
SELECT [t0].[Id], [t0].[Discriminator], [t4].[Id], [t7].[Id], [t7].[PersonAddress_Country_Name], [t7].[PersonAddress_Country_PlanetId], [t9].[Id], [t12].[Id], [t12].[BranchAddress_Country_Name], [t12].[BranchAddress_Country_PlanetId], [t14].[Id], [t17].[Id], [t17].[LeafBAddress_Country_Name], [t17].[LeafBAddress_Country_PlanetId], [t19].[Id], [t22].[Id], [t22].[LeafAAddress_Country_Name], [t22].[LeafAAddress_Country_PlanetId], [o22].[ClientId], [o22].[Id]
FROM (
SELECT TOP @__p_0 [t].[Id], [t].[Discriminator]
FROM (
SELECT DISTINCT [o].[Id], [o].[Discriminator]
FROM [OwnedPerson] AS [o]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t]
ORDER BY [t].[Id]
) AS [t0]
LEFT JOIN (
SELECT [o0].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o0].[Id] = [t1].[Id]
) AS [t2] ON [t0].[Id] = [t2].[Id]
LEFT JOIN (
SELECT [o2].[Id], [t3].[Id] AS [Id0]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [o3].[Discriminator]
FROM [OwnedPerson] AS [o3]
WHERE [o3].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t3] ON [o2].[Id] = [t3].[Id]
) AS [t4] ON [t0].[Id] = [t4].[Id]
LEFT JOIN (
SELECT [o4].[Id], [o4].[PersonAddress_Country_Name], [o4].[PersonAddress_Country_PlanetId], [t6].[Id] AS [Id0], [t6].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o4]
INNER JOIN (
SELECT [o5].[Id], [t5].[Id] AS [Id0]
FROM [OwnedPerson] AS [o5]
INNER JOIN (
SELECT [o6].[Id], [o6].[Discriminator]
FROM [OwnedPerson] AS [o6]
WHERE [o6].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t5] ON [o5].[Id] = [t5].[Id]
) AS [t6] ON [o4].[Id] = [t6].[Id]
WHERE [o4].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t7] ON [t4].[Id] = [t7].[Id]
LEFT JOIN (
SELECT [o7].[Id], [t8].[Id] AS [Id0]
FROM [OwnedPerson] AS [o7]
INNER JOIN (
SELECT [o8].[Id], [o8].[Discriminator]
FROM [OwnedPerson] AS [o8]
WHERE [o8].[Discriminator] IN ('Branch', 'LeafA')
) AS [t8] ON [o7].[Id] = [t8].[Id]
) AS [t9] ON [t0].[Id] = [t9].[Id]
LEFT JOIN (
SELECT [o9].[Id], [o9].[BranchAddress_Country_Name], [o9].[BranchAddress_Country_PlanetId], [t11].[Id] AS [Id0], [t11].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o9]
INNER JOIN (
SELECT [o10].[Id], [t10].[Id] AS [Id0]
FROM [OwnedPerson] AS [o10]
INNER JOIN (
SELECT [o11].[Id], [o11].[Discriminator]
FROM [OwnedPerson] AS [o11]
WHERE [o11].[Discriminator] IN ('Branch', 'LeafA')
) AS [t10] ON [o10].[Id] = [t10].[Id]
) AS [t11] ON [o9].[Id] = [t11].[Id]
WHERE [o9].[BranchAddress_Country_PlanetId] IS NOT NULL
) AS [t12] ON [t9].[Id] = [t12].[Id]
LEFT JOIN (
SELECT [o12].[Id], [t13].[Id] AS [Id0]
FROM [OwnedPerson] AS [o12]
INNER JOIN (
SELECT [o13].[Id], [o13].[Discriminator]
FROM [OwnedPerson] AS [o13]
WHERE [o13].[Discriminator] = 'LeafB'
) AS [t13] ON [o12].[Id] = [t13].[Id]
) AS [t14] ON [t0].[Id] = [t14].[Id]
LEFT JOIN (
SELECT [o14].[Id], [o14].[LeafBAddress_Country_Name], [o14].[LeafBAddress_Country_PlanetId], [t16].[Id] AS [Id0], [t16].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o14]
INNER JOIN (
SELECT [o15].[Id], [t15].[Id] AS [Id0]
FROM [OwnedPerson] AS [o15]
INNER JOIN (
SELECT [o16].[Id], [o16].[Discriminator]
FROM [OwnedPerson] AS [o16]
WHERE [o16].[Discriminator] = 'LeafB'
) AS [t15] ON [o15].[Id] = [t15].[Id]
) AS [t16] ON [o14].[Id] = [t16].[Id]
WHERE [o14].[LeafBAddress_Country_PlanetId] IS NOT NULL
) AS [t17] ON [t14].[Id] = [t17].[Id]
LEFT JOIN (
SELECT [o17].[Id], [t18].[Id] AS [Id0]
FROM [OwnedPerson] AS [o17]
INNER JOIN (
SELECT [o18].[Id], [o18].[Discriminator]
FROM [OwnedPerson] AS [o18]
WHERE [o18].[Discriminator] = 'LeafA'
) AS [t18] ON [o17].[Id] = [t18].[Id]
) AS [t19] ON [t0].[Id] = [t19].[Id]
LEFT JOIN (
SELECT [o19].[Id], [o19].[LeafAAddress_Country_Name], [o19].[LeafAAddress_Country_PlanetId], [t21].[Id] AS [Id0], [t21].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o19]
INNER JOIN (
SELECT [o20].[Id], [t20].[Id] AS [Id0]
FROM [OwnedPerson] AS [o20]
INNER JOIN (
SELECT [o21].[Id], [o21].[Discriminator]
FROM [OwnedPerson] AS [o21]
WHERE [o21].[Discriminator] = 'LeafA'
) AS [t20] ON [o20].[Id] = [t20].[Id]
) AS [t21] ON [o19].[Id] = [t21].[Id]
WHERE [o19].[LeafAAddress_Country_PlanetId] IS NOT NULL
) AS [t22] ON [t19].[Id] = [t22].[Id]
LEFT JOIN [Order] AS [o22] ON [t0].[Id] = [o22].[ClientId]
ORDER BY [t0].[Id], [o22].[ClientId], [o22].[Id]");
}
public override async Task Navigation_rewrite_on_owned_reference_projecting_scalar(bool isAsync)
{
await base.Navigation_rewrite_on_owned_reference_projecting_scalar(isAsync);
AssertSql(
@"SELECT [t3].[PersonAddress_Country_Name]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA') AND ([t3].[PersonAddress_Country_Name] = 'USA')");
}
public override async Task Navigation_rewrite_on_owned_reference_projecting_entity(bool isAsync)
{
await base.Navigation_rewrite_on_owned_reference_projecting_entity(isAsync);
AssertSql(
@"SELECT [o].[Id], [o].[Discriminator], [t0].[Id], [t3].[Id], [t3].[PersonAddress_Country_Name], [t3].[PersonAddress_Country_PlanetId], [t5].[Id], [t8].[Id], [t8].[BranchAddress_Country_Name], [t8].[BranchAddress_Country_PlanetId], [t10].[Id], [t13].[Id], [t13].[LeafBAddress_Country_Name], [t13].[LeafBAddress_Country_PlanetId], [t15].[Id], [t18].[Id], [t18].[LeafAAddress_Country_Name], [t18].[LeafAAddress_Country_PlanetId], [o20].[ClientId], [o20].[Id]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN (
SELECT [o5].[Id], [t4].[Id] AS [Id0]
FROM [OwnedPerson] AS [o5]
INNER JOIN (
SELECT [o6].[Id], [o6].[Discriminator]
FROM [OwnedPerson] AS [o6]
WHERE [o6].[Discriminator] IN ('Branch', 'LeafA')
) AS [t4] ON [o5].[Id] = [t4].[Id]
) AS [t5] ON [o].[Id] = [t5].[Id]
LEFT JOIN (
SELECT [o7].[Id], [o7].[BranchAddress_Country_Name], [o7].[BranchAddress_Country_PlanetId], [t7].[Id] AS [Id0], [t7].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o7]
INNER JOIN (
SELECT [o8].[Id], [t6].[Id] AS [Id0]
FROM [OwnedPerson] AS [o8]
INNER JOIN (
SELECT [o9].[Id], [o9].[Discriminator]
FROM [OwnedPerson] AS [o9]
WHERE [o9].[Discriminator] IN ('Branch', 'LeafA')
) AS [t6] ON [o8].[Id] = [t6].[Id]
) AS [t7] ON [o7].[Id] = [t7].[Id]
WHERE [o7].[BranchAddress_Country_PlanetId] IS NOT NULL
) AS [t8] ON [t5].[Id] = [t8].[Id]
LEFT JOIN (
SELECT [o10].[Id], [t9].[Id] AS [Id0]
FROM [OwnedPerson] AS [o10]
INNER JOIN (
SELECT [o11].[Id], [o11].[Discriminator]
FROM [OwnedPerson] AS [o11]
WHERE [o11].[Discriminator] = 'LeafB'
) AS [t9] ON [o10].[Id] = [t9].[Id]
) AS [t10] ON [o].[Id] = [t10].[Id]
LEFT JOIN (
SELECT [o12].[Id], [o12].[LeafBAddress_Country_Name], [o12].[LeafBAddress_Country_PlanetId], [t12].[Id] AS [Id0], [t12].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o12]
INNER JOIN (
SELECT [o13].[Id], [t11].[Id] AS [Id0]
FROM [OwnedPerson] AS [o13]
INNER JOIN (
SELECT [o14].[Id], [o14].[Discriminator]
FROM [OwnedPerson] AS [o14]
WHERE [o14].[Discriminator] = 'LeafB'
) AS [t11] ON [o13].[Id] = [t11].[Id]
) AS [t12] ON [o12].[Id] = [t12].[Id]
WHERE [o12].[LeafBAddress_Country_PlanetId] IS NOT NULL
) AS [t13] ON [t10].[Id] = [t13].[Id]
LEFT JOIN (
SELECT [o15].[Id], [t14].[Id] AS [Id0]
FROM [OwnedPerson] AS [o15]
INNER JOIN (
SELECT [o16].[Id], [o16].[Discriminator]
FROM [OwnedPerson] AS [o16]
WHERE [o16].[Discriminator] = 'LeafA'
) AS [t14] ON [o15].[Id] = [t14].[Id]
) AS [t15] ON [o].[Id] = [t15].[Id]
LEFT JOIN (
SELECT [o17].[Id], [o17].[LeafAAddress_Country_Name], [o17].[LeafAAddress_Country_PlanetId], [t17].[Id] AS [Id0], [t17].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o17]
INNER JOIN (
SELECT [o18].[Id], [t16].[Id] AS [Id0]
FROM [OwnedPerson] AS [o18]
INNER JOIN (
SELECT [o19].[Id], [o19].[Discriminator]
FROM [OwnedPerson] AS [o19]
WHERE [o19].[Discriminator] = 'LeafA'
) AS [t16] ON [o18].[Id] = [t16].[Id]
) AS [t17] ON [o17].[Id] = [t17].[Id]
WHERE [o17].[LeafAAddress_Country_PlanetId] IS NOT NULL
) AS [t18] ON [t15].[Id] = [t18].[Id]
LEFT JOIN [Order] AS [o20] ON [o].[Id] = [o20].[ClientId]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA') AND ([t3].[PersonAddress_Country_Name] = 'USA')
ORDER BY [o].[Id], [o20].[ClientId], [o20].[Id]");
}
public override async Task Navigation_rewrite_on_owned_collection(bool isAsync)
{
await base.Navigation_rewrite_on_owned_collection(isAsync);
AssertSql(
@"SELECT [o].[Id], [o0].[ClientId], [o0].[Id]
FROM [OwnedPerson] AS [o]
LEFT JOIN [Order] AS [o0] ON [o].[Id] = [o0].[ClientId]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA') AND ((
SELECT COUNT(*)
FROM [Order] AS [o1]
WHERE [o].[Id] = [o1].[ClientId]) > 0)
ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id]");
}
public override async Task Navigation_rewrite_on_owned_collection_with_composition(bool isAsync)
{
await base.Navigation_rewrite_on_owned_collection_with_composition(isAsync);
AssertSql(
@"SELECT (
SELECT TOP 1 IIF([o].[Id] <> 42, 1, 0)
FROM [Order] AS [o]
WHERE [o0].[Id] = [o].[ClientId]
ORDER BY [o].[Id])
FROM [OwnedPerson] AS [o0]
WHERE [o0].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
ORDER BY [o0].[Id]");
}
public override async Task Navigation_rewrite_on_owned_collection_with_composition_complex(bool isAsync)
{
await base.Navigation_rewrite_on_owned_collection_with_composition_complex(isAsync);
AssertSql(
@"SELECT (
SELECT TOP 1 [t4].[PersonAddress_Country_Name]
FROM [Order] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [o0].[Discriminator]
FROM [OwnedPerson] AS [o0]
WHERE [o0].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o].[ClientId] = [t].[Id]
LEFT JOIN (
SELECT [o1].[Id], [t0].[Id] AS [Id0]
FROM [OwnedPerson] AS [o1]
INNER JOIN (
SELECT [o2].[Id], [o2].[Discriminator]
FROM [OwnedPerson] AS [o2]
WHERE [o2].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t0] ON [o1].[Id] = [t0].[Id]
) AS [t1] ON [t].[Id] = [t1].[Id]
LEFT JOIN (
SELECT [o3].[Id], [o3].[PersonAddress_Country_Name], [o3].[PersonAddress_Country_PlanetId], [t3].[Id] AS [Id0], [t3].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [t2].[Id] AS [Id0]
FROM [OwnedPerson] AS [o4]
INNER JOIN (
SELECT [o5].[Id], [o5].[Discriminator]
FROM [OwnedPerson] AS [o5]
WHERE [o5].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t2] ON [o4].[Id] = [t2].[Id]
) AS [t3] ON [o3].[Id] = [t3].[Id]
WHERE [o3].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t4] ON [t1].[Id] = [t4].[Id]
WHERE [o6].[Id] = [o].[ClientId]
ORDER BY [o].[Id])
FROM [OwnedPerson] AS [o6]
WHERE [o6].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')");
}
public override async Task SelectMany_on_owned_collection(bool isAsync)
{
await base.SelectMany_on_owned_collection(isAsync);
AssertSql(
@"SELECT [o0].[ClientId], [o0].[Id]
FROM [OwnedPerson] AS [o]
INNER JOIN [Order] AS [o0] ON [o].[Id] = [o0].[ClientId]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')");
}
public override async Task Navigation_rewrite_on_owned_reference_followed_by_regular_entity(bool isAsync)
{
await base.Navigation_rewrite_on_owned_reference_followed_by_regular_entity(isAsync);
AssertSql(
@"SELECT [p].[Id], [p].[StarId]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN [Planet] AS [p] ON [t3].[PersonAddress_Country_PlanetId] = [p].[Id]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')");
}
public override async Task Filter_owned_entity_chained_with_regular_entity_followed_by_projecting_owned_collection(bool isAsync)
{
await base.Filter_owned_entity_chained_with_regular_entity_followed_by_projecting_owned_collection(isAsync);
AssertSql(
@"SELECT [o].[Id], [o5].[ClientId], [o5].[Id]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN [Planet] AS [p] ON [t3].[PersonAddress_Country_PlanetId] = [p].[Id]
LEFT JOIN [Order] AS [o5] ON [o].[Id] = [o5].[ClientId]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA') AND (([p].[Id] <> 42) OR [p].[Id] IS NULL)
ORDER BY [o].[Id], [o5].[ClientId], [o5].[Id]");
}
public override async Task Project_multiple_owned_navigations(bool isAsync)
{
await base.Project_multiple_owned_navigations(isAsync);
AssertSql(
@"SELECT [t0].[Id], [t3].[Id], [t3].[PersonAddress_Country_Name], [t3].[PersonAddress_Country_PlanetId], [p].[Id], [p].[StarId], [o].[Id], [o5].[ClientId], [o5].[Id]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN [Planet] AS [p] ON [t3].[PersonAddress_Country_PlanetId] = [p].[Id]
LEFT JOIN [Order] AS [o5] ON [o].[Id] = [o5].[ClientId]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
ORDER BY [o].[Id], [o5].[ClientId], [o5].[Id]");
}
public override async Task Project_multiple_owned_navigations_with_expansion_on_owned_collections(bool isAsync)
{
await base.Project_multiple_owned_navigations_with_expansion_on_owned_collections(isAsync);
AssertSql(
@"SELECT (
SELECT COUNT(*)
FROM [Order] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [o0].[Discriminator]
FROM [OwnedPerson] AS [o0]
WHERE [o0].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o].[ClientId] = [t].[Id]
LEFT JOIN (
SELECT [o1].[Id], [t0].[Id] AS [Id0]
FROM [OwnedPerson] AS [o1]
INNER JOIN (
SELECT [o2].[Id], [o2].[Discriminator]
FROM [OwnedPerson] AS [o2]
WHERE [o2].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t0] ON [o1].[Id] = [t0].[Id]
) AS [t1] ON [t].[Id] = [t1].[Id]
LEFT JOIN (
SELECT [o3].[Id], [o3].[PersonAddress_Country_Name], [o3].[PersonAddress_Country_PlanetId], [t3].[Id] AS [Id0], [t3].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [t2].[Id] AS [Id0]
FROM [OwnedPerson] AS [o4]
INNER JOIN (
SELECT [o5].[Id], [o5].[Discriminator]
FROM [OwnedPerson] AS [o5]
WHERE [o5].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t2] ON [o4].[Id] = [t2].[Id]
) AS [t3] ON [o3].[Id] = [t3].[Id]
WHERE [o3].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t4] ON [t1].[Id] = [t4].[Id]
LEFT JOIN [Planet] AS [p] ON [t4].[PersonAddress_Country_PlanetId] = [p].[Id]
LEFT JOIN [Star] AS [s] ON [p].[StarId] = [s].[Id]
WHERE ([o6].[Id] = [o].[ClientId]) AND (([s].[Id] <> 42) OR [s].[Id] IS NULL)) AS [Count], [p0].[Id], [p0].[StarId]
FROM [OwnedPerson] AS [o6]
LEFT JOIN (
SELECT [o7].[Id], [t5].[Id] AS [Id0]
FROM [OwnedPerson] AS [o7]
INNER JOIN (
SELECT [o8].[Id], [o8].[Discriminator]
FROM [OwnedPerson] AS [o8]
WHERE [o8].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t5] ON [o7].[Id] = [t5].[Id]
) AS [t6] ON [o6].[Id] = [t6].[Id]
LEFT JOIN (
SELECT [o9].[Id], [o9].[PersonAddress_Country_Name], [o9].[PersonAddress_Country_PlanetId], [t8].[Id] AS [Id0], [t8].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o9]
INNER JOIN (
SELECT [o10].[Id], [t7].[Id] AS [Id0]
FROM [OwnedPerson] AS [o10]
INNER JOIN (
SELECT [o11].[Id], [o11].[Discriminator]
FROM [OwnedPerson] AS [o11]
WHERE [o11].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t7] ON [o10].[Id] = [t7].[Id]
) AS [t8] ON [o9].[Id] = [t8].[Id]
WHERE [o9].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t9] ON [t6].[Id] = [t9].[Id]
LEFT JOIN [Planet] AS [p0] ON [t9].[PersonAddress_Country_PlanetId] = [p0].[Id]
WHERE [o6].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
ORDER BY [o6].[Id]");
}
public override async Task Navigation_rewrite_on_owned_reference_followed_by_regular_entity_filter(bool isAsync)
{
await base.Navigation_rewrite_on_owned_reference_followed_by_regular_entity_filter(isAsync);
AssertSql(
@"SELECT [o].[Id], [o].[Discriminator], [t0].[Id], [t3].[Id], [t3].[PersonAddress_Country_Name], [t3].[PersonAddress_Country_PlanetId], [t5].[Id], [t8].[Id], [t8].[BranchAddress_Country_Name], [t8].[BranchAddress_Country_PlanetId], [t10].[Id], [t13].[Id], [t13].[LeafBAddress_Country_Name], [t13].[LeafBAddress_Country_PlanetId], [t15].[Id], [t18].[Id], [t18].[LeafAAddress_Country_Name], [t18].[LeafAAddress_Country_PlanetId], [o20].[ClientId], [o20].[Id]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN [Planet] AS [p] ON [t3].[PersonAddress_Country_PlanetId] = [p].[Id]
LEFT JOIN (
SELECT [o5].[Id], [t4].[Id] AS [Id0]
FROM [OwnedPerson] AS [o5]
INNER JOIN (
SELECT [o6].[Id], [o6].[Discriminator]
FROM [OwnedPerson] AS [o6]
WHERE [o6].[Discriminator] IN ('Branch', 'LeafA')
) AS [t4] ON [o5].[Id] = [t4].[Id]
) AS [t5] ON [o].[Id] = [t5].[Id]
LEFT JOIN (
SELECT [o7].[Id], [o7].[BranchAddress_Country_Name], [o7].[BranchAddress_Country_PlanetId], [t7].[Id] AS [Id0], [t7].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o7]
INNER JOIN (
SELECT [o8].[Id], [t6].[Id] AS [Id0]
FROM [OwnedPerson] AS [o8]
INNER JOIN (
SELECT [o9].[Id], [o9].[Discriminator]
FROM [OwnedPerson] AS [o9]
WHERE [o9].[Discriminator] IN ('Branch', 'LeafA')
) AS [t6] ON [o8].[Id] = [t6].[Id]
) AS [t7] ON [o7].[Id] = [t7].[Id]
WHERE [o7].[BranchAddress_Country_PlanetId] IS NOT NULL
) AS [t8] ON [t5].[Id] = [t8].[Id]
LEFT JOIN (
SELECT [o10].[Id], [t9].[Id] AS [Id0]
FROM [OwnedPerson] AS [o10]
INNER JOIN (
SELECT [o11].[Id], [o11].[Discriminator]
FROM [OwnedPerson] AS [o11]
WHERE [o11].[Discriminator] = 'LeafB'
) AS [t9] ON [o10].[Id] = [t9].[Id]
) AS [t10] ON [o].[Id] = [t10].[Id]
LEFT JOIN (
SELECT [o12].[Id], [o12].[LeafBAddress_Country_Name], [o12].[LeafBAddress_Country_PlanetId], [t12].[Id] AS [Id0], [t12].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o12]
INNER JOIN (
SELECT [o13].[Id], [t11].[Id] AS [Id0]
FROM [OwnedPerson] AS [o13]
INNER JOIN (
SELECT [o14].[Id], [o14].[Discriminator]
FROM [OwnedPerson] AS [o14]
WHERE [o14].[Discriminator] = 'LeafB'
) AS [t11] ON [o13].[Id] = [t11].[Id]
) AS [t12] ON [o12].[Id] = [t12].[Id]
WHERE [o12].[LeafBAddress_Country_PlanetId] IS NOT NULL
) AS [t13] ON [t10].[Id] = [t13].[Id]
LEFT JOIN (
SELECT [o15].[Id], [t14].[Id] AS [Id0]
FROM [OwnedPerson] AS [o15]
INNER JOIN (
SELECT [o16].[Id], [o16].[Discriminator]
FROM [OwnedPerson] AS [o16]
WHERE [o16].[Discriminator] = 'LeafA'
) AS [t14] ON [o15].[Id] = [t14].[Id]
) AS [t15] ON [o].[Id] = [t15].[Id]
LEFT JOIN (
SELECT [o17].[Id], [o17].[LeafAAddress_Country_Name], [o17].[LeafAAddress_Country_PlanetId], [t17].[Id] AS [Id0], [t17].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o17]
INNER JOIN (
SELECT [o18].[Id], [t16].[Id] AS [Id0]
FROM [OwnedPerson] AS [o18]
INNER JOIN (
SELECT [o19].[Id], [o19].[Discriminator]
FROM [OwnedPerson] AS [o19]
WHERE [o19].[Discriminator] = 'LeafA'
) AS [t16] ON [o18].[Id] = [t16].[Id]
) AS [t17] ON [o17].[Id] = [t17].[Id]
WHERE [o17].[LeafAAddress_Country_PlanetId] IS NOT NULL
) AS [t18] ON [t15].[Id] = [t18].[Id]
LEFT JOIN [Order] AS [o20] ON [o].[Id] = [o20].[ClientId]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA') AND (([p].[Id] <> 7) OR [p].[Id] IS NULL)
ORDER BY [o].[Id], [o20].[ClientId], [o20].[Id]");
}
public override async Task Navigation_rewrite_on_owned_reference_followed_by_regular_entity_and_property(bool isAsync)
{
await base.Navigation_rewrite_on_owned_reference_followed_by_regular_entity_and_property(isAsync);
AssertSql(
@"SELECT [p].[Id]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN [Planet] AS [p] ON [t3].[PersonAddress_Country_PlanetId] = [p].[Id]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')");
}
public override async Task Navigation_rewrite_on_owned_reference_followed_by_regular_entity_and_collection(bool isAsync)
{
await base.Navigation_rewrite_on_owned_reference_followed_by_regular_entity_and_collection(isAsync);
AssertSql(
@"SELECT [o].[Id], [m].[Id], [m].[Diameter], [m].[PlanetId]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN [Planet] AS [p] ON [t3].[PersonAddress_Country_PlanetId] = [p].[Id]
LEFT JOIN [Moon] AS [m] ON [p].[Id] = [m].[PlanetId]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
ORDER BY [o].[Id], [m].[Id]");
}
public override async Task SelectMany_on_owned_reference_followed_by_regular_entity_and_collection(bool isAsync)
{
await base.SelectMany_on_owned_reference_followed_by_regular_entity_and_collection(isAsync);
AssertSql(
@"SELECT [m].[Id], [m].[Diameter], [m].[PlanetId]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN [Planet] AS [p] ON [t3].[PersonAddress_Country_PlanetId] = [p].[Id]
INNER JOIN [Moon] AS [m] ON [p].[Id] = [m].[PlanetId]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')");
}
public override async Task SelectMany_on_owned_reference_with_entity_in_between_ending_in_owned_collection(bool isAsync)
{
await base.SelectMany_on_owned_reference_with_entity_in_between_ending_in_owned_collection(isAsync);
AssertSql(
@"SELECT [e].[Id], [e].[Name], [e].[StarId]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN [Planet] AS [p] ON [t3].[PersonAddress_Country_PlanetId] = [p].[Id]
LEFT JOIN [Star] AS [s] ON [p].[StarId] = [s].[Id]
INNER JOIN [Element] AS [e] ON [s].[Id] = [e].[StarId]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')");
}
public override async Task Navigation_rewrite_on_owned_reference_followed_by_regular_entity_and_another_reference(bool isAsync)
{
await base.Navigation_rewrite_on_owned_reference_followed_by_regular_entity_and_another_reference(isAsync);
AssertSql(
@"SELECT [s].[Id], [s].[Name], [o].[Id], [e].[Id], [e].[Name], [e].[StarId]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN [Planet] AS [p] ON [t3].[PersonAddress_Country_PlanetId] = [p].[Id]
LEFT JOIN [Star] AS [s] ON [p].[StarId] = [s].[Id]
LEFT JOIN [Element] AS [e] ON [s].[Id] = [e].[StarId]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
ORDER BY [o].[Id], [e].[Id]");
}
public override async Task Navigation_rewrite_on_owned_reference_followed_by_regular_entity_and_another_reference_and_scalar(
bool isAsync)
{
await base.Navigation_rewrite_on_owned_reference_followed_by_regular_entity_and_another_reference_and_scalar(isAsync);
AssertSql(
@"SELECT [s].[Name]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN [Planet] AS [p] ON [t3].[PersonAddress_Country_PlanetId] = [p].[Id]
LEFT JOIN [Star] AS [s] ON [p].[StarId] = [s].[Id]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')");
}
public override async Task
Navigation_rewrite_on_owned_reference_followed_by_regular_entity_and_another_reference_in_predicate_and_projection(bool isAsync)
{
await base.Navigation_rewrite_on_owned_reference_followed_by_regular_entity_and_another_reference_in_predicate_and_projection(
isAsync);
AssertSql(
@"SELECT [s].[Id], [s].[Name], [o].[Id], [e].[Id], [e].[Name], [e].[StarId]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN [Planet] AS [p] ON [t3].[PersonAddress_Country_PlanetId] = [p].[Id]
LEFT JOIN [Star] AS [s] ON [p].[StarId] = [s].[Id]
LEFT JOIN [Element] AS [e] ON [s].[Id] = [e].[StarId]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA') AND ([s].[Name] = 'Sol')
ORDER BY [o].[Id], [e].[Id]");
}
public override async Task Query_with_OfType_eagerly_loads_correct_owned_navigations(bool isAsync)
{
await base.Query_with_OfType_eagerly_loads_correct_owned_navigations(isAsync);
AssertSql(
@"SELECT [o].[Id], [o].[Discriminator], [t0].[Id], [t3].[Id], [t3].[PersonAddress_Country_Name], [t3].[PersonAddress_Country_PlanetId], [t5].[Id], [t8].[Id], [t8].[BranchAddress_Country_Name], [t8].[BranchAddress_Country_PlanetId], [t10].[Id], [t13].[Id], [t13].[LeafAAddress_Country_Name], [t13].[LeafAAddress_Country_PlanetId], [o15].[ClientId], [o15].[Id]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN (
SELECT [o5].[Id], [t4].[Id] AS [Id0]
FROM [OwnedPerson] AS [o5]
INNER JOIN (
SELECT [o6].[Id], [o6].[Discriminator]
FROM [OwnedPerson] AS [o6]
WHERE [o6].[Discriminator] IN ('Branch', 'LeafA')
) AS [t4] ON [o5].[Id] = [t4].[Id]
) AS [t5] ON [o].[Id] = [t5].[Id]
LEFT JOIN (
SELECT [o7].[Id], [o7].[BranchAddress_Country_Name], [o7].[BranchAddress_Country_PlanetId], [t7].[Id] AS [Id0], [t7].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o7]
INNER JOIN (
SELECT [o8].[Id], [t6].[Id] AS [Id0]
FROM [OwnedPerson] AS [o8]
INNER JOIN (
SELECT [o9].[Id], [o9].[Discriminator]
FROM [OwnedPerson] AS [o9]
WHERE [o9].[Discriminator] IN ('Branch', 'LeafA')
) AS [t6] ON [o8].[Id] = [t6].[Id]
) AS [t7] ON [o7].[Id] = [t7].[Id]
WHERE [o7].[BranchAddress_Country_PlanetId] IS NOT NULL
) AS [t8] ON [t5].[Id] = [t8].[Id]
LEFT JOIN (
SELECT [o10].[Id], [t9].[Id] AS [Id0]
FROM [OwnedPerson] AS [o10]
INNER JOIN (
SELECT [o11].[Id], [o11].[Discriminator]
FROM [OwnedPerson] AS [o11]
WHERE [o11].[Discriminator] = 'LeafA'
) AS [t9] ON [o10].[Id] = [t9].[Id]
) AS [t10] ON [o].[Id] = [t10].[Id]
LEFT JOIN (
SELECT [o12].[Id], [o12].[LeafAAddress_Country_Name], [o12].[LeafAAddress_Country_PlanetId], [t12].[Id] AS [Id0], [t12].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o12]
INNER JOIN (
SELECT [o13].[Id], [t11].[Id] AS [Id0]
FROM [OwnedPerson] AS [o13]
INNER JOIN (
SELECT [o14].[Id], [o14].[Discriminator]
FROM [OwnedPerson] AS [o14]
WHERE [o14].[Discriminator] = 'LeafA'
) AS [t11] ON [o13].[Id] = [t11].[Id]
) AS [t12] ON [o12].[Id] = [t12].[Id]
WHERE [o12].[LeafAAddress_Country_PlanetId] IS NOT NULL
) AS [t13] ON [t10].[Id] = [t13].[Id]
LEFT JOIN [Order] AS [o15] ON [o].[Id] = [o15].[ClientId]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA') AND ([o].[Discriminator] = 'LeafA')
ORDER BY [o].[Id], [o15].[ClientId], [o15].[Id]");
}
public override async Task Preserve_includes_when_applying_skip_take_after_anonymous_type_select(bool isAsync)
{
await base.Preserve_includes_when_applying_skip_take_after_anonymous_type_select(isAsync);
AssertSql(
@"SELECT COUNT(*)
FROM [OwnedPerson] AS [o]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')",
//
@"@__Count_0='4'
@__p_1='0'
@__p_2='100'
SELECT [t].[Id], [t].[Discriminator], [t3].[Id], [t6].[Id], [t6].[PersonAddress_Country_Name], [t6].[PersonAddress_Country_PlanetId], [t8].[Id], [t11].[Id], [t11].[BranchAddress_Country_Name], [t11].[BranchAddress_Country_PlanetId], [t13].[Id], [t16].[Id], [t16].[LeafBAddress_Country_Name], [t16].[LeafBAddress_Country_PlanetId], [t18].[Id], [t21].[Id], [t21].[LeafAAddress_Country_Name], [t21].[LeafAAddress_Country_PlanetId], [t].[c], [o22].[ClientId], [o22].[Id]
FROM (
SELECT [o].[Id], [o].[Discriminator], @__Count_0 AS [c]
FROM [OwnedPerson] AS [o]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
ORDER BY [o].[Id]
SKIP @__p_1 FETCH NEXT @__p_2 ROWS ONLY
) AS [t]
LEFT JOIN (
SELECT [o0].[Id], [t0].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t0] ON [o0].[Id] = [t0].[Id]
) AS [t1] ON [t].[Id] = [t1].[Id]
LEFT JOIN (
SELECT [o2].[Id], [t2].[Id] AS [Id0]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [o3].[Discriminator]
FROM [OwnedPerson] AS [o3]
WHERE [o3].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t2] ON [o2].[Id] = [t2].[Id]
) AS [t3] ON [t].[Id] = [t3].[Id]
LEFT JOIN (
SELECT [o4].[Id], [o4].[PersonAddress_Country_Name], [o4].[PersonAddress_Country_PlanetId], [t5].[Id] AS [Id0], [t5].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o4]
INNER JOIN (
SELECT [o5].[Id], [t4].[Id] AS [Id0]
FROM [OwnedPerson] AS [o5]
INNER JOIN (
SELECT [o6].[Id], [o6].[Discriminator]
FROM [OwnedPerson] AS [o6]
WHERE [o6].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t4] ON [o5].[Id] = [t4].[Id]
) AS [t5] ON [o4].[Id] = [t5].[Id]
WHERE [o4].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t6] ON [t3].[Id] = [t6].[Id]
LEFT JOIN (
SELECT [o7].[Id], [t7].[Id] AS [Id0]
FROM [OwnedPerson] AS [o7]
INNER JOIN (
SELECT [o8].[Id], [o8].[Discriminator]
FROM [OwnedPerson] AS [o8]
WHERE [o8].[Discriminator] IN ('Branch', 'LeafA')
) AS [t7] ON [o7].[Id] = [t7].[Id]
) AS [t8] ON [t].[Id] = [t8].[Id]
LEFT JOIN (
SELECT [o9].[Id], [o9].[BranchAddress_Country_Name], [o9].[BranchAddress_Country_PlanetId], [t10].[Id] AS [Id0], [t10].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o9]
INNER JOIN (
SELECT [o10].[Id], [t9].[Id] AS [Id0]
FROM [OwnedPerson] AS [o10]
INNER JOIN (
SELECT [o11].[Id], [o11].[Discriminator]
FROM [OwnedPerson] AS [o11]
WHERE [o11].[Discriminator] IN ('Branch', 'LeafA')
) AS [t9] ON [o10].[Id] = [t9].[Id]
) AS [t10] ON [o9].[Id] = [t10].[Id]
WHERE [o9].[BranchAddress_Country_PlanetId] IS NOT NULL
) AS [t11] ON [t8].[Id] = [t11].[Id]
LEFT JOIN (
SELECT [o12].[Id], [t12].[Id] AS [Id0]
FROM [OwnedPerson] AS [o12]
INNER JOIN (
SELECT [o13].[Id], [o13].[Discriminator]
FROM [OwnedPerson] AS [o13]
WHERE [o13].[Discriminator] = 'LeafB'
) AS [t12] ON [o12].[Id] = [t12].[Id]
) AS [t13] ON [t].[Id] = [t13].[Id]
LEFT JOIN (
SELECT [o14].[Id], [o14].[LeafBAddress_Country_Name], [o14].[LeafBAddress_Country_PlanetId], [t15].[Id] AS [Id0], [t15].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o14]
INNER JOIN (
SELECT [o15].[Id], [t14].[Id] AS [Id0]
FROM [OwnedPerson] AS [o15]
INNER JOIN (
SELECT [o16].[Id], [o16].[Discriminator]
FROM [OwnedPerson] AS [o16]
WHERE [o16].[Discriminator] = 'LeafB'
) AS [t14] ON [o15].[Id] = [t14].[Id]
) AS [t15] ON [o14].[Id] = [t15].[Id]
WHERE [o14].[LeafBAddress_Country_PlanetId] IS NOT NULL
) AS [t16] ON [t13].[Id] = [t16].[Id]
LEFT JOIN (
SELECT [o17].[Id], [t17].[Id] AS [Id0]
FROM [OwnedPerson] AS [o17]
INNER JOIN (
SELECT [o18].[Id], [o18].[Discriminator]
FROM [OwnedPerson] AS [o18]
WHERE [o18].[Discriminator] = 'LeafA'
) AS [t17] ON [o17].[Id] = [t17].[Id]
) AS [t18] ON [t].[Id] = [t18].[Id]
LEFT JOIN (
SELECT [o19].[Id], [o19].[LeafAAddress_Country_Name], [o19].[LeafAAddress_Country_PlanetId], [t20].[Id] AS [Id0], [t20].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o19]
INNER JOIN (
SELECT [o20].[Id], [t19].[Id] AS [Id0]
FROM [OwnedPerson] AS [o20]
INNER JOIN (
SELECT [o21].[Id], [o21].[Discriminator]
FROM [OwnedPerson] AS [o21]
WHERE [o21].[Discriminator] = 'LeafA'
) AS [t19] ON [o20].[Id] = [t19].[Id]
) AS [t20] ON [o19].[Id] = [t20].[Id]
WHERE [o19].[LeafAAddress_Country_PlanetId] IS NOT NULL
) AS [t21] ON [t18].[Id] = [t21].[Id]
LEFT JOIN [Order] AS [o22] ON [t].[Id] = [o22].[ClientId]
ORDER BY [t].[Id], [o22].[ClientId], [o22].[Id]");
}
public override async Task Unmapped_property_projection_loads_owned_navigations(bool isAsync)
{
await base.Unmapped_property_projection_loads_owned_navigations(isAsync);
AssertSql(
@"SELECT [o].[Id], [o].[Discriminator], [t0].[Id], [t3].[Id], [t3].[PersonAddress_Country_Name], [t3].[PersonAddress_Country_PlanetId], [t5].[Id], [t8].[Id], [t8].[BranchAddress_Country_Name], [t8].[BranchAddress_Country_PlanetId], [t10].[Id], [t13].[Id], [t13].[LeafBAddress_Country_Name], [t13].[LeafBAddress_Country_PlanetId], [t15].[Id], [t18].[Id], [t18].[LeafAAddress_Country_Name], [t18].[LeafAAddress_Country_PlanetId], [o20].[ClientId], [o20].[Id]
FROM [OwnedPerson] AS [o]
LEFT JOIN (
SELECT [o0].[Id], [t].[Id] AS [Id0]
FROM [OwnedPerson] AS [o0]
INNER JOIN (
SELECT [o1].[Id], [o1].[Discriminator]
FROM [OwnedPerson] AS [o1]
WHERE [o1].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t] ON [o0].[Id] = [t].[Id]
) AS [t0] ON [o].[Id] = [t0].[Id]
LEFT JOIN (
SELECT [o2].[Id], [o2].[PersonAddress_Country_Name], [o2].[PersonAddress_Country_PlanetId], [t2].[Id] AS [Id0], [t2].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o2]
INNER JOIN (
SELECT [o3].[Id], [t1].[Id] AS [Id0]
FROM [OwnedPerson] AS [o3]
INNER JOIN (
SELECT [o4].[Id], [o4].[Discriminator]
FROM [OwnedPerson] AS [o4]
WHERE [o4].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA')
) AS [t1] ON [o3].[Id] = [t1].[Id]
) AS [t2] ON [o2].[Id] = [t2].[Id]
WHERE [o2].[PersonAddress_Country_PlanetId] IS NOT NULL
) AS [t3] ON [t0].[Id] = [t3].[Id]
LEFT JOIN (
SELECT [o5].[Id], [t4].[Id] AS [Id0]
FROM [OwnedPerson] AS [o5]
INNER JOIN (
SELECT [o6].[Id], [o6].[Discriminator]
FROM [OwnedPerson] AS [o6]
WHERE [o6].[Discriminator] IN ('Branch', 'LeafA')
) AS [t4] ON [o5].[Id] = [t4].[Id]
) AS [t5] ON [o].[Id] = [t5].[Id]
LEFT JOIN (
SELECT [o7].[Id], [o7].[BranchAddress_Country_Name], [o7].[BranchAddress_Country_PlanetId], [t7].[Id] AS [Id0], [t7].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o7]
INNER JOIN (
SELECT [o8].[Id], [t6].[Id] AS [Id0]
FROM [OwnedPerson] AS [o8]
INNER JOIN (
SELECT [o9].[Id], [o9].[Discriminator]
FROM [OwnedPerson] AS [o9]
WHERE [o9].[Discriminator] IN ('Branch', 'LeafA')
) AS [t6] ON [o8].[Id] = [t6].[Id]
) AS [t7] ON [o7].[Id] = [t7].[Id]
WHERE [o7].[BranchAddress_Country_PlanetId] IS NOT NULL
) AS [t8] ON [t5].[Id] = [t8].[Id]
LEFT JOIN (
SELECT [o10].[Id], [t9].[Id] AS [Id0]
FROM [OwnedPerson] AS [o10]
INNER JOIN (
SELECT [o11].[Id], [o11].[Discriminator]
FROM [OwnedPerson] AS [o11]
WHERE [o11].[Discriminator] = 'LeafB'
) AS [t9] ON [o10].[Id] = [t9].[Id]
) AS [t10] ON [o].[Id] = [t10].[Id]
LEFT JOIN (
SELECT [o12].[Id], [o12].[LeafBAddress_Country_Name], [o12].[LeafBAddress_Country_PlanetId], [t12].[Id] AS [Id0], [t12].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o12]
INNER JOIN (
SELECT [o13].[Id], [t11].[Id] AS [Id0]
FROM [OwnedPerson] AS [o13]
INNER JOIN (
SELECT [o14].[Id], [o14].[Discriminator]
FROM [OwnedPerson] AS [o14]
WHERE [o14].[Discriminator] = 'LeafB'
) AS [t11] ON [o13].[Id] = [t11].[Id]
) AS [t12] ON [o12].[Id] = [t12].[Id]
WHERE [o12].[LeafBAddress_Country_PlanetId] IS NOT NULL
) AS [t13] ON [t10].[Id] = [t13].[Id]
LEFT JOIN (
SELECT [o15].[Id], [t14].[Id] AS [Id0]
FROM [OwnedPerson] AS [o15]
INNER JOIN (
SELECT [o16].[Id], [o16].[Discriminator]
FROM [OwnedPerson] AS [o16]
WHERE [o16].[Discriminator] = 'LeafA'
) AS [t14] ON [o15].[Id] = [t14].[Id]
) AS [t15] ON [o].[Id] = [t15].[Id]
LEFT JOIN (
SELECT [o17].[Id], [o17].[LeafAAddress_Country_Name], [o17].[LeafAAddress_Country_PlanetId], [t17].[Id] AS [Id0], [t17].[Id0] AS [Id00]
FROM [OwnedPerson] AS [o17]
INNER JOIN (
SELECT [o18].[Id], [t16].[Id] AS [Id0]
FROM [OwnedPerson] AS [o18]
INNER JOIN (
SELECT [o19].[Id], [o19].[Discriminator]
FROM [OwnedPerson] AS [o19]
WHERE [o19].[Discriminator] = 'LeafA'
) AS [t16] ON [o18].[Id] = [t16].[Id]
) AS [t17] ON [o17].[Id] = [t17].[Id]
WHERE [o17].[LeafAAddress_Country_PlanetId] IS NOT NULL
) AS [t18] ON [t15].[Id] = [t18].[Id]
LEFT JOIN [Order] AS [o20] ON [o].[Id] = [o20].[ClientId]
WHERE [o].[Discriminator] IN ('OwnedPerson', 'Branch', 'LeafB', 'LeafA') AND ([o].[Id] = 1)
ORDER BY [o].[Id], [o20].[ClientId], [o20].[Id]");
}
private void AssertSql(params string[] expected)
=> Fixture.TestSqlLoggerFactory.AssertBaseline(expected);
public class OwnedQueryJetFixture : RelationalOwnedQueryFixture
{
protected override ITestStoreFactory TestStoreFactory => JetTestStoreFactory.Instance;
}
}
}