From ec44934d2e33caade0d3a0f01ad8ba1391660370 Mon Sep 17 00:00:00 2001 From: Shay Rojansky Date: Wed, 10 Jan 2024 22:24:07 +0100 Subject: [PATCH] Redo SQL table alias management Closees #32784 Fixes #32757 Part of #32778 Fixes #26104 --- ...ntityFrameworkRelationalServicesBuilder.cs | 2 + .../Query/ISqlAliasManagerFactory.cs | 15 + .../Query/ISqlExpressionFactory.cs | 34 +- ...nalQueryTranslationPostprocessorFactory.cs | 2 +- ...thodTranslatingExpressionVisitorFactory.cs | 2 +- .../Query/Internal/SqlAliasManagerFactory.cs | 22 + .../Query/Internal/TpcTablesExpression.cs | 4 +- .../RelationalQueryCompilationContext.cs | 6 + ...onalQueryCompilationContextDependencies.cs | 10 +- ...RelationalQueryTranslationPostprocessor.cs | 122 +- ...nslatingExpressionVisitor.ExecuteUpdate.cs | 24 +- ...yableMethodTranslatingExpressionVisitor.cs | 102 +- .../Query/SqlAliasManager.cs | 210 +++ .../Query/SqlExpressionFactory.cs | 14 +- .../Query/SqlExpressions/ExceptExpression.cs | 8 + .../Query/SqlExpressions/FromSqlExpression.cs | 9 +- .../SqlExpressions/IntersectExpression.cs | 8 + .../SqlExpressions/JoinExpressionBase.cs | 6 +- .../SqlExpressions/SelectExpression.Helper.cs | 85 +- .../Query/SqlExpressions/SelectExpression.cs | 247 ++-- .../Query/SqlExpressions/SetOperationBase.cs | 6 - .../Query/SqlExpressions/TableExpression.cs | 22 +- .../SqlExpressions/TableExpressionBase.cs | 3 +- .../TableValuedFunctionExpression.cs | 27 +- .../Query/SqlExpressions/UnionExpression.cs | 8 + .../Query/SqlExpressions/ValuesExpression.cs | 4 +- src/EFCore.Relational/Query/SqlTreePruner.cs | 27 +- .../Internal/SqlServerOpenJsonExpression.cs | 4 +- .../SqlServerQueryTranslationPostprocessor.cs | 2 +- ...verQueryTranslationPostprocessorFactory.cs | 3 +- ...yableMethodTranslatingExpressionVisitor.cs | 20 +- .../SqliteQueryTranslationPostprocessor.cs | 2 +- ...iteQueryTranslationPostprocessorFactory.cs | 2 +- ...yableMethodTranslatingExpressionVisitor.cs | 22 +- ...thodTranslatingExpressionVisitorFactory.cs | 3 +- .../Internal/JsonEachExpression.cs | 4 +- .../ComplexTypeBulkUpdatesSqlServerTest.cs | 24 +- .../NorthwindBulkUpdatesSqlServerTest.cs | 206 +-- .../ManyToManyFieldsLoadSqlServerTest.cs | 20 +- .../ManyToManyLoadSqlServerTest.cs | 20 +- .../AdHocMiscellaneousQuerySqlServerTest.cs | 84 +- .../AdHocNavigationsQuerySqlServerTest.cs | 28 +- .../AdHocQueryFiltersQuerySqlServerTest.cs | 36 +- .../AdHocQuerySplittingQuerySqlServerTest.cs | 118 +- ...avigationsCollectionsQuerySqlServerTest.cs | 454 +++---- ...CollectionsSharedTypeQuerySqlServerTest.cs | 520 ++++---- ...tionsCollectionsSplitQuerySqlServerTest.cs | 804 ++++++------ .../ComplexNavigationsQuerySqlServerTest.cs | 88 +- ...NavigationsSharedTypeQuerySqlServerTest.cs | 940 +++++++------- .../Query/CompositeKeysQuerySqlServerTest.cs | 24 +- .../CompositeKeysSplitQuerySqlServerTest.cs | 286 ++--- .../Query/Ef6GroupBySqlServerTest.cs | 120 +- .../EntitySplittingQuerySqlServerTest.cs | 8 +- .../Query/GearsOfWarQuerySqlServerTest.cs | 84 +- ...eritanceRelationshipsQuerySqlServerTest.cs | 208 +-- .../Query/JsonQuerySqlServerTest.cs | 50 +- .../ManyToManyNoTrackingQuerySqlServerTest.cs | 78 +- .../Query/ManyToManyQuerySqlServerTest.cs | 78 +- ...windEFPropertyIncludeQuerySqlServerTest.cs | 120 +- .../NorthwindGroupByQuerySqlServerTest.cs | 50 +- ...windIncludeNoTrackingQuerySqlServerTest.cs | 120 +- .../NorthwindIncludeQuerySqlServerTest.cs | 120 +- .../Query/NorthwindJoinQuerySqlServerTest.cs | 56 +- ...orthwindMiscellaneousQuerySqlServerTest.cs | 104 +- .../NorthwindNavigationsQuerySqlServerTest.cs | 50 +- ...NorthwindQueryFiltersQuerySqlServerTest.cs | 8 +- .../NorthwindSelectQuerySqlServerTest.cs | 126 +- ...orthwindSetOperationsQuerySqlServerTest.cs | 8 +- ...plitIncludeNoTrackingQuerySqlServerTest.cs | 280 ++-- ...NorthwindSplitIncludeQuerySqlServerTest.cs | 280 ++-- ...orthwindStringIncludeQuerySqlServerTest.cs | 120 +- .../Query/OwnedEntityQuerySqlServerTest.cs | 56 +- .../Query/OwnedQuerySqlServerTest.cs | 98 +- .../PrimitiveCollectionsQuerySqlServerTest.cs | 6 +- .../Query/TPCGearsOfWarQuerySqlServerTest.cs | 604 ++++----- .../TPCInheritanceQuerySqlServerTestBase.cs | 22 +- ...CManyToManyNoTrackingQuerySqlServerTest.cs | 196 +-- .../Query/TPCManyToManyQuerySqlServerTest.cs | 196 +-- .../TPCRelationshipsQuerySqlServerTest.cs | 1130 ++++++++--------- .../Query/TPTGearsOfWarQuerySqlServerTest.cs | 222 ++-- ...TManyToManyNoTrackingQuerySqlServerTest.cs | 78 +- .../Query/TPTManyToManyQuerySqlServerTest.cs | 78 +- .../TPTRelationshipsQuerySqlServerTest.cs | 232 ++-- ...avigationsCollectionsQuerySqlServerTest.cs | 454 +++---- ...CollectionsSharedTypeQuerySqlServerTest.cs | 478 +++---- .../TemporalGearsOfWarQuerySqlServerTest.cs | 84 +- .../TemporalManyToManyQuerySqlServerTest.cs | 18 +- .../Query/TemporalOwnedQuerySqlServerTest.cs | 98 +- .../Query/UdfDbFunctionSqlServerTests.cs | 10 +- .../TPTTableSplittingSqlServerTest.cs | 12 +- .../NorthwindBulkUpdatesSqliteTest.cs | 196 +-- ...FiltersInheritanceBulkUpdatesSqliteTest.cs | 10 +- .../TPTInheritanceBulkUpdatesSqliteTest.cs | 10 +- .../Query/Ef6GroupBySqliteTest.cs | 24 - .../Query/GearsOfWarQuerySqliteTest.cs | 74 +- .../NorthwindMiscellaneousQuerySqliteTest.cs | 13 - .../PrimitiveCollectionsQuerySqliteTest.cs | 6 +- 97 files changed, 5637 insertions(+), 5579 deletions(-) create mode 100644 src/EFCore.Relational/Query/ISqlAliasManagerFactory.cs create mode 100644 src/EFCore.Relational/Query/Internal/SqlAliasManagerFactory.cs create mode 100644 src/EFCore.Relational/Query/SqlAliasManager.cs diff --git a/src/EFCore.Relational/Infrastructure/EntityFrameworkRelationalServicesBuilder.cs b/src/EFCore.Relational/Infrastructure/EntityFrameworkRelationalServicesBuilder.cs index 638ce909358..6151af01729 100644 --- a/src/EFCore.Relational/Infrastructure/EntityFrameworkRelationalServicesBuilder.cs +++ b/src/EFCore.Relational/Infrastructure/EntityFrameworkRelationalServicesBuilder.cs @@ -62,6 +62,7 @@ public static readonly IDictionary RelationalServi { typeof(IRawSqlCommandBuilder), new ServiceCharacteristics(ServiceLifetime.Singleton) }, { typeof(IQuerySqlGeneratorFactory), new ServiceCharacteristics(ServiceLifetime.Singleton) }, { typeof(IModificationCommandFactory), new ServiceCharacteristics(ServiceLifetime.Singleton) }, + { typeof(ISqlAliasManagerFactory), new ServiceCharacteristics(ServiceLifetime.Singleton) }, { typeof(ICommandBatchPreparer), new ServiceCharacteristics(ServiceLifetime.Scoped) }, { typeof(IModificationCommandBatchFactory), new ServiceCharacteristics(ServiceLifetime.Scoped) }, { typeof(IRelationalSqlTranslatingExpressionVisitorFactory), new ServiceCharacteristics(ServiceLifetime.Scoped) }, @@ -185,6 +186,7 @@ public override EntityFrameworkServicesBuilder TryAddCoreServices() TryAdd(); TryAdd(); TryAdd(); + TryAdd(); ServiceCollectionMap.GetInfrastructure() .AddDependencySingleton() diff --git a/src/EFCore.Relational/Query/ISqlAliasManagerFactory.cs b/src/EFCore.Relational/Query/ISqlAliasManagerFactory.cs new file mode 100644 index 00000000000..a8066373c7d --- /dev/null +++ b/src/EFCore.Relational/Query/ISqlAliasManagerFactory.cs @@ -0,0 +1,15 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Microsoft.EntityFrameworkCore.Query; + +/// +/// A factory creating managers for SQL aliases, capable of generate uniquified table aliases. +/// +public interface ISqlAliasManagerFactory +{ + /// + /// Creates a new . + /// + SqlAliasManager Create(); +} diff --git a/src/EFCore.Relational/Query/ISqlExpressionFactory.cs b/src/EFCore.Relational/Query/ISqlExpressionFactory.cs index b435a252732..7301ee57e11 100644 --- a/src/EFCore.Relational/Query/ISqlExpressionFactory.cs +++ b/src/EFCore.Relational/Query/ISqlExpressionFactory.cs @@ -460,29 +460,31 @@ SqlFunctionExpression NiladicFunction( SqlFragmentExpression Fragment(string sql); /// - /// Creates a new which represents a SELECT in a SQL tree projecting a - /// or 1 from no table and without any composition. + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. /// - /// A to project. - /// An expression representing a SELECT in a SQL tree. - SelectExpression Select(SqlExpression? projection); + [EntityFrameworkInternal] + SelectExpression Select(SqlExpression? projection, SqlAliasManager sqlAliasManager); /// - /// Creates a new which represents a SELECT in a SQL tree projecting an entity type from - /// a table source created using default mapping in the model. + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. /// - /// An entity type to project. - /// An expression representing a SELECT in a SQL tree. - SelectExpression Select(IEntityType entityType); + [EntityFrameworkInternal] + SelectExpression Select(IEntityType entityType, SqlAliasManager sqlAliasManager); /// - /// Creates a new which represents a SELECT in a SQL tree projecting an entity type from - /// a table source. + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. /// - /// An entity type to project. - /// A table source to project from. - /// An expression representing a SELECT in a SQL tree. - SelectExpression Select(IEntityType entityType, TableExpressionBase tableExpressionBase); + [EntityFrameworkInternal] + SelectExpression Select(IEntityType entityType, TableExpressionBase tableExpressionBase, SqlAliasManager sqlAliasManager); /// /// Attempts to creates a new expression that returns the smallest value from a list of expressions, e.g. an invocation of the diff --git a/src/EFCore.Relational/Query/Internal/RelationalQueryTranslationPostprocessorFactory.cs b/src/EFCore.Relational/Query/Internal/RelationalQueryTranslationPostprocessorFactory.cs index 3a3cd793e54..62a29b841eb 100644 --- a/src/EFCore.Relational/Query/Internal/RelationalQueryTranslationPostprocessorFactory.cs +++ b/src/EFCore.Relational/Query/Internal/RelationalQueryTranslationPostprocessorFactory.cs @@ -45,5 +45,5 @@ public virtual QueryTranslationPostprocessor Create(QueryCompilationContext quer => new RelationalQueryTranslationPostprocessor( Dependencies, RelationalDependencies, - queryCompilationContext); + (RelationalQueryCompilationContext)queryCompilationContext); } diff --git a/src/EFCore.Relational/Query/Internal/RelationalQueryableMethodTranslatingExpressionVisitorFactory.cs b/src/EFCore.Relational/Query/Internal/RelationalQueryableMethodTranslatingExpressionVisitorFactory.cs index 489a10f5559..f32df7f3f6e 100644 --- a/src/EFCore.Relational/Query/Internal/RelationalQueryableMethodTranslatingExpressionVisitorFactory.cs +++ b/src/EFCore.Relational/Query/Internal/RelationalQueryableMethodTranslatingExpressionVisitorFactory.cs @@ -45,5 +45,5 @@ public virtual QueryableMethodTranslatingExpressionVisitor Create(QueryCompilati => new RelationalQueryableMethodTranslatingExpressionVisitor( Dependencies, RelationalDependencies, - queryCompilationContext); + (RelationalQueryCompilationContext)queryCompilationContext); } diff --git a/src/EFCore.Relational/Query/Internal/SqlAliasManagerFactory.cs b/src/EFCore.Relational/Query/Internal/SqlAliasManagerFactory.cs new file mode 100644 index 00000000000..f0faa7c8f1c --- /dev/null +++ b/src/EFCore.Relational/Query/Internal/SqlAliasManagerFactory.cs @@ -0,0 +1,22 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Microsoft.EntityFrameworkCore.Query.Internal; + +/// +/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to +/// the same compatibility standards as public APIs. It may be changed or removed without notice in +/// any release. You should only use it directly in your code with extreme caution and knowing that +/// doing so can result in application failures when updating to a new Entity Framework Core release. +/// +public class SqlAliasManagerFactory : ISqlAliasManagerFactory +{ + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public SqlAliasManager Create() + => new(); +} diff --git a/src/EFCore.Relational/Query/Internal/TpcTablesExpression.cs b/src/EFCore.Relational/Query/Internal/TpcTablesExpression.cs index 06992c72851..bc77a6690a3 100644 --- a/src/EFCore.Relational/Query/Internal/TpcTablesExpression.cs +++ b/src/EFCore.Relational/Query/Internal/TpcTablesExpression.cs @@ -109,11 +109,11 @@ protected override TableExpressionBase CreateWithAnnotations(IEnumerable new TpcTablesExpression(Alias, EntityType, SelectExpressions, annotations); /// - public override TableExpressionBase Clone(ExpressionVisitor cloningExpressionVisitor) + public override TableExpressionBase Clone(string? alias, ExpressionVisitor cloningExpressionVisitor) { // Deep clone var subSelectExpressions = SelectExpressions.Select(cloningExpressionVisitor.Visit).ToList(); - var newTpcTable = new TpcTablesExpression(Alias, EntityType, subSelectExpressions); + var newTpcTable = new TpcTablesExpression(alias, EntityType, subSelectExpressions); foreach (var annotation in GetAnnotations()) { newTpcTable.AddAnnotation(annotation.Name, annotation.Value); diff --git a/src/EFCore.Relational/Query/RelationalQueryCompilationContext.cs b/src/EFCore.Relational/Query/RelationalQueryCompilationContext.cs index 4b441b8b93f..d4bdfe0bd94 100644 --- a/src/EFCore.Relational/Query/RelationalQueryCompilationContext.cs +++ b/src/EFCore.Relational/Query/RelationalQueryCompilationContext.cs @@ -28,6 +28,7 @@ public RelationalQueryCompilationContext( { RelationalDependencies = relationalDependencies; QuerySplittingBehavior = RelationalOptionsExtension.Extract(ContextOptions).QuerySplittingBehavior; + SqlAliasManager = relationalDependencies.SqlAliasManagerFactory.Create(); } /// @@ -41,4 +42,9 @@ public RelationalQueryCompilationContext( /// will be used. /// public virtual QuerySplittingBehavior? QuerySplittingBehavior { get; internal set; } + + /// + /// A manager for SQL aliases, capable of generate uniquified table aliases. + /// + public virtual SqlAliasManager SqlAliasManager { get; } } diff --git a/src/EFCore.Relational/Query/RelationalQueryCompilationContextDependencies.cs b/src/EFCore.Relational/Query/RelationalQueryCompilationContextDependencies.cs index 481f92aada7..f86d54870fb 100644 --- a/src/EFCore.Relational/Query/RelationalQueryCompilationContextDependencies.cs +++ b/src/EFCore.Relational/Query/RelationalQueryCompilationContextDependencies.cs @@ -45,7 +45,11 @@ public sealed record RelationalQueryCompilationContextDependencies /// the constructor at any point in this process. /// [EntityFrameworkInternal] - public RelationalQueryCompilationContextDependencies() - { - } + public RelationalQueryCompilationContextDependencies(ISqlAliasManagerFactory sqlAliasManagerFactory) + => SqlAliasManagerFactory = sqlAliasManagerFactory; + + /// + /// The current context. + /// + public ISqlAliasManagerFactory SqlAliasManagerFactory { get; init; } } diff --git a/src/EFCore.Relational/Query/RelationalQueryTranslationPostprocessor.cs b/src/EFCore.Relational/Query/RelationalQueryTranslationPostprocessor.cs index 0e825e87dea..5f769a49f5f 100644 --- a/src/EFCore.Relational/Query/RelationalQueryTranslationPostprocessor.cs +++ b/src/EFCore.Relational/Query/RelationalQueryTranslationPostprocessor.cs @@ -11,6 +11,7 @@ namespace Microsoft.EntityFrameworkCore.Query; public class RelationalQueryTranslationPostprocessor : QueryTranslationPostprocessor { private readonly SqlTreePruner _pruner = new(); + private readonly SqlAliasManager _sqlAliasManager; private readonly bool _useRelationalNulls; /// @@ -22,10 +23,11 @@ public class RelationalQueryTranslationPostprocessor : QueryTranslationPostproce public RelationalQueryTranslationPostprocessor( QueryTranslationPostprocessorDependencies dependencies, RelationalQueryTranslationPostprocessorDependencies relationalDependencies, - QueryCompilationContext queryCompilationContext) + RelationalQueryCompilationContext queryCompilationContext) : base(dependencies, queryCompilationContext) { RelationalDependencies = relationalDependencies; + _sqlAliasManager = queryCompilationContext.SqlAliasManager; _useRelationalNulls = RelationalOptionsExtension.Extract(queryCompilationContext.ContextOptions).UseRelationalNulls; } @@ -37,24 +39,24 @@ public RelationalQueryTranslationPostprocessor( /// public override Expression Process(Expression query) { - query = base.Process(query); - query = new SelectExpressionProjectionApplyingExpressionVisitor( - ((RelationalQueryCompilationContext)QueryCompilationContext).QuerySplittingBehavior).Visit(query); - query = Prune(query); + var query1 = base.Process(query); + var query2 = new SelectExpressionProjectionApplyingExpressionVisitor( + ((RelationalQueryCompilationContext)QueryCompilationContext).QuerySplittingBehavior).Visit(query1); + var query3 = Prune(query2); + + // TODO: This - and all the verifications below - should happen after all visitors have run, including provider-specific ones. + var query4 = _sqlAliasManager.PostprocessAliases(query3); #if DEBUG // Verifies that all SelectExpression are marked as immutable after this point. - new SelectExpressionMutableVerifyingExpressionVisitor().Visit(query); - // Verifies that all table aliases are uniquely assigned without skipping over - // Which points to possible mutation of a SelectExpression being used in multiple places. - new TableAliasVerifyingExpressionVisitor().Visit(query); + new SelectExpressionMutableVerifyingExpressionVisitor().Visit(query4); #endif - query = new SqlExpressionSimplifyingExpressionVisitor(RelationalDependencies.SqlExpressionFactory, _useRelationalNulls) - .Visit(query); - query = new RelationalValueConverterCompensatingExpressionVisitor(RelationalDependencies.SqlExpressionFactory).Visit(query); + var query5 = new SqlExpressionSimplifyingExpressionVisitor(RelationalDependencies.SqlExpressionFactory, _useRelationalNulls) + .Visit(query4); + var query6 = new RelationalValueConverterCompensatingExpressionVisitor(RelationalDependencies.SqlExpressionFactory).Visit(query5); - return query; + return query6; } /// @@ -85,99 +87,5 @@ private sealed class SelectExpressionMutableVerifyingExpressionVisitor : Express } } } - - private sealed class TableAliasVerifyingExpressionVisitor : ExpressionVisitor - { - private readonly ScopedVisitor _scopedVisitor = new(); - - // Validates that all aliases are unique inside SelectExpression - // And all aliases are used in without any generated alias being missing - [return: NotNullIfNotNull("expression")] - public override Expression? Visit(Expression? expression) - { - switch (expression) - { - case ShapedQueryExpression shapedQueryExpression: - VerifyUniqueAliasInExpression(shapedQueryExpression.QueryExpression); - Visit(shapedQueryExpression.QueryExpression); - return shapedQueryExpression; - - case RelationalSplitCollectionShaperExpression relationalSplitCollectionShaperExpression: - VerifyUniqueAliasInExpression(relationalSplitCollectionShaperExpression.SelectExpression); - Visit(relationalSplitCollectionShaperExpression.InnerShaper); - return relationalSplitCollectionShaperExpression; - - case NonQueryExpression nonQueryExpression: - VerifyUniqueAliasInExpression(nonQueryExpression.Expression); - return nonQueryExpression; - - default: - return base.Visit(expression); - } - } - - private void VerifyUniqueAliasInExpression(Expression expression) - => _scopedVisitor.EntryPoint(expression); - - private sealed class ScopedVisitor : ExpressionVisitor - { - private readonly HashSet _usedAliases = new(StringComparer.OrdinalIgnoreCase); - private readonly HashSet _visitedTableExpressionBases = new(ReferenceEqualityComparer.Instance); - - public Expression EntryPoint(Expression expression) - { - _usedAliases.Clear(); - _visitedTableExpressionBases.Clear(); - - if (expression is SelectExpression selectExpression) - { - Check.DebugAssert(selectExpression.RemovedAliases is not null, "RemovedAliases not set"); - foreach (var alias in selectExpression.RemovedAliases) - { - _usedAliases.Add(alias); - } - } - - var result = Visit(expression); - - foreach (var group in _usedAliases.GroupBy(e => e[..1])) - { - if (group.Count() == 1) - { - continue; - } - - var numbers = group.OrderBy(e => e).Skip(1).Select(e => int.Parse(e[1..])).OrderBy(e => e).ToList(); - if (numbers.Count - 1 != numbers[^1]) - { - throw new InvalidOperationException($"Missing alias in the list: {string.Join(",", group.Select(e => e))}"); - } - } - - return result; - } - - [return: NotNullIfNotNull("expression")] - public override Expression? Visit(Expression? expression) - { - var visitedExpression = base.Visit(expression); - if (visitedExpression is TableExpressionBase tableExpressionBase - && !_visitedTableExpressionBases.Contains(tableExpressionBase) - && tableExpressionBase.Alias != null) - { - if (_usedAliases.Contains(tableExpressionBase.Alias)) - { - throw new InvalidOperationException($"Duplicate alias: {tableExpressionBase.Alias}"); - } - - _usedAliases.Add(tableExpressionBase.Alias); - - _visitedTableExpressionBases.Add(tableExpressionBase); - } - - return visitedExpression; - } - } - } #endif } diff --git a/src/EFCore.Relational/Query/RelationalQueryableMethodTranslatingExpressionVisitor.ExecuteUpdate.cs b/src/EFCore.Relational/Query/RelationalQueryableMethodTranslatingExpressionVisitor.ExecuteUpdate.cs index 9473fb1ab9a..3569fb762eb 100644 --- a/src/EFCore.Relational/Query/RelationalQueryableMethodTranslatingExpressionVisitor.ExecuteUpdate.cs +++ b/src/EFCore.Relational/Query/RelationalQueryableMethodTranslatingExpressionVisitor.ExecuteUpdate.cs @@ -134,8 +134,7 @@ bool TranslateSetters( case ColumnExpression column: { if (!IsColumnOnSameTable(column, propertySelector) - || TranslateSqlSetterValueSelector(source, valueSelector, column, selectExpression) is not SqlExpression - translatedValueSelector) + || TranslateSqlSetterValueSelector(source, valueSelector, column) is not SqlExpression translatedValueSelector) { return false; } @@ -216,8 +215,8 @@ bool TryProcessComplexType(StructuralTypeShaperExpression shaperExpression, Expr } var rewrittenValueSelector = CreatePropertyAccessExpression(valueExpression, property); - if (TranslateSqlSetterValueSelector(source, rewrittenValueSelector, column, selectExpression) is not SqlExpression - translatedValueSelector) + if (TranslateSqlSetterValueSelector( + source, rewrittenValueSelector, column) is not SqlExpression translatedValueSelector) { return false; } @@ -341,20 +340,17 @@ when parameter.Name.StartsWith(QueryCompilationContext.QueryParameterPrefix, Str SqlExpression? TranslateSqlSetterValueSelector( ShapedQueryExpression source, Expression valueSelector, - ColumnExpression column, - SelectExpression selectExpression) + ColumnExpression column) { - if (TranslateSetterValueSelector(source, valueSelector, column.Type) is not SqlExpression translatedSelector) + if (TranslateSetterValueSelector(source, valueSelector, column.Type) is SqlExpression translatedSelector) { - AddTranslationErrorDetails(RelationalStrings.InvalidValueInSetProperty(valueSelector.Print())); - return null; + // Apply the type mapping of the column (translated from the property selector above) to the value + translatedSelector = _sqlExpressionFactory.ApplyTypeMapping(translatedSelector, column.TypeMapping); + return translatedSelector; } - // Apply the type mapping of the column (translated from the property selector above) to the value, - // and apply alias uniquification to it. - translatedSelector = _sqlExpressionFactory.ApplyTypeMapping(translatedSelector, column.TypeMapping); - translatedSelector = selectExpression.AssignUniqueAliases(translatedSelector); - return translatedSelector; + AddTranslationErrorDetails(RelationalStrings.InvalidValueInSetProperty(valueSelector.Print())); + return null; } Expression? TranslateSetterValueSelector(ShapedQueryExpression source, Expression valueSelector, Type propertyType) diff --git a/src/EFCore.Relational/Query/RelationalQueryableMethodTranslatingExpressionVisitor.cs b/src/EFCore.Relational/Query/RelationalQueryableMethodTranslatingExpressionVisitor.cs index 4b9c1b147e3..7ab68fa9893 100644 --- a/src/EFCore.Relational/Query/RelationalQueryableMethodTranslatingExpressionVisitor.cs +++ b/src/EFCore.Relational/Query/RelationalQueryableMethodTranslatingExpressionVisitor.cs @@ -17,7 +17,8 @@ public partial class RelationalQueryableMethodTranslatingExpressionVisitor : Que private readonly RelationalSqlTranslatingExpressionVisitor _sqlTranslator; private readonly SharedTypeEntityExpandingExpressionVisitor _sharedTypeEntityExpandingExpressionVisitor; private readonly RelationalProjectionBindingExpressionVisitor _projectionBindingExpressionVisitor; - private readonly QueryCompilationContext _queryCompilationContext; + private readonly RelationalQueryCompilationContext _queryCompilationContext; + private readonly SqlAliasManager _sqlAliasManager; private readonly IRelationalTypeMappingSource _typeMappingSource; private readonly ISqlExpressionFactory _sqlExpressionFactory; private readonly bool _subquery; @@ -31,16 +32,17 @@ public partial class RelationalQueryableMethodTranslatingExpressionVisitor : Que public RelationalQueryableMethodTranslatingExpressionVisitor( QueryableMethodTranslatingExpressionVisitorDependencies dependencies, RelationalQueryableMethodTranslatingExpressionVisitorDependencies relationalDependencies, - QueryCompilationContext queryCompilationContext) + RelationalQueryCompilationContext queryCompilationContext) : base(dependencies, queryCompilationContext, subquery: false) { RelationalDependencies = relationalDependencies; var sqlExpressionFactory = relationalDependencies.SqlExpressionFactory; _queryCompilationContext = queryCompilationContext; + _sqlAliasManager = queryCompilationContext.SqlAliasManager; _sqlTranslator = relationalDependencies.RelationalSqlTranslatingExpressionVisitorFactory.Create(queryCompilationContext, this); _sharedTypeEntityExpandingExpressionVisitor = - new SharedTypeEntityExpandingExpressionVisitor(_sqlTranslator, sqlExpressionFactory); + new SharedTypeEntityExpandingExpressionVisitor(_sqlTranslator, sqlExpressionFactory, _sqlAliasManager); _projectionBindingExpressionVisitor = new RelationalProjectionBindingExpressionVisitor(this, _sqlTranslator); _typeMappingSource = relationalDependencies.TypeMappingSource; _sqlExpressionFactory = sqlExpressionFactory; @@ -62,10 +64,11 @@ protected RelationalQueryableMethodTranslatingExpressionVisitor( { RelationalDependencies = parentVisitor.RelationalDependencies; _queryCompilationContext = parentVisitor._queryCompilationContext; + _sqlAliasManager = _queryCompilationContext.SqlAliasManager; _sqlTranslator = RelationalDependencies.RelationalSqlTranslatingExpressionVisitorFactory.Create( parentVisitor._queryCompilationContext, parentVisitor); _sharedTypeEntityExpandingExpressionVisitor = - new SharedTypeEntityExpandingExpressionVisitor(_sqlTranslator, parentVisitor._sqlExpressionFactory); + new SharedTypeEntityExpandingExpressionVisitor(_sqlTranslator, parentVisitor._sqlExpressionFactory, _sqlAliasManager); _projectionBindingExpressionVisitor = new RelationalProjectionBindingExpressionVisitor(this, _sqlTranslator); _typeMappingSource = parentVisitor._typeMappingSource; _sqlExpressionFactory = parentVisitor._sqlExpressionFactory; @@ -99,14 +102,17 @@ protected override Expression VisitExtension(Expression extensionExpression) switch (extensionExpression) { case FromSqlQueryRootExpression fromSqlQueryRootExpression: + { + var table = fromSqlQueryRootExpression.EntityType.GetDefaultMappings().Single().Table; + var alias = _sqlAliasManager.GenerateTableAlias(table); + return CreateShapedQueryExpression( fromSqlQueryRootExpression.EntityType, _sqlExpressionFactory.Select( fromSqlQueryRootExpression.EntityType, - new FromSqlExpression( - fromSqlQueryRootExpression.EntityType.GetDefaultMappings().Single().Table, - fromSqlQueryRootExpression.Sql, - fromSqlQueryRootExpression.Argument))); + new FromSqlExpression(alias, table, fromSqlQueryRootExpression.Sql, fromSqlQueryRootExpression.Argument), + _sqlAliasManager)); + } case TableValuedFunctionQueryRootExpression tableValuedFunctionQueryRootExpression: { @@ -144,9 +150,9 @@ protected override Expression VisitExtension(Expression extensionExpression) } var entityType = tableValuedFunctionQueryRootExpression.EntityType; - - var translation = new TableValuedFunctionExpression(function, arguments); - var queryExpression = _sqlExpressionFactory.Select(entityType, translation); + var alias = _sqlAliasManager.GenerateTableAlias(function); + var translation = new TableValuedFunctionExpression(alias, function, arguments); + var queryExpression = _sqlExpressionFactory.Select(entityType, translation, _sqlAliasManager); return CreateShapedQueryExpression(entityType, queryExpression); } @@ -155,14 +161,17 @@ protected override Expression VisitExtension(Expression extensionExpression) when entityQueryRootExpression.GetType() == typeof(EntityQueryRootExpression) && entityQueryRootExpression.EntityType.GetSqlQueryMappings().FirstOrDefault(m => m.IsDefaultSqlQueryMapping)?.SqlQuery is ISqlQuery sqlQuery: + { + var table = entityQueryRootExpression.EntityType.GetDefaultMappings().Single().Table; + var alias = _sqlAliasManager.GenerateTableAlias(table); + return CreateShapedQueryExpression( entityQueryRootExpression.EntityType, _sqlExpressionFactory.Select( entityQueryRootExpression.EntityType, - new FromSqlExpression( - entityQueryRootExpression.EntityType.GetDefaultMappings().Single().Table, - sqlQuery.Sql, - Expression.Constant(Array.Empty(), typeof(object[]))))); + new FromSqlExpression(alias, table, sqlQuery.Sql, Expression.Constant(Array.Empty(), typeof(object[]))), + _sqlAliasManager)); + } case GroupByShaperExpression groupByShaperExpression: var groupShapedQueryExpression = groupByShaperExpression.GroupingEnumerable; @@ -191,8 +200,10 @@ when entityQueryRootExpression.GetType() == typeof(EntityQueryRootExpression) RelationalStrings.SqlQueryUnmappedType(sqlQueryRootExpression.ElementType.DisplayName())); } + var alias = _sqlAliasManager.GenerateTableAlias("t"); var selectExpression = new SelectExpression( - new FromSqlExpression("t", sqlQueryRootExpression.Sql, sqlQueryRootExpression.Argument), SqlQuerySingleColumnAlias, + _sqlAliasManager, + new FromSqlExpression(alias, sqlQueryRootExpression.Sql, sqlQueryRootExpression.Argument), SqlQuerySingleColumnAlias, sqlQueryRootExpression.Type, typeMapping); Expression shaperExpression = new ProjectionBindingExpression( @@ -259,7 +270,7 @@ protected override Expression VisitMethodCall(MethodCallExpression methodCallExp && _sqlTranslator.Visit(parameterSource.ParameterExpression) is SqlParameterExpression sqlParameterExpression) { var inExpression = _sqlExpressionFactory.In(item, sqlParameterExpression); - var selectExpression = new SelectExpression(inExpression); + var selectExpression = new SelectExpression(inExpression, _sqlAliasManager); var shaperExpression = Expression.Convert( new ProjectionBindingExpression(selectExpression, new ProjectionMember(), typeof(bool?)), typeof(bool)); var shapedQueryExpression = new ShapedQueryExpression(selectExpression, shaperExpression) @@ -280,11 +291,13 @@ protected override Expression VisitMethodCall(MethodCallExpression methodCallExp { var tableAlias = sqlExpression switch { - ColumnExpression c => c.Name[..1].ToLowerInvariant(), - JsonScalarExpression { Path: [.., { PropertyName: string propertyName }] } => propertyName[..1].ToLowerInvariant(), + ColumnExpression c => c.Name, + JsonScalarExpression { Path: [.., { PropertyName: string propertyName }] } => propertyName, _ => "j" }; + tableAlias = _sqlAliasManager.GenerateTableAlias(tableAlias); + if (TranslatePrimitiveCollection(sqlExpression, regularProperty, tableAlias) is { } primitiveCollectionTranslation) { @@ -303,10 +316,8 @@ protected override Expression VisitMethodCall(MethodCallExpression methodCallExp Check.DebugAssert(sqlParameterExpression is not null, "sqlParameterExpression is not null"); - return TranslatePrimitiveCollection( - sqlParameterExpression, - property: null, - char.ToLowerInvariant(sqlParameterExpression.Name.First(c => c != '_')).ToString()); + var tableAlias = _sqlAliasManager.GenerateTableAlias(sqlParameterExpression.Name.TrimStart('_')); + return TranslatePrimitiveCollection(sqlParameterExpression, property: null, tableAlias); } /// @@ -387,10 +398,12 @@ protected override Expression VisitMethodCall(MethodCallExpression methodCallExp })); } - var valuesExpression = new ValuesExpression("v", rowExpressions, new[] { ValuesOrderingColumnName, ValuesValueColumnName }); + var alias = _sqlAliasManager.GenerateTableAlias("values"); + var valuesExpression = new ValuesExpression(alias, rowExpressions, new[] { ValuesOrderingColumnName, ValuesValueColumnName }); // Note: we leave the element type mapping null, to allow it to get inferred based on queryable operators composed on top. var selectExpression = new SelectExpression( + _sqlAliasManager, valuesExpression, ValuesValueColumnName, columnType: elementType.UnwrapNullableType(), @@ -428,7 +441,7 @@ protected override QueryableMethodTranslatingExpressionVisitor CreateSubqueryVis /// protected override ShapedQueryExpression CreateShapedQueryExpression(IEntityType entityType) - => CreateShapedQueryExpression(entityType, _sqlExpressionFactory.Select(entityType)); + => CreateShapedQueryExpression(entityType, _sqlExpressionFactory.Select(entityType, _sqlAliasManager)); private static ShapedQueryExpression CreateShapedQueryExpression(IEntityType entityType, SelectExpression selectExpression) => new( @@ -467,7 +480,7 @@ private static ShapedQueryExpression CreateShapedQueryExpression(IEntityType ent } translation = _sqlExpressionFactory.Not(_sqlExpressionFactory.Exists(subquery)); - subquery = _sqlExpressionFactory.Select(translation); + subquery = _sqlExpressionFactory.Select(translation, _sqlAliasManager); return source.Update( subquery, @@ -498,7 +511,7 @@ private static ShapedQueryExpression CreateShapedQueryExpression(IEntityType ent } var translation = _sqlExpressionFactory.Exists(subquery); - var selectExpression = _sqlExpressionFactory.Select(translation); + var selectExpression = _sqlExpressionFactory.Select(translation, _sqlAliasManager); return source.Update( selectExpression, @@ -565,7 +578,7 @@ protected override ShapedQueryExpression TranslateConcat(ShapedQueryExpression s if (TryExtractBareInlineCollectionValues(source, out var values)) { var inExpression = _sqlExpressionFactory.In(translatedItem, values); - return source.Update(_sqlExpressionFactory.Select(inExpression), source.ShaperExpression); + return source.Update(_sqlExpressionFactory.Select(inExpression, _sqlAliasManager), source.ShaperExpression); } // Translate to IN with a subquery. @@ -581,7 +594,7 @@ protected override ShapedQueryExpression TranslateConcat(ShapedQueryExpression s subquery.ApplyProjection(); var translation = _sqlExpressionFactory.In(translatedItem, subquery); - subquery = _sqlExpressionFactory.Select(translation); + subquery = _sqlExpressionFactory.Select(translation, _sqlAliasManager); return source.Update( subquery, @@ -937,7 +950,7 @@ private SqlExpression CreateJoinPredicate(Expression outerKey, Expression innerK protected override ShapedQueryExpression? TranslateMax(ShapedQueryExpression source, LambdaExpression? selector, Type resultType) => TryExtractBareInlineCollectionValues(source, out var values) && _sqlExpressionFactory.TryCreateGreatest(values, resultType, out var greatestExpression) - ? source.Update(_sqlExpressionFactory.Select(greatestExpression), source.ShaperExpression) + ? source.Update(_sqlExpressionFactory.Select(greatestExpression, _sqlAliasManager), source.ShaperExpression) : TranslateAggregateWithSelector( source, selector, t => QueryableMethods.MaxWithoutSelector.MakeGenericMethod(t), throwWhenEmpty: true, resultType); @@ -945,7 +958,7 @@ private SqlExpression CreateJoinPredicate(Expression outerKey, Expression innerK protected override ShapedQueryExpression? TranslateMin(ShapedQueryExpression source, LambdaExpression? selector, Type resultType) => TryExtractBareInlineCollectionValues(source, out var values) && _sqlExpressionFactory.TryCreateLeast(values, resultType, out var leastExpression) - ? source.Update(_sqlExpressionFactory.Select(leastExpression), source.ShaperExpression) + ? source.Update(_sqlExpressionFactory.Select(leastExpression, _sqlAliasManager), source.ShaperExpression) : TranslateAggregateWithSelector( source, selector, t => QueryableMethods.MinWithoutSelector.MakeGenericMethod(t), throwWhenEmpty: true, resultType); @@ -1354,21 +1367,14 @@ private static Expression PruneIncludes(IncludeExpression includeExpression) : includeExpression.EntityExpression; } - private sealed class SharedTypeEntityExpandingExpressionVisitor : ExpressionVisitor + private sealed class SharedTypeEntityExpandingExpressionVisitor( + RelationalSqlTranslatingExpressionVisitor sqlTranslator, + ISqlExpressionFactory sqlExpressionFactory, + SqlAliasManager sqlAliasManager) + : ExpressionVisitor { - private readonly RelationalSqlTranslatingExpressionVisitor _sqlTranslator; - private readonly ISqlExpressionFactory _sqlExpressionFactory; - - private SelectExpression _selectExpression; - - public SharedTypeEntityExpandingExpressionVisitor( - RelationalSqlTranslatingExpressionVisitor sqlTranslator, - ISqlExpressionFactory sqlExpressionFactory) - { - _sqlTranslator = sqlTranslator; - _sqlExpressionFactory = sqlExpressionFactory; - _selectExpression = null!; - } + private readonly SqlAliasManager _sqlAliasManager = sqlAliasManager; + private SelectExpression _selectExpression = null!; public Expression Expand(SelectExpression selectExpression, Expression lambdaBody) { @@ -1422,7 +1428,7 @@ protected override Expression VisitMethodCall(MethodCallExpression methodCallExp if (source is JsonQueryExpression jsonQueryExpression) { - var collectionIndexExpression = _sqlTranslator.Translate(methodCallExpression.Arguments[1]); + var collectionIndexExpression = sqlTranslator.Translate(methodCallExpression.Arguments[1]); if (collectionIndexExpression == null) { // before we return from failed translation @@ -1647,7 +1653,7 @@ Expression ExpandOwnedNavigation(INavigation navigation) : foreignKey.PrincipalKey.Properties[0]); var sourceTable = FindRootTableExpressionForColumn(sourceColumn); - var innerSelectExpression = _sqlExpressionFactory.Select(targetEntityType); + var innerSelectExpression = sqlExpressionFactory.Select(targetEntityType, _sqlAliasManager); innerSelectExpression = (SelectExpression)new AnnotationApplyingExpressionVisitor(sourceTable.GetAnnotations().ToList()) .Visit(innerSelectExpression); @@ -1700,7 +1706,7 @@ outerKey is NewArrayExpression newArrayExpression return entityProjectionExpression.BindNavigation(navigation) ?? _selectExpression.GenerateOwnedReferenceEntityProjectionExpression( - entityProjectionExpression, navigation, _sqlExpressionFactory); + entityProjectionExpression, navigation, sqlExpressionFactory, _sqlAliasManager); } static TableExpressionBase FindRootTableExpressionForColumn(ColumnExpression column) diff --git a/src/EFCore.Relational/Query/SqlAliasManager.cs b/src/EFCore.Relational/Query/SqlAliasManager.cs new file mode 100644 index 00000000000..14995a3ce8e --- /dev/null +++ b/src/EFCore.Relational/Query/SqlAliasManager.cs @@ -0,0 +1,210 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Collections; +using Microsoft.EntityFrameworkCore.Query.Internal; +using Microsoft.EntityFrameworkCore.Query.SqlExpressions; + +namespace Microsoft.EntityFrameworkCore.Query; + +/// +/// A stateful manager for SQL aliases, capable of generate uniquified table aliases and rewriting them in post-processing. +/// An instance of is valid for a single query compilation, and is owned by +/// . +/// +public class SqlAliasManager +{ + /// + /// Maps alias prefixes to the highest number postfix currently in use. + /// + private readonly Dictionary _aliases = new(); + + /// + /// Generates an alias based on the given . + /// All aliases produced by a given instance of are unique. + /// + /// A name (e.g. of a table) to use as the starting point for the aliasA base for the alias; a number postfix will be appended to it as necessary. + /// A fully unique alias within the context of this translation process. + public virtual string GenerateTableAlias(string name) + { + var firstChar = char.ToLowerInvariant(name[0]); + + if (_aliases.TryGetValue(firstChar, out var counter)) + { + return firstChar.ToString() + counter.Value++; + } + + _aliases[firstChar] = new MutableInt { Value = 0 }; + return firstChar.ToString(); + } + + /// + /// Generates an alias based on the given . + /// All aliases produced by a given instance of are unique. + /// + /// A table from the relational model for which to generate the alias. + /// A fully unique alias within the context of this translation process. + public virtual string GenerateTableAlias(ITableBase modelTable) + => GenerateTableAlias(modelTable.Name); + + /// + /// Performs a post-processing pass over aliases in the provided SQL tree, closing any gaps. + /// + /// The SQL tree to post-process. + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + [EntityFrameworkInternal] + public virtual Expression PostprocessAliases(Expression expression) + { + // To post-process (finalize) table aliases in the tree, we visit it to see which aliases are actually in use. + // We then remap those alias, e.g. closing any gaps caused by tables getting pruned, etc. + // Finally, we revisit the tree in order to apply the remappings. + var tableAliases = TableAliasCollector.Collect(expression); + + var aliasRewritingMap = RemapTableAliases(tableAliases); + + return aliasRewritingMap is null + ? expression + : TableAliasRewriter.Rewrite(expression, aliasRewritingMap); + } + + /// + /// Given the list of table aliases currently in use in the SQL tree, produces a remapping for aliases within that list. + /// Can be used to e.g. close gaps for tables which have been pruned, etc. + /// + public virtual Dictionary? RemapTableAliases(IReadOnlySet usedAliases) + { + // Aliases consist of a single character, followed by a counter for uniquification. + // We construct process the collected aliases above into a bitmap that represents, for each alias char, which numbers have been + // seen. Note that since a0 is the 2nd uniquified alias (a is the first), the bits are off-by-one, with position 0 representing + // a, position 1 representing a0, and so on. + Dictionary aliasBitmaps = new(); + + foreach (var alias in usedAliases) + { + var aliasBase = alias[0]; + var aliasNum = alias.Length == 1 ? 0 : int.Parse(alias[1..]) + 1; + + if (aliasBitmaps.TryGetValue(aliasBase, out var bitmap)) + { + if (bitmap.Length < aliasNum + 1) + { + bitmap.Length = aliasNum + 1; + } + } + else + { + bitmap = aliasBitmaps[aliasBase] = new(aliasNum + 1); + } + + bitmap[aliasNum] = true; + } + + Dictionary? aliasRewritingMap = null; + foreach (var (aliasBase, bitmap) in aliasBitmaps) + { + if (bitmap.HasAllSet()) + { + // There are no gaps, no need to do any rewriting of the aliases for this alias base + continue; + } + + var numHoles = 0; + for (var i = 0; i < bitmap.Length; i++) + { + if (!bitmap[i]) + { + numHoles++; + } + else if (numHoles > 0) + { + var oldAlias = aliasBase + (i == 0 ? "" : (i - 1).ToString()); + var j = i - numHoles; + var newAlias = aliasBase + (j == 0 ? "" : (j - 1).ToString()); + + aliasRewritingMap ??= new(); + aliasRewritingMap[oldAlias] = newAlias; + } + } + } + + return aliasRewritingMap; + } + + private sealed class TableAliasCollector : ExpressionVisitor + { + private readonly HashSet _tableAliases = new(); + + internal static HashSet Collect(Expression expression) + { + var collector = new TableAliasCollector(); + collector.Visit(expression); + return collector._tableAliases; + } + + protected override Expression VisitExtension(Expression node) + { + switch (node) + { + case ShapedQueryExpression shapedQuery: + return shapedQuery.UpdateQueryExpression(Visit(shapedQuery.QueryExpression)); + + case ColumnExpression { TableAlias: var alias }: + _tableAliases.Add(alias); + return base.VisitExtension(node); + + case TableExpressionBase { Alias: string alias }: + _tableAliases.Add(alias); + return base.VisitExtension(node); + + default: + return base.VisitExtension(node); + } + } + } + + private sealed class TableAliasRewriter(IReadOnlyDictionary aliasRewritingMap) : ExpressionVisitor + { + private readonly HashSet _visitedTableReferences = new(ReferenceEqualityComparer.Instance); + + internal static Expression Rewrite(Expression expression, IReadOnlyDictionary aliasRewritingMap) + => new TableAliasRewriter(aliasRewritingMap).Visit(expression); + + protected override Expression VisitExtension(Expression node) + { + switch (node) + { + case ShapedQueryExpression shapedQuery: + return shapedQuery.UpdateQueryExpression(Visit(shapedQuery.QueryExpression)); + + case SelectExpression select: + for (var i = 0; i < select.Tables.Count; i++) + { + var table = select.Tables[i]; + + if (aliasRewritingMap.TryGetValue(table.UnwrapJoin().Alias!, out var newAlias)) + { + // TableReferenceExpression instances can (currently) be shared by multiple SelectExpression instances in the + // same tree. We don't want to the same one multiple times, so we track the ones we already visited. + // This will all go away soon as we get rid of TableReferenceExpression altogether. + select.ChangeTableAlias(i, newAlias, _visitedTableReferences); + } + } + + return base.VisitExtension(node); + + default: + return base.VisitExtension(node); + } + } + } + + private sealed class MutableInt + { + internal int Value; + } +} diff --git a/src/EFCore.Relational/Query/SqlExpressionFactory.cs b/src/EFCore.Relational/Query/SqlExpressionFactory.cs index 655192dcb2a..2f83856b7e8 100644 --- a/src/EFCore.Relational/Query/SqlExpressionFactory.cs +++ b/src/EFCore.Relational/Query/SqlExpressionFactory.cs @@ -701,22 +701,24 @@ public virtual SqlConstantExpression Constant(object? value, Type type, Relation => new(Expression.Constant(value, type), typeMapping); /// - public virtual SelectExpression Select(SqlExpression? projection) - => new(projection); + [EntityFrameworkInternal] + public virtual SelectExpression Select(SqlExpression? projection, SqlAliasManager sqlAliasManager) + => new(projection, sqlAliasManager); /// - public virtual SelectExpression Select(IEntityType entityType) + [EntityFrameworkInternal] + public virtual SelectExpression Select(IEntityType entityType, SqlAliasManager sqlAliasManager) { - var selectExpression = new SelectExpression(entityType, this); + var selectExpression = new SelectExpression(entityType, this, sqlAliasManager); AddConditions(selectExpression, entityType); return selectExpression; } /// - public virtual SelectExpression Select(IEntityType entityType, TableExpressionBase tableExpressionBase) + public virtual SelectExpression Select(IEntityType entityType, TableExpressionBase tableExpressionBase, SqlAliasManager sqlAliasManager) { - var selectExpression = new SelectExpression(entityType, tableExpressionBase); + var selectExpression = new SelectExpression(entityType, tableExpressionBase, sqlAliasManager); AddConditions(selectExpression, entityType); return selectExpression; diff --git a/src/EFCore.Relational/Query/SqlExpressions/ExceptExpression.cs b/src/EFCore.Relational/Query/SqlExpressions/ExceptExpression.cs index f5e25ef5f2d..354c2bf82b4 100644 --- a/src/EFCore.Relational/Query/SqlExpressions/ExceptExpression.cs +++ b/src/EFCore.Relational/Query/SqlExpressions/ExceptExpression.cs @@ -65,6 +65,14 @@ public override ExceptExpression Update(SelectExpression source1, SelectExpressi protected override TableExpressionBase CreateWithAnnotations(IEnumerable annotations) => new ExceptExpression(Alias, Source1, Source2, IsDistinct, annotations); + /// + public override TableExpressionBase Clone(string? alias, ExpressionVisitor cloningExpressionVisitor) + => new ExceptExpression( + alias!, + (SelectExpression)cloningExpressionVisitor.Visit(Source1), + (SelectExpression)cloningExpressionVisitor.Visit(Source2), + IsDistinct); + /// protected override void Print(ExpressionPrinter expressionPrinter) { diff --git a/src/EFCore.Relational/Query/SqlExpressions/FromSqlExpression.cs b/src/EFCore.Relational/Query/SqlExpressions/FromSqlExpression.cs index 462a67a56ab..ef119d0d332 100644 --- a/src/EFCore.Relational/Query/SqlExpressions/FromSqlExpression.cs +++ b/src/EFCore.Relational/Query/SqlExpressions/FromSqlExpression.cs @@ -19,11 +19,12 @@ public class FromSqlExpression : TableExpressionBase, ITableBasedExpression /// /// Creates a new instance of the class. /// + /// An alias to use for this table source. /// A default table base associated with this table source. /// A user-provided custom SQL for the table source. /// A user-provided parameters to pass to the custom SQL. - public FromSqlExpression(ITableBase defaultTableBase, string sql, Expression arguments) - : this(defaultTableBase.Name[..1].ToLowerInvariant(), defaultTableBase, sql, arguments, annotations: null) + public FromSqlExpression(string alias, ITableBase defaultTableBase, string sql, Expression arguments) + : this(alias, defaultTableBase, sql, arguments, annotations: null) { } @@ -106,8 +107,8 @@ protected override Expression VisitChildren(ExpressionVisitor visitor) => this; /// - public override TableExpressionBase Clone(ExpressionVisitor cloningVisitor) - => new FromSqlExpression(Alias, Table, Sql, Arguments, GetAnnotations()); + public override TableExpressionBase Clone(string? alias, ExpressionVisitor cloningVisitor) + => new FromSqlExpression(alias!, Table, Sql, Arguments, GetAnnotations()); /// protected override void Print(ExpressionPrinter expressionPrinter) diff --git a/src/EFCore.Relational/Query/SqlExpressions/IntersectExpression.cs b/src/EFCore.Relational/Query/SqlExpressions/IntersectExpression.cs index 3d883e05fbd..501563f5cc0 100644 --- a/src/EFCore.Relational/Query/SqlExpressions/IntersectExpression.cs +++ b/src/EFCore.Relational/Query/SqlExpressions/IntersectExpression.cs @@ -65,6 +65,14 @@ public override IntersectExpression Update(SelectExpression source1, SelectExpre protected override TableExpressionBase CreateWithAnnotations(IEnumerable annotations) => new IntersectExpression(Alias, Source1, Source2, IsDistinct, annotations); + /// + public override TableExpressionBase Clone(string? alias, ExpressionVisitor cloningExpressionVisitor) + => new IntersectExpression( + alias!, + (SelectExpression)cloningExpressionVisitor.Visit(Source1), + (SelectExpression)cloningExpressionVisitor.Visit(Source2), + IsDistinct); + /// protected override void Print(ExpressionPrinter expressionPrinter) { diff --git a/src/EFCore.Relational/Query/SqlExpressions/JoinExpressionBase.cs b/src/EFCore.Relational/Query/SqlExpressions/JoinExpressionBase.cs index d427520215e..e73625de178 100644 --- a/src/EFCore.Relational/Query/SqlExpressions/JoinExpressionBase.cs +++ b/src/EFCore.Relational/Query/SqlExpressions/JoinExpressionBase.cs @@ -46,10 +46,10 @@ protected JoinExpressionBase(TableExpressionBase table, bool prunable, IEnumerab /// This expression if no children changed, or an expression with the updated children. public abstract JoinExpressionBase Update(TableExpressionBase table); + // Joins necessary contain other TableExpressionBase, which will get cloned; this will cause our VisitChildren to create a new + // copy of this JoinExpressionBase by calling Update. /// - public override TableExpressionBase Clone(ExpressionVisitor cloningExpressionVisitor) - // Joins necessary contain other TableExpressionBase, which will get cloned; this will cause our VisitChildren to create a new - // copy of this JoinExpressionBase by calling Update. + public override TableExpressionBase Clone(string? alias, ExpressionVisitor cloningExpressionVisitor) => (TableExpressionBase)VisitChildren(cloningExpressionVisitor); /// diff --git a/src/EFCore.Relational/Query/SqlExpressions/SelectExpression.Helper.cs b/src/EFCore.Relational/Query/SqlExpressions/SelectExpression.Helper.cs index 2c8b9621f76..c18f7fd525b 100644 --- a/src/EFCore.Relational/Query/SqlExpressions/SelectExpression.Helper.cs +++ b/src/EFCore.Relational/Query/SqlExpressions/SelectExpression.Helper.cs @@ -349,51 +349,6 @@ public int GetHashCode((ColumnExpression Column, ValueComparer Comparer) obj) => obj.Column.GetHashCode(); } - private sealed class AliasUniquifier : ExpressionVisitor - { - private readonly HashSet _usedAliases; - private readonly List _visitedSelectExpressions = []; - - public AliasUniquifier(HashSet usedAliases) - { - _usedAliases = usedAliases; - } - - [return: NotNullIfNotNull("expression")] - public override Expression? Visit(Expression? expression) - { - if (expression is SelectExpression innerSelectExpression - && !_visitedSelectExpressions.Contains(innerSelectExpression)) - { - for (var i = 0; i < innerSelectExpression._tableReferences.Count; i++) - { - var currentAlias = innerSelectExpression._tableReferences[i].Alias; - var newAlias = GenerateUniqueAlias(_usedAliases, currentAlias); - - if (newAlias != currentAlias) - { - // we keep the old alias in the list (even though it's not actually being used anymore) - // to disambiguate the APPLY case, e.g. something like this: - // SELECT * FROM EntityOne as e - // OUTER APPLY ( - // SELECT * FROM EntityTwo as e1 - // LEFT JOIN EntityThree as e ON (...) -- reuse alias e, since we use e1 after uniquification - // WHERE e.Foo == e1.Bar -- ambiguity! e could refer to EntityOne or EntityThree - // ) as t - innerSelectExpression._usedAliases.Add(newAlias); - } - - innerSelectExpression._tableReferences[i].Alias = newAlias; - UnwrapJoinExpression(innerSelectExpression._tables[i]).Alias = newAlias; - } - - _visitedSelectExpressions.Add(innerSelectExpression); - } - - return base.Visit(expression); - } - } - private sealed class ConcreteColumnExpression : ColumnExpression { private readonly TableReferenceExpression _table; @@ -749,13 +704,21 @@ private static void Verify(Expression expression, IEnumerable expression switch { - TableExpressionBase table => table.Clone(this), + TableExpressionBase table + => table.Clone( + sqlAliasManager is null || table.Alias is null + ? table.Alias + : sqlAliasManager.GenerateTableAlias(table.Alias), this), _ => base.Visit(expression) }; @@ -764,24 +727,24 @@ private sealed class CloningExpressionVisitor : ExpressionVisitor private sealed class ColumnExpressionReplacingExpressionVisitor : ExpressionVisitor { private readonly SelectExpression _oldSelectExpression; - private readonly Dictionary _newTableReferences; + private readonly List _newTableReferences; public ColumnExpressionReplacingExpressionVisitor( SelectExpression oldSelectExpression, IEnumerable newTableReferences) { _oldSelectExpression = oldSelectExpression; - _newTableReferences = newTableReferences.ToDictionary(e => e.Alias); + _newTableReferences = newTableReferences.ToList(); } [return: NotNullIfNotNull("expression")] public override Expression? Visit(Expression? expression) => expression is ConcreteColumnExpression concreteColumnExpression - && _oldSelectExpression.ContainsTableReference(concreteColumnExpression) - && _newTableReferences.ContainsKey(concreteColumnExpression.TableAlias) + && _oldSelectExpression.Tables.IndexOf(concreteColumnExpression.Table) is var index + && index > -1 ? new ConcreteColumnExpression( concreteColumnExpression.Name, - _newTableReferences[concreteColumnExpression.TableAlias], + _newTableReferences[index], concreteColumnExpression.Type, concreteColumnExpression.TypeMapping!, concreteColumnExpression.IsNullable) @@ -790,11 +753,11 @@ public ColumnExpressionReplacingExpressionVisitor( private sealed class TpcTableExpressionRemovingExpressionVisitor : ExpressionVisitor { - private readonly HashSet _usedAliases; + private readonly SqlAliasManager _sqlAliasManager; - public TpcTableExpressionRemovingExpressionVisitor(HashSet usedAliases) + public TpcTableExpressionRemovingExpressionVisitor(SqlAliasManager sqlAliasManager) { - _usedAliases = usedAliases; + _sqlAliasManager = sqlAliasManager; } [return: NotNullIfNotNull("expression")] @@ -860,21 +823,15 @@ public TpcTableExpressionRemovingExpressionVisitor(HashSet usedAliases) } } - if (identitySelect) - { - // If we are lifting then we remove the alias for tpc because it will be unused. - _usedAliases.Remove(tpcTablesExpression.Alias); - } - RemapProjections(reindexingMap, firstSelectExpression); var result = subSelectExpressions[0]; for (var i = 1; i < subSelectExpressions.Count; i++) { - var setOperationAlias = GenerateUniqueAlias(_usedAliases, "t"); + var setOperationAlias = _sqlAliasManager.GenerateTableAlias("t"); var source1 = result; var source2 = subSelectExpressions[i]; RemapProjections(reindexingMap, source2); - var generatedSelectExpression = new SelectExpression(alias: null); + var generatedSelectExpression = new SelectExpression(alias: null, _sqlAliasManager); var unionExpression = new UnionExpression(setOperationAlias, source1, source2, distinct: false); var tableReferenceExpression = new TableReferenceExpression(generatedSelectExpression, setOperationAlias); @@ -919,7 +876,7 @@ SelectExpression AssignUniqueAliasToTable(SelectExpression se) { // we assign unique alias to inner tables here so that we can avoid wasting aliases on pruned tables var table = se._tables[0]; - var alias = GenerateUniqueAlias(_usedAliases, table.Alias!); + var alias = _sqlAliasManager.GenerateTableAlias(table.Alias!); table.Alias = alias; se._tableReferences[0].Alias = alias; diff --git a/src/EFCore.Relational/Query/SqlExpressions/SelectExpression.cs b/src/EFCore.Relational/Query/SqlExpressions/SelectExpression.cs index 3e9023d39b9..d350b444aa6 100644 --- a/src/EFCore.Relational/Query/SqlExpressions/SelectExpression.cs +++ b/src/EFCore.Relational/Query/SqlExpressions/SelectExpression.cs @@ -39,8 +39,9 @@ public sealed partial class SelectExpression : TableExpressionBase private readonly Dictionary)> _tpcDiscriminatorValues = new(ReferenceEqualityComparer.Instance); + private readonly SqlAliasManager _sqlAliasManager; + private bool _mutable = true; - private HashSet _usedAliases = []; private Dictionary _projectionMapping = new(); private List _clientProjections = []; private readonly List _aliasForClientProjections = []; @@ -55,9 +56,6 @@ public sealed partial class SelectExpression : TableExpressionBase // Pushdown should null it out as if GroupBy was present was pushed down. private List<(ColumnExpression Column, ValueComparer Comparer)>? _preGroupByIdentifier; -#if DEBUG - internal List? RemovedAliases { get; set; } -#endif private SelectExpression( string? alias, @@ -66,7 +64,8 @@ private SelectExpression( List tableReferences, List groupBy, List orderings, - IEnumerable annotations) + IEnumerable annotations, + SqlAliasManager sqlAliasManager) : base(alias) { _projection = projections; @@ -83,20 +82,23 @@ private SelectExpression( _annotations[annotation.Name] = annotation; } } + + _sqlAliasManager = sqlAliasManager; } - private SelectExpression(string? alias) + private SelectExpression(string? alias, SqlAliasManager sqlAliasManager) : base(alias) - { - } + => _sqlAliasManager = sqlAliasManager; - internal SelectExpression(SqlExpression? projection) + internal SelectExpression(SqlExpression? projection, SqlAliasManager sqlAliasManager) : base(null) { if (projection != null) { _projectionMapping[new ProjectionMember()] = projection; } + + _sqlAliasManager = sqlAliasManager; } /// @@ -107,6 +109,7 @@ internal SelectExpression(SqlExpression? projection) /// [EntityFrameworkInternal] public SelectExpression( + SqlAliasManager sqlAliasManager, TableExpressionBase tableExpression, string columnName, Type columnType, @@ -117,6 +120,8 @@ public SelectExpression( RelationalTypeMapping? identifierColumnTypeMapping = null) : base(null) { + _sqlAliasManager = sqlAliasManager; + var tableReferenceExpression = new TableReferenceExpression(this, tableExpression.Alias!); AddTable(tableExpression, tableReferenceExpression); @@ -148,9 +153,14 @@ public SelectExpression( } } - internal SelectExpression(IEntityType entityType, ISqlExpressionFactory sqlExpressionFactory) + internal SelectExpression( + IEntityType entityType, + ISqlExpressionFactory sqlExpressionFactory, + SqlAliasManager sqlAliasManager) : base(null) { + _sqlAliasManager = sqlAliasManager; + switch (entityType.GetMappingStrategy()) { case RelationalAnnotationNames.TptMappingStrategy: @@ -162,8 +172,9 @@ internal SelectExpression(IEntityType entityType, ISqlExpressionFactory sqlExpre foreach (var baseType in entityType.GetAllBaseTypesInclusive()) { var table = GetTableBaseFiltered(baseType, tableMap); - var tableExpression = new TableExpression(table); - var tableReferenceExpression = new TableReferenceExpression(this, tableExpression.Alias); + var alias = _sqlAliasManager.GenerateTableAlias(table); + var tableExpression = new TableExpression(alias, table); + var tableReferenceExpression = new TableReferenceExpression(this, alias); tableMap.Add(table, tableReferenceExpression); foreach (var property in baseType.GetDeclaredProperties()) @@ -200,8 +211,9 @@ internal SelectExpression(IEntityType entityType, ISqlExpressionFactory sqlExpre foreach (var derivedType in entityType.GetDerivedTypes()) { var table = GetTableBaseFiltered(derivedType, tableMap); - var tableExpression = new TableExpression(table); - var tableReferenceExpression = new TableReferenceExpression(this, tableExpression.Alias); + var alias = _sqlAliasManager.GenerateTableAlias(table); + var tableExpression = new TableExpression(alias, table); + var tableReferenceExpression = new TableReferenceExpression(this, alias); tableMap.Add(table, tableReferenceExpression); foreach (var property in derivedType.GetDeclaredProperties()) @@ -247,8 +259,9 @@ _projectionMapping[new ProjectionMember()] = { // For single entity case, we don't need discriminator. var table = entityTypes[0].GetViewOrTableMappings().Single().Table; - var tableExpression = new TableExpression(table); - var tableReferenceExpression = new TableReferenceExpression(this, tableExpression.Alias); + var alias = _sqlAliasManager.GenerateTableAlias(table); + var tableExpression = new TableExpression(alias, table); + var tableReferenceExpression = new TableReferenceExpression(this, alias); var tableMap = new Dictionary { [table] = tableReferenceExpression }; AddTable(tableExpression, tableReferenceExpression); @@ -321,10 +334,10 @@ _projectionMapping[new ProjectionMember()] = { var concreteEntityType = entityTypes[i]; var table = tables[i]; - var selectExpression = new SelectExpression(alias: null); - // We intentionally do not assign unique aliases here in case some select expression gets pruned later - var tableExpression = new TableExpression(table); - var tableReferenceExpression = new TableReferenceExpression(selectExpression, tableExpression.Alias); + var selectExpression = new SelectExpression(alias: null, _sqlAliasManager); + var alias = _sqlAliasManager.GenerateTableAlias(table); + var tableExpression = new TableExpression(alias, table); + var tableReferenceExpression = new TableReferenceExpression(selectExpression, alias); selectExpression._tables.Add(tableExpression); selectExpression._tableReferences.Add(tableReferenceExpression); @@ -349,7 +362,7 @@ _projectionMapping[new ProjectionMember()] = } // We only assign unique alias to Tpc - var tableAlias = GenerateUniqueAlias(_usedAliases, "t"); + var tableAlias = _sqlAliasManager.GenerateTableAlias("t"); var tpcTables = new TpcTablesExpression(tableAlias, entityType, subSelectExpressions); var tpcTableReference = new TableReferenceExpression(this, tableAlias); _tables.Add(tpcTables); @@ -385,8 +398,9 @@ _projectionMapping[new ProjectionMember()] = { var storeFunction = functionMapping.Table; + var alias = _sqlAliasManager.GenerateTableAlias(storeFunction); GenerateNonHierarchyNonSplittingEntityType( - storeFunction, new TableValuedFunctionExpression((IStoreFunction)storeFunction, [])); + storeFunction, new TableValuedFunctionExpression(alias, (IStoreFunction)storeFunction, [])); } else { @@ -394,8 +408,9 @@ _projectionMapping[new ProjectionMember()] = if (mappings.Count == 1) { var table = mappings[0].Table; + var alias = _sqlAliasManager.GenerateTableAlias(table); - GenerateNonHierarchyNonSplittingEntityType(table, new TableExpression(table)); + GenerateNonHierarchyNonSplittingEntityType(table, new TableExpression(alias, table)); } else { @@ -407,8 +422,9 @@ _projectionMapping[new ProjectionMember()] = foreach (var mapping in mappings) { var table = mapping.Table; - var tableExpression = new TableExpression(table); - var tableReferenceExpression = new TableReferenceExpression(this, tableExpression.Alias); + var alias = _sqlAliasManager.GenerateTableAlias(table); + var tableExpression = new TableExpression(alias, table); + var tableReferenceExpression = new TableReferenceExpression(this, alias); tableReferenceExpressionMap[table] = tableReferenceExpression; if (_tables.Count == 0) @@ -492,9 +508,14 @@ static ITableBase GetTableBaseFiltered(IEntityType entityType, Dictionary entityType.GetViewOrTableMappings().Single(m => !existingTables.ContainsKey(m.Table)).Table; } - internal SelectExpression(IEntityType entityType, TableExpressionBase tableExpressionBase) + internal SelectExpression( + IEntityType entityType, + TableExpressionBase tableExpressionBase, + SqlAliasManager sqlAliasManager) : base(null) { + _sqlAliasManager = sqlAliasManager; + if ((entityType.BaseType != null || entityType.GetDirectlyDerivedTypes().Any()) && entityType.FindDiscriminatorProperty() == null) { @@ -537,6 +558,7 @@ internal SelectExpression(IEntityType entityType, TableExpressionBase tableExpre /// [EntityFrameworkInternal] public SelectExpression( + SqlAliasManager sqlAliasManager, JsonQueryExpression jsonQueryExpression, TableExpressionBase tableExpressionBase, string identifierColumnName, @@ -544,6 +566,8 @@ public SelectExpression( RelationalTypeMapping identifierColumnTypeMapping) : base(null) { + _sqlAliasManager = sqlAliasManager; + if (!jsonQueryExpression.IsCollection) { throw new ArgumentException(RelationalStrings.SelectCanOnlyBeBuiltOnCollectionJsonQuery, nameof(jsonQueryExpression)); @@ -1094,7 +1118,7 @@ public Expression ApplyProjection( && (containsSingleResult || containsCollection)) { // SingleResult can lift collection from inner - cloningExpressionVisitor = new CloningExpressionVisitor(); + cloningExpressionVisitor = new CloningExpressionVisitor(sqlAliasManager: null); } var earlierClientProjectionCount = _clientProjections.Count; @@ -1922,8 +1946,7 @@ ConstantExpression AddJsonProjection(JsonQueryExpression jsonQueryExpression) jsonQueryExpression.JsonColumn.TypeMapping!, jsonQueryExpression.IsNullable); - var sqlExpression = AssignUniqueAliases(jsonScalarExpression); - _projection.Add(new ProjectionExpression(sqlExpression, "")); + _projection.Add(new ProjectionExpression(jsonScalarExpression, "")); var jsonColumnIndex = _projection.Count - 1; var keyAccessInfo = new List<(IProperty?, int?, int?)>(); var keyProperties = GetMappedKeyProperties(jsonQueryExpression.EntityType.FindPrimaryKey()!); @@ -2028,7 +2051,7 @@ public Expression GetProjection(ProjectionBindingExpression projectionBindingExp public int AddToProjection(SqlExpression sqlExpression) => AddToProjection(sqlExpression, null); - private int AddToProjection(SqlExpression sqlExpression, string? alias, bool assignUniqueTableAlias = true) + private int AddToProjection(SqlExpression sqlExpression, string? alias) { var existingIndex = _projection.FindIndex(pe => pe.Expression.Equals(sqlExpression)); if (existingIndex != -1) @@ -2053,11 +2076,6 @@ private int AddToProjection(SqlExpression sqlExpression, string? alias, bool ass baseAlias = currentAlias; } - if (assignUniqueTableAlias) - { - sqlExpression = AssignUniqueAliases(sqlExpression); - } - _projection.Add(new ProjectionExpression(sqlExpression, baseAlias ?? "")); return _projection.Count - 1; @@ -2157,8 +2175,6 @@ when _tpcDiscriminatorValues.TryGetValue(itemTpc, out var itemTuple) } } - sqlExpression = AssignUniqueAliases(sqlExpression); - if (_groupBy.Count > 0) { Having = Having == null @@ -2387,7 +2403,7 @@ public void AppendOrdering(OrderingExpression orderingExpression) } private void AppendOrderingInternal(OrderingExpression orderingExpression) - => _orderings.Add(orderingExpression.Update(AssignUniqueAliases(orderingExpression.Expression))); + => _orderings.Add(orderingExpression.Update(orderingExpression.Expression)); /// /// Reverses the existing orderings on the . @@ -2477,12 +2493,15 @@ public void ApplyIntersect(SelectExpression source2, bool distinct) public void ApplyUnion(SelectExpression source2, bool distinct) => ApplySetOperation(SetOperationType.Union, source2, distinct); - private void ApplySetOperation(SetOperationType setOperationType, SelectExpression select2, bool distinct) + private void ApplySetOperation( + SetOperationType setOperationType, + SelectExpression select2, + bool distinct) { // TODO: Introduce clone method? See issue#24460 var select1 = new SelectExpression( null, [], _tables.ToList(), _tableReferences.ToList(), _groupBy.ToList(), _orderings.ToList(), - GetAnnotations()) + GetAnnotations(), _sqlAliasManager) { IsDistinct = IsDistinct, Predicate = Predicate, @@ -2532,11 +2551,7 @@ private void ApplySetOperation(SetOperationType setOperationType, SelectExpressi // currently support that. if (select1.Limit != null || select1.Offset != null) { - // If we are pushing down here, we need to make sure to assign unique alias to subquery also. - var subqueryAlias = GenerateUniqueAlias(_usedAliases, "t"); select1.PushdownIntoSubqueryInternal(liftOrderings: false); - select1._tables[0].Alias = subqueryAlias; - select1._tableReferences[0].Alias = subqueryAlias; } else { @@ -2566,10 +2581,9 @@ private void ApplySetOperation(SetOperationType setOperationType, SelectExpressi throw new InvalidOperationException(RelationalStrings.ProjectionMappingCountMismatch); } - var setOperationAlias = GenerateUniqueAlias(_usedAliases, "t"); + var setOperationAlias = _sqlAliasManager.GenerateTableAlias("t"); var tableReferenceExpression = new TableReferenceExpression(this, setOperationAlias); - var aliasUniquifier = new AliasUniquifier(_usedAliases); foreach (var (projectionMember, expression1, expression2) in select1._projectionMapping.Join( select2._projectionMapping, kv => kv.Key, @@ -2586,17 +2600,13 @@ private void ApplySetOperation(SetOperationType setOperationType, SelectExpressi var innerColumn1 = (SqlExpression)expression1; var innerColumn2 = (SqlExpression)expression2; - // We have to unique-fy left side since those projections were never uniquified - // Right side is unique already when we did it when running select2 through it. - innerColumn1 = (SqlExpression)aliasUniquifier.Visit(innerColumn1); - - var alias = GenerateUniqueColumnAlias( + var projectionAlias = GenerateUniqueColumnAlias( projectionMember.Last?.Name ?? (innerColumn1 as ColumnExpression)?.Name ?? "c"); - var innerProjection1 = new ProjectionExpression(innerColumn1, alias); - var innerProjection2 = new ProjectionExpression(innerColumn2, alias); + var innerProjection1 = new ProjectionExpression(innerColumn1, projectionAlias); + var innerProjection2 = new ProjectionExpression(innerColumn2, projectionAlias); select1._projection.Add(innerProjection1); select2._projection.Add(innerProjection2); var outerProjection = new ConcreteColumnExpression(innerProjection1, tableReferenceExpression); @@ -2648,7 +2658,6 @@ private void ApplySetOperation(SetOperationType setOperationType, SelectExpressi // We generate actual set operation after applying projection to lift group by aggregate // select1 already has unique aliases. We unique-fy select2 and set operation alias. - select2 = (SelectExpression)aliasUniquifier.Visit(select2); var setExpression = setOperationType switch { SetOperationType.Except => (SetOperationBase)new ExceptExpression(setOperationAlias, select1, select2, distinct), @@ -2847,7 +2856,8 @@ public void ApplyDefaultIfEmpty(ISqlExpressionFactory sqlExpressionFactory) var nullSqlExpression = sqlExpressionFactory.ApplyDefaultTypeMapping( new SqlConstantExpression(Constant(null, typeof(string)), null)); - var dummySelectExpression = new SelectExpression(alias: "e"); + var alias = _sqlAliasManager.GenerateTableAlias("empty"); + var dummySelectExpression = new SelectExpression(alias, _sqlAliasManager); dummySelectExpression._projection.Add(new ProjectionExpression(nullSqlExpression, "empty")); dummySelectExpression._mutable = false; @@ -2910,14 +2920,15 @@ public void ApplyDefaultIfEmpty(ISqlExpressionFactory sqlExpressionFactory) public StructuralTypeShaperExpression GenerateOwnedReferenceEntityProjectionExpression( StructuralTypeProjectionExpression principalEntityProjection, INavigation navigation, - ISqlExpressionFactory sqlExpressionFactory) + ISqlExpressionFactory sqlExpressionFactory, + SqlAliasManager sqlAliasManager) { // We first find the select expression where principal tableExpressionBase is located // That is where we find shared tableExpressionBase to pull columns from or add joins var identifyingColumn = principalEntityProjection.BindProperty( navigation.DeclaringEntityType.FindPrimaryKey()!.Properties.First()); - var expressions = GetPropertyExpressions(sqlExpressionFactory, navigation, this, identifyingColumn); + var expressions = GetPropertyExpressions(sqlExpressionFactory, sqlAliasManager, navigation, this, identifyingColumn); var entityShaper = new RelationalStructuralTypeShaperExpression( navigation.TargetEntityType, @@ -2932,6 +2943,7 @@ public StructuralTypeShaperExpression GenerateOwnedReferenceEntityProjectionExpr // TODO: The following code should also handle Function and SqlQuery mappings when supported on owned type static IReadOnlyDictionary GetPropertyExpressions( ISqlExpressionFactory sqlExpressionFactory, + SqlAliasManager sqlAliasManager, INavigation navigation, SelectExpression selectExpression, ColumnExpression identifyingColumn) @@ -2947,7 +2959,7 @@ static IReadOnlyDictionary GetPropertyExpressions( .Expression; var subqueryPropertyExpressions = GetPropertyExpressions( - sqlExpressionFactory, navigation, subquery, subqueryIdentifyingColumn); + sqlExpressionFactory, sqlAliasManager, navigation, subquery, subqueryIdentifyingColumn); var changeNullability = identifyingColumn.IsNullable && !subqueryIdentifyingColumn.IsNullable; var tableIndex = selectExpression._tables.FindIndex(e => ReferenceEquals(e, identifyingColumn.Table)); var subqueryTableReferenceExpression = selectExpression._tableReferences[tableIndex]; @@ -3035,13 +3047,14 @@ static IReadOnlyDictionary GetPropertyExpressions( } else { - TableExpressionBase tableExpression = new TableExpression(table); + var alias = sqlAliasManager.GenerateTableAlias(table); + TableExpressionBase tableExpression = new TableExpression(alias, table); foreach (var annotation in sourceTableForAnnotations.GetAnnotations()) { tableExpression = tableExpression.AddAnnotation(annotation.Name, annotation.Value); } - tableReferenceExpression = new TableReferenceExpression(selectExpression, tableExpression.Alias!); + tableReferenceExpression = new TableReferenceExpression(selectExpression, alias); tableReferenceExpressionMap[table] = tableReferenceExpression; var innerColumns = keyProperties.Select( @@ -3088,13 +3101,14 @@ static IReadOnlyDictionary GetPropertyExpressions( ownerJoinColumns.Add(columnExpression); } - TableExpressionBase ownedTable = new TableExpression(dependentMainTable); + var ownedTableAlias = sqlAliasManager.GenerateTableAlias(dependentMainTable); + TableExpressionBase ownedTable = new TableExpression(ownedTableAlias, dependentMainTable); foreach (var annotation in sourceTableForAnnotations.GetAnnotations()) { ownedTable = ownedTable.AddAnnotation(annotation.Name, annotation.Value); } - mainTableReferenceExpression = new TableReferenceExpression(selectExpression, ownedTable.Alias!); + mainTableReferenceExpression = new TableReferenceExpression(selectExpression, ownedTableAlias); var outerJoinPredicate = ownerJoinColumns .Zip( navigation.ForeignKey.Properties @@ -3118,13 +3132,14 @@ static IReadOnlyDictionary GetPropertyExpressions( for (var i = 1; i < dependentTables.Count; i++) { var table = dependentTables[i]; - TableExpressionBase tableExpression = new TableExpression(table); + var alias = sqlAliasManager.GenerateTableAlias(table); + TableExpressionBase tableExpression = new TableExpression(alias, table); foreach (var annotation in sourceTableForAnnotations.GetAnnotations()) { tableExpression = tableExpression.AddAnnotation(annotation.Name, annotation.Value); } - tableReferenceExpression = new TableReferenceExpression(selectExpression, tableExpression.Alias!); + tableReferenceExpression = new TableReferenceExpression(selectExpression, alias); tableReferenceExpressionMap[table] = tableReferenceExpression; var innerColumns = keyProperties.Select( @@ -3954,17 +3969,16 @@ public void PushdownIntoSubquery() /// Whether orderings on the query should be lifted out of the subquery. private SqlRemappingVisitor PushdownIntoSubqueryInternal(bool liftOrderings = true) { - var subqueryAlias = GenerateUniqueAlias(_usedAliases, "t"); + var subqueryAlias = _sqlAliasManager.GenerateTableAlias("t"); var subquery = new SelectExpression( subqueryAlias, [], _tables.ToList(), _tableReferences.ToList(), _groupBy.ToList(), - _orderings.ToList(), GetAnnotations()) + _orderings.ToList(), GetAnnotations(), _sqlAliasManager) { IsDistinct = IsDistinct, Predicate = Predicate, Having = Having, Offset = Offset, Limit = Limit, - _usedAliases = _usedAliases, _mutable = false }; _tables.Clear(); @@ -4003,10 +4017,7 @@ private SqlRemappingVisitor PushdownIntoSubqueryInternal(bool liftOrderings = tr _projection.Clear(); foreach (var projection in projections) { - // Since these projections are already added, they have unique table alias already. - // The only new alias added was for "t" which we already made unique at the start of the method. - var outerColumn = subquery.GenerateOuterColumn( - subqueryTableReferenceExpression, projection.Expression, projection.Alias, assignUniqueTableAlias: false); + var outerColumn = subquery.GenerateOuterColumn(subqueryTableReferenceExpression, projection.Expression, projection.Alias); AddToProjection(outerColumn, null); projectionMap[projection.Expression] = outerColumn; } @@ -4125,8 +4136,7 @@ private SqlRemappingVisitor PushdownIntoSubqueryInternal(bool liftOrderings = tr { _orderings.Add( ordering.Update( - subquery.GenerateOuterColumn( - subqueryTableReferenceExpression, orderingExpression, assignUniqueTableAlias: false))); + subquery.GenerateOuterColumn(subqueryTableReferenceExpression, orderingExpression))); } else { @@ -4336,17 +4346,13 @@ public ColumnExpression CreateColumnExpression( [EntityFrameworkInternal] public SelectExpression Clone() { - _cloningExpressionVisitor ??= new CloningExpressionVisitor(); + _cloningExpressionVisitor ??= new CloningExpressionVisitor(_sqlAliasManager); return (SelectExpression)_cloningExpressionVisitor.Visit(this); } - /// - /// Creates a new object that is a copy of the current instance. - /// - /// The cloning expression for further visitation of nested nodes. - /// A new object that is a copy of this instance. - public override TableExpressionBase Clone(ExpressionVisitor cloningExpressionVisitor) + /// + public override TableExpressionBase Clone(string? alias, ExpressionVisitor cloningExpressionVisitor) { var newProjectionMappings = new Dictionary(_projectionMapping.Count); foreach (var (projectionMember, value) in _projectionMapping) @@ -4364,10 +4370,7 @@ public override TableExpressionBase Clone(ExpressionVisitor cloningExpressionVis // Since we are cloning we need to generate new table references // In other cases (like VisitChildren), we just reuse the same table references and update the SelectExpression inside it. // We initially assign old SelectExpression in table references and later update it once we construct clone - var newTableReferences = _tableReferences.Select(e => new TableReferenceExpression(this, e.Alias)).ToList(); - Check.DebugAssert( - newTables.Select(GetAliasFromTableExpressionBase).SequenceEqual(newTableReferences.Select(e => e.Alias)), - "Alias of updated tables must match the old tables."); + var newTableReferences = newTables.Select(t => new TableReferenceExpression(this, t.UnwrapJoin().Alias!)).ToList(); var predicate = (SqlExpression?)cloningExpressionVisitor.Visit(Predicate); var newGroupBy = _groupBy.Select(cloningExpressionVisitor.Visit) @@ -4379,8 +4382,7 @@ public override TableExpressionBase Clone(ExpressionVisitor cloningExpressionVis var limit = (SqlExpression?)cloningExpressionVisitor.Visit(Limit); var newSelectExpression = new SelectExpression( - Alias, newProjections, newTables, newTableReferences, newGroupBy, newOrderings, - GetAnnotations()) + alias, newProjections, newTables, newTableReferences, newGroupBy, newOrderings, GetAnnotations(), _sqlAliasManager) { Predicate = predicate, Having = havingExpression, @@ -4388,7 +4390,6 @@ public override TableExpressionBase Clone(ExpressionVisitor cloningExpressionVis Limit = limit, IsDistinct = IsDistinct, Tags = Tags, - _usedAliases = _usedAliases.ToHashSet(), _projectionMapping = newProjectionMappings, _mutable = _mutable }; @@ -4408,6 +4409,10 @@ public override TableExpressionBase Clone(ExpressionVisitor cloningExpressionVis tableReference.UpdateTableReference(this, newSelectExpression); } + Check.DebugAssert( + newTables.Select(GetAliasFromTableExpressionBase).SequenceEqual(newTableReferences.Select(e => e.Alias)), + "Alias of updated tables must match the old tables."); + // Now that we have SelectExpression, we visit all components and update table references inside columns newSelectExpression = (SelectExpression)new ColumnExpressionReplacingExpressionVisitor( this, newSelectExpression._tableReferences).Visit(newSelectExpression); @@ -4425,7 +4430,7 @@ public override TableExpressionBase Clone(ExpressionVisitor cloningExpressionVis public SelectExpression PruneToplevel(SqlTreePruner pruningVisitor) { // TODO: This doesn't belong in pruning, take a deeper look at how we manage TPC etc. - var select = (SelectExpression)new TpcTableExpressionRemovingExpressionVisitor(_usedAliases).Visit(this); + var select = (SelectExpression)new TpcTableExpressionRemovingExpressionVisitor(_sqlAliasManager).Visit(this); select.Prune(pruningVisitor, pruneProjection: false); return select; } @@ -4520,9 +4525,6 @@ public void Prune(SqlTreePruner pruningVisitor, bool pruneProjection) { _tables.RemoveAt(i); _tableReferences.RemoveAt(i); -#if DEBUG - pruningVisitor.RemovedAliases.Add(wrappedTable.Alias!); -#endif continue; } @@ -4536,6 +4538,28 @@ public void Prune(SqlTreePruner pruningVisitor, bool pruneProjection) } } + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + [EntityFrameworkInternal] + public void ChangeTableAlias(int tableIndex, string newAlias, HashSet visitedTableReferences) + { + // TableReferenceExpression instances can (currently) be shared by multiple SelectExpression instances in the + // same tree. We don't want to the same one multiple times, so we track the ones we already visited. + // This will all go away soon as we get rid of TableReferenceExpression altogether. + var tableReference = _tableReferences[tableIndex]; + if (!visitedTableReferences.Add(tableReference)) + { + return; + } + + _tables[tableIndex].UnwrapJoin().Alias = newAlias; + tableReference.Alias = newAlias; + } + private Dictionary ConvertProjectionMappingToClientProjections( Dictionary projectionMapping, bool makeNullable = false) @@ -4654,12 +4678,11 @@ private static ConcreteColumnExpression CreateColumnExpression( private ConcreteColumnExpression GenerateOuterColumn( TableReferenceExpression tableReferenceExpression, SqlExpression projection, - string? alias = null, - bool assignUniqueTableAlias = true) + string? alias = null) { // TODO: Add check if we can add projection in subquery to generate out column // Subquery having Distinct or GroupBy can block it. - var index = AddToProjection(projection, alias, assignUniqueTableAlias); + var index = AddToProjection(projection, alias); return new ConcreteColumnExpression(_projection[index], tableReferenceExpression); } @@ -4677,40 +4700,10 @@ private void AddTable(TableExpressionBase tableExpressionBase, TableReferenceExp GetAliasFromTableExpressionBase(tableExpressionBase), tableReferenceExpression.Alias, StringComparison.Ordinal), "Alias of table and table reference should be the same."); - var uniqueAlias = GenerateUniqueAlias(_usedAliases, tableReferenceExpression.Alias); - // We unwrap here since alias are not assigned to wrapper expressions - UnwrapJoinExpression(tableExpressionBase).Alias = uniqueAlias; - tableReferenceExpression.Alias = uniqueAlias; - - tableExpressionBase = (TableExpressionBase)new AliasUniquifier(_usedAliases).Visit(tableExpressionBase); _tables.Add(tableExpressionBase); _tableReferences.Add(tableReferenceExpression); } - /// - /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to - /// the same compatibility standards as public APIs. It may be changed or removed without notice in - /// any release. You should only use it directly in your code with extreme caution and knowing that - /// doing so can result in application failures when updating to a new Entity Framework Core release. - /// - [EntityFrameworkInternal] - public SqlExpression AssignUniqueAliases(SqlExpression expression) - => (SqlExpression)new AliasUniquifier(_usedAliases).Visit(expression); - - private static string GenerateUniqueAlias(HashSet usedAliases, string currentAlias) - { - var counter = 0; - var baseAlias = currentAlias[..1]; - - while (usedAliases.Contains(currentAlias)) - { - currentAlias = baseAlias + counter++; - } - - usedAliases.Add(currentAlias); - return currentAlias; - } - /// protected override Expression VisitChildren(ExpressionVisitor visitor) => VisitChildren(visitor, updateColumns: true); @@ -4881,7 +4874,7 @@ private Expression VisitChildren(ExpressionVisitor visitor, bool updateColumns) { var newTableReferences = _tableReferences.ToList(); var newSelectExpression = new SelectExpression( - Alias, newProjections, newTables, newTableReferences, newGroupBy, newOrderings, GetAnnotations()) + Alias, newProjections, newTables, newTableReferences, newGroupBy, newOrderings, GetAnnotations(), _sqlAliasManager) { _clientProjections = _clientProjections, _projectionMapping = _projectionMapping, @@ -4891,7 +4884,6 @@ private Expression VisitChildren(ExpressionVisitor visitor, bool updateColumns) Limit = limit, IsDistinct = IsDistinct, Tags = Tags, - _usedAliases = _usedAliases, _mutable = false }; foreach (var kvp in newTpcDiscriminatorValues) @@ -5021,7 +5013,8 @@ public SelectExpression Update( // tracking from calling code. var newTableReferences = _tableReferences.ToList(); var newSelectExpression = new SelectExpression( - Alias, projections.ToList(), tables.ToList(), newTableReferences, groupBy.ToList(), orderings.ToList(), GetAnnotations()) + Alias, projections.ToList(), tables.ToList(), newTableReferences, groupBy.ToList(), orderings.ToList(), GetAnnotations(), + _sqlAliasManager) { _projectionMapping = projectionMapping, _clientProjections = _clientProjections.ToList(), diff --git a/src/EFCore.Relational/Query/SqlExpressions/SetOperationBase.cs b/src/EFCore.Relational/Query/SqlExpressions/SetOperationBase.cs index f59e28c18b4..aa324cf1c97 100644 --- a/src/EFCore.Relational/Query/SqlExpressions/SetOperationBase.cs +++ b/src/EFCore.Relational/Query/SqlExpressions/SetOperationBase.cs @@ -87,12 +87,6 @@ public override string? Alias /// This expression if no children changed, or an expression with the updated children. public abstract SetOperationBase Update(SelectExpression source1, SelectExpression source2); - /// - public override TableExpressionBase Clone(ExpressionVisitor cloningExpressionVisitor) - // Set operations necessary contain other TableExpressionBase, which will get cloned; this will cause our VisitChildren to create a - // new copy of this SetOperationBase by calling Update. - => (TableExpressionBase)VisitChildren(cloningExpressionVisitor); - /// public override bool Equals(object? obj) => obj != null diff --git a/src/EFCore.Relational/Query/SqlExpressions/TableExpression.cs b/src/EFCore.Relational/Query/SqlExpressions/TableExpression.cs index f65b0eeeb0b..5a1ad00fa4c 100644 --- a/src/EFCore.Relational/Query/SqlExpressions/TableExpression.cs +++ b/src/EFCore.Relational/Query/SqlExpressions/TableExpression.cs @@ -15,13 +15,13 @@ namespace Microsoft.EntityFrameworkCore.Query.SqlExpressions; /// public sealed class TableExpression : TableExpressionBase, ITableBasedExpression { - internal TableExpression(ITableBase table) - : this(table, annotations: null) + internal TableExpression(string alias, ITableBase table) + : this(alias, table, annotations: null) { } - private TableExpression(ITableBase table, IEnumerable? annotations) - : base(alias: table.Name[..1].ToLowerInvariant(), annotations) + private TableExpression(string alias, ITableBase table, IEnumerable? annotations) + : base(alias, annotations) { Name = table.Name; Schema = table.Schema; @@ -31,12 +31,8 @@ private TableExpression(ITableBase table, IEnumerable? annotations) /// /// The alias assigned to this table source. /// - [NotNull] - public override string? Alias - { - get => base.Alias!; - internal set => base.Alias = value; - } + public override string Alias + => base.Alias!; /// /// The name of the table or view. @@ -55,7 +51,7 @@ public override string? Alias /// protected override TableExpressionBase CreateWithAnnotations(IEnumerable annotations) - => new TableExpression(Table, annotations) { Alias = Alias }; + => new TableExpression(Alias, Table, annotations); /// ITableBase ITableBasedExpression.Table @@ -76,8 +72,8 @@ protected override void Print(ExpressionPrinter expressionPrinter) } /// - public override TableExpressionBase Clone(ExpressionVisitor cloningExpressionVisitor) - => CreateWithAnnotations(GetAnnotations()); + public override TableExpressionBase Clone(string? alias, ExpressionVisitor cloningExpressionVisitor) + => new TableExpression(alias!, Table, GetAnnotations()); /// public override bool Equals(object? obj) diff --git a/src/EFCore.Relational/Query/SqlExpressions/TableExpressionBase.cs b/src/EFCore.Relational/Query/SqlExpressions/TableExpressionBase.cs index 73f85eead62..19a4690521e 100644 --- a/src/EFCore.Relational/Query/SqlExpressions/TableExpressionBase.cs +++ b/src/EFCore.Relational/Query/SqlExpressions/TableExpressionBase.cs @@ -58,9 +58,10 @@ public sealed override ExpressionType NodeType /// /// Creates a new object that is a copy of the current instance. /// + /// The alias to be used by the cloned table. /// The cloning expression for further visitation of nested nodes. /// A new object that is a copy of this instance. - public abstract TableExpressionBase Clone(ExpressionVisitor cloningExpressionVisitor); + public abstract TableExpressionBase Clone(string? alias, ExpressionVisitor cloningExpressionVisitor); /// /// Creates a printable string representation of the given expression using . diff --git a/src/EFCore.Relational/Query/SqlExpressions/TableValuedFunctionExpression.cs b/src/EFCore.Relational/Query/SqlExpressions/TableValuedFunctionExpression.cs index ad58e17ce57..0ef81909162 100644 --- a/src/EFCore.Relational/Query/SqlExpressions/TableValuedFunctionExpression.cs +++ b/src/EFCore.Relational/Query/SqlExpressions/TableValuedFunctionExpression.cs @@ -19,11 +19,12 @@ public class TableValuedFunctionExpression : TableExpressionBase, ITableBasedExp /// /// Creates a new instance of the class. /// + /// An alias for the table. /// The associated this function. /// The arguments of the function. - public TableValuedFunctionExpression(IStoreFunction storeFunction, IReadOnlyList arguments) + public TableValuedFunctionExpression(string alias, IStoreFunction storeFunction, IReadOnlyList arguments) : this( - storeFunction.Name[..1].ToLowerInvariant(), + alias, storeFunction.Name, storeFunction.Schema, storeFunction.IsBuiltIn, @@ -36,21 +37,7 @@ public TableValuedFunctionExpression(IStoreFunction storeFunction, IReadOnlyList /// /// Creates a new instance of the class. /// - /// The name of the function. - /// The arguments of the function. - /// A collection of annotations associated with this expression. - public TableValuedFunctionExpression( - string name, - IReadOnlyList arguments, - IEnumerable? annotations = null) - : this(name[..1].ToLowerInvariant(), name, schema: null, builtIn: true, arguments, annotations) - { - } - - /// - /// Creates a new instance of the class. - /// - /// A string alias for the table source. + /// An alias for the table. /// The name of the function. /// The arguments of the function. /// A collection of annotations associated with this expression. @@ -144,7 +131,7 @@ public virtual TableValuedFunctionExpression Update(IReadOnlyList : this; /// - public override TableExpressionBase Clone(ExpressionVisitor cloningExpressionVisitor) + public override TableExpressionBase Clone(string? alias, ExpressionVisitor cloningExpressionVisitor) { var newArguments = new SqlExpression[Arguments.Count]; for (var i = 0; i < newArguments.Length; i++) @@ -153,8 +140,8 @@ public override TableExpressionBase Clone(ExpressionVisitor cloningExpressionVis } var newTableValuedFunctionExpression = StoreFunction is null - ? new TableValuedFunctionExpression(Alias, Name, newArguments) - : new TableValuedFunctionExpression(StoreFunction, newArguments) { Alias = Alias }; + ? new TableValuedFunctionExpression(alias!, Name, newArguments) + : new TableValuedFunctionExpression(alias!, StoreFunction, newArguments); foreach (var annotation in GetAnnotations()) { diff --git a/src/EFCore.Relational/Query/SqlExpressions/UnionExpression.cs b/src/EFCore.Relational/Query/SqlExpressions/UnionExpression.cs index eb4c4515e5e..879fb73f8cd 100644 --- a/src/EFCore.Relational/Query/SqlExpressions/UnionExpression.cs +++ b/src/EFCore.Relational/Query/SqlExpressions/UnionExpression.cs @@ -65,6 +65,14 @@ public override UnionExpression Update(SelectExpression source1, SelectExpressio protected override TableExpressionBase CreateWithAnnotations(IEnumerable annotations) => new UnionExpression(Alias, Source1, Source2, IsDistinct, annotations); + /// + public override TableExpressionBase Clone(string? alias, ExpressionVisitor cloningExpressionVisitor) + => new UnionExpression( + alias!, + (SelectExpression)cloningExpressionVisitor.Visit(Source1), + (SelectExpression)cloningExpressionVisitor.Visit(Source2), + IsDistinct); + /// protected override void Print(ExpressionPrinter expressionPrinter) { diff --git a/src/EFCore.Relational/Query/SqlExpressions/ValuesExpression.cs b/src/EFCore.Relational/Query/SqlExpressions/ValuesExpression.cs index d070e68d7cf..6110b0d4ae0 100644 --- a/src/EFCore.Relational/Query/SqlExpressions/ValuesExpression.cs +++ b/src/EFCore.Relational/Query/SqlExpressions/ValuesExpression.cs @@ -79,7 +79,7 @@ protected override TableExpressionBase CreateWithAnnotations(IEnumerable new ValuesExpression(Alias, RowValues, ColumnNames, annotations); /// - public override TableExpressionBase Clone(ExpressionVisitor cloningExpressionVisitor) + public override TableExpressionBase Clone(string? alias, ExpressionVisitor cloningExpressionVisitor) { var newRowValues = new RowValueExpression[RowValues.Count]; @@ -88,7 +88,7 @@ public override TableExpressionBase Clone(ExpressionVisitor cloningExpressionVis newRowValues[i] = (RowValueExpression)cloningExpressionVisitor.Visit(RowValues[i]); } - return new ValuesExpression(Alias, newRowValues, ColumnNames, GetAnnotations()); + return new ValuesExpression(alias, newRowValues, ColumnNames, GetAnnotations()); } /// diff --git a/src/EFCore.Relational/Query/SqlTreePruner.cs b/src/EFCore.Relational/Query/SqlTreePruner.cs index 007b70e0add..4151c2abb6a 100644 --- a/src/EFCore.Relational/Query/SqlTreePruner.cs +++ b/src/EFCore.Relational/Query/SqlTreePruner.cs @@ -24,12 +24,6 @@ public class SqlTreePruner : ExpressionVisitor [EntityFrameworkInternal] public virtual IReadOnlyDictionary> ReferencedColumnMap => _referencedColumnMap; - /// - /// Used for extra verification for DEBUG only - /// - [EntityFrameworkInternal] - public virtual List RemovedAliases { get; private set; } = null!; - /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in @@ -55,18 +49,18 @@ protected override Expression VisitExtension(Expression node) { case ShapedQueryExpression shapedQueryExpression: return shapedQueryExpression.Update( - PruneTopLevelSelect((SelectExpression)shapedQueryExpression.QueryExpression), + ((SelectExpression)shapedQueryExpression.QueryExpression).PruneToplevel(this), Visit(shapedQueryExpression.ShaperExpression)); case RelationalSplitCollectionShaperExpression relationalSplitCollectionShaperExpression: return relationalSplitCollectionShaperExpression.Update( relationalSplitCollectionShaperExpression.ParentIdentifier, relationalSplitCollectionShaperExpression.ChildIdentifier, - PruneTopLevelSelect(relationalSplitCollectionShaperExpression.SelectExpression), + relationalSplitCollectionShaperExpression.SelectExpression.PruneToplevel(this), Visit(relationalSplitCollectionShaperExpression.InnerShaper)); case DeleteExpression deleteExpression: - return deleteExpression.Update(PruneTopLevelSelect(deleteExpression.SelectExpression)); + return deleteExpression.Update(deleteExpression.SelectExpression.PruneToplevel(this)); case UpdateExpression updateExpression: // Note that we must visit the setters before we visit the select, since the setters can reference tables inside it. @@ -74,7 +68,7 @@ protected override Expression VisitExtension(Expression node) .Select(e => e with { Value = (SqlExpression)Visit(e.Value) }) .ToList(); return updateExpression.Update( - PruneTopLevelSelect(updateExpression.SelectExpression), + updateExpression.SelectExpression.PruneToplevel(this), visitedSetters); // The following remaining cases deal with recursive visitation (i.e. non-top-level things) @@ -141,17 +135,4 @@ void RegisterTable(TableExpressionBase table, ColumnExpression column) } } } - - private SelectExpression PruneTopLevelSelect(SelectExpression select) - { -#if DEBUG - RemovedAliases = []; -#endif - select = select.PruneToplevel(this); -#if DEBUG - select.RemovedAliases = RemovedAliases; -#endif - - return select; - } } diff --git a/src/EFCore.SqlServer/Query/Internal/SqlServerOpenJsonExpression.cs b/src/EFCore.SqlServer/Query/Internal/SqlServerOpenJsonExpression.cs index be93c8485cd..a72e17e7bc3 100644 --- a/src/EFCore.SqlServer/Query/Internal/SqlServerOpenJsonExpression.cs +++ b/src/EFCore.SqlServer/Query/Internal/SqlServerOpenJsonExpression.cs @@ -155,10 +155,10 @@ public virtual SqlServerOpenJsonExpression Update( /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// - public override TableExpressionBase Clone(ExpressionVisitor cloningExpressionVisitor) + public override TableExpressionBase Clone(string? alias, ExpressionVisitor cloningExpressionVisitor) { var newJsonExpression = (SqlExpression)cloningExpressionVisitor.Visit(JsonExpression); - var clone = new SqlServerOpenJsonExpression(Alias, newJsonExpression, Path, ColumnInfos); + var clone = new SqlServerOpenJsonExpression(alias!, newJsonExpression, Path, ColumnInfos); foreach (var annotation in GetAnnotations()) { diff --git a/src/EFCore.SqlServer/Query/Internal/SqlServerQueryTranslationPostprocessor.cs b/src/EFCore.SqlServer/Query/Internal/SqlServerQueryTranslationPostprocessor.cs index 47e231c1982..a9e42f31cce 100644 --- a/src/EFCore.SqlServer/Query/Internal/SqlServerQueryTranslationPostprocessor.cs +++ b/src/EFCore.SqlServer/Query/Internal/SqlServerQueryTranslationPostprocessor.cs @@ -29,7 +29,7 @@ public class SqlServerQueryTranslationPostprocessor : RelationalQueryTranslation public SqlServerQueryTranslationPostprocessor( QueryTranslationPostprocessorDependencies dependencies, RelationalQueryTranslationPostprocessorDependencies relationalDependencies, - QueryCompilationContext queryCompilationContext, + SqlServerQueryCompilationContext queryCompilationContext, IRelationalTypeMappingSource typeMappingSource) : base(dependencies, relationalDependencies, queryCompilationContext) { diff --git a/src/EFCore.SqlServer/Query/Internal/SqlServerQueryTranslationPostprocessorFactory.cs b/src/EFCore.SqlServer/Query/Internal/SqlServerQueryTranslationPostprocessorFactory.cs index b08e7487ee0..e5745ecce75 100644 --- a/src/EFCore.SqlServer/Query/Internal/SqlServerQueryTranslationPostprocessorFactory.cs +++ b/src/EFCore.SqlServer/Query/Internal/SqlServerQueryTranslationPostprocessorFactory.cs @@ -46,5 +46,6 @@ public SqlServerQueryTranslationPostprocessorFactory( /// doing so can result in application failures when updating to a new Entity Framework Core release. /// public virtual QueryTranslationPostprocessor Create(QueryCompilationContext queryCompilationContext) - => new SqlServerQueryTranslationPostprocessor(Dependencies, RelationalDependencies, queryCompilationContext, _typeMappingSource); + => new SqlServerQueryTranslationPostprocessor( + Dependencies, RelationalDependencies, (SqlServerQueryCompilationContext)queryCompilationContext, _typeMappingSource); } diff --git a/src/EFCore.SqlServer/Query/Internal/SqlServerQueryableMethodTranslatingExpressionVisitor.cs b/src/EFCore.SqlServer/Query/Internal/SqlServerQueryableMethodTranslatingExpressionVisitor.cs index fdcebb23985..4be55ec472a 100644 --- a/src/EFCore.SqlServer/Query/Internal/SqlServerQueryableMethodTranslatingExpressionVisitor.cs +++ b/src/EFCore.SqlServer/Query/Internal/SqlServerQueryableMethodTranslatingExpressionVisitor.cs @@ -81,7 +81,10 @@ protected override Expression VisitExtension(Expression extensionExpression) { if (extensionExpression is TemporalQueryRootExpression queryRootExpression) { - var selectExpression = RelationalDependencies.SqlExpressionFactory.Select(queryRootExpression.EntityType); +#pragma warning disable EF1001 + var selectExpression = RelationalDependencies.SqlExpressionFactory.Select( + queryRootExpression.EntityType, _queryCompilationContext.SqlAliasManager); +#pragma warning restore EF1001 Func annotationApplyingFunc = queryRootExpression switch { TemporalAllQueryRootExpression => te => te @@ -268,6 +271,7 @@ protected override Expression VisitExtension(Expression extensionExpression) #pragma warning disable EF1001 // Internal EF Core API usage. var selectExpression = new SelectExpression( + _queryCompilationContext.SqlAliasManager, openJsonExpression, columnName: "value", columnType: elementClrType, @@ -325,7 +329,9 @@ protected override ShapedQueryExpression TransformJsonQueryToTable(JsonQueryExpr // Calculate the table alias for the OPENJSON expression based on the last named path segment // (or the JSON column name if there are none) var lastNamedPathSegment = jsonQueryExpression.Path.LastOrDefault(ps => ps.PropertyName is not null); - var tableAlias = char.ToLowerInvariant((lastNamedPathSegment.PropertyName ?? jsonQueryExpression.JsonColumn.Name)[0]).ToString(); + var tableAlias = + _queryCompilationContext.SqlAliasManager.GenerateTableAlias( + lastNamedPathSegment.PropertyName ?? jsonQueryExpression.JsonColumn.Name); // We now add all of projected entity's the properties and navigations into the OPENJSON's WITH clause. Note that navigations // get AS JSON, which projects out the JSON sub-document for them as text, which can be further navigated into. @@ -371,6 +377,7 @@ protected override ShapedQueryExpression TransformJsonQueryToTable(JsonQueryExpr #pragma warning disable EF1001 // Internal EF Core API usage. var selectExpression = new SelectExpression( + _queryCompilationContext.SqlAliasManager, jsonQueryExpression, openJsonExpression, "key", @@ -447,7 +454,9 @@ static IEnumerable GetAllNavigationsInHierarchy(IEntityType entityT && projectionColumnTable == openJsonExpression) { var newInExpression = _sqlExpressionFactory.In(translatedItem, parameter); - return source.UpdateQueryExpression(_sqlExpressionFactory.Select(newInExpression)); +#pragma warning disable EF1001 + return source.UpdateQueryExpression(_sqlExpressionFactory.Select(newInExpression, _queryCompilationContext.SqlAliasManager)); +#pragma warning restore EF1001 } return translatedSource; @@ -530,7 +539,10 @@ static IEnumerable GetAllNavigationsInHierarchy(IEntityType entityT projection.TypeMapping, projectionColumn.IsNullable); - return source.UpdateQueryExpression(_sqlExpressionFactory.Select(translation)); +#pragma warning disable EF1001 + return source.UpdateQueryExpression( + _sqlExpressionFactory.Select(translation, _queryCompilationContext.SqlAliasManager)); +#pragma warning restore EF1001 } } } diff --git a/src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryTranslationPostprocessor.cs b/src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryTranslationPostprocessor.cs index e1a77bbd629..fbe2003c77b 100644 --- a/src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryTranslationPostprocessor.cs +++ b/src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryTranslationPostprocessor.cs @@ -25,7 +25,7 @@ public class SqliteQueryTranslationPostprocessor : RelationalQueryTranslationPos public SqliteQueryTranslationPostprocessor( QueryTranslationPostprocessorDependencies dependencies, RelationalQueryTranslationPostprocessorDependencies relationalDependencies, - QueryCompilationContext queryCompilationContext) + RelationalQueryCompilationContext queryCompilationContext) : base(dependencies, relationalDependencies, queryCompilationContext) { } diff --git a/src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryTranslationPostprocessorFactory.cs b/src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryTranslationPostprocessorFactory.cs index d9e48a29d72..6699738c1d4 100644 --- a/src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryTranslationPostprocessorFactory.cs +++ b/src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryTranslationPostprocessorFactory.cs @@ -45,5 +45,5 @@ public virtual QueryTranslationPostprocessor Create(QueryCompilationContext quer => new SqliteQueryTranslationPostprocessor( Dependencies, RelationalDependencies, - queryCompilationContext); + (RelationalQueryCompilationContext)queryCompilationContext); } diff --git a/src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryableMethodTranslatingExpressionVisitor.cs b/src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryableMethodTranslatingExpressionVisitor.cs index f44cd4645ea..99c085280f7 100644 --- a/src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryableMethodTranslatingExpressionVisitor.cs +++ b/src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryableMethodTranslatingExpressionVisitor.cs @@ -19,6 +19,7 @@ public class SqliteQueryableMethodTranslatingExpressionVisitor : RelationalQuery { private readonly IRelationalTypeMappingSource _typeMappingSource; private readonly SqliteSqlExpressionFactory _sqlExpressionFactory; + private readonly SqlAliasManager _sqlAliasManager; private readonly bool _areJsonFunctionsSupported; /// @@ -30,11 +31,12 @@ public class SqliteQueryableMethodTranslatingExpressionVisitor : RelationalQuery public SqliteQueryableMethodTranslatingExpressionVisitor( QueryableMethodTranslatingExpressionVisitorDependencies dependencies, RelationalQueryableMethodTranslatingExpressionVisitorDependencies relationalDependencies, - QueryCompilationContext queryCompilationContext) + RelationalQueryCompilationContext queryCompilationContext) : base(dependencies, relationalDependencies, queryCompilationContext) { _typeMappingSource = relationalDependencies.TypeMappingSource; _sqlExpressionFactory = (SqliteSqlExpressionFactory)relationalDependencies.SqlExpressionFactory; + _sqlAliasManager = queryCompilationContext.SqlAliasManager; _areJsonFunctionsSupported = new Version(new SqliteConnection().ServerVersion) >= new Version(3, 38); } @@ -51,6 +53,7 @@ protected SqliteQueryableMethodTranslatingExpressionVisitor( { _typeMappingSource = parentVisitor._typeMappingSource; _sqlExpressionFactory = parentVisitor._sqlExpressionFactory; + _sqlAliasManager = parentVisitor._sqlAliasManager; _areJsonFunctionsSupported = parentVisitor._areJsonFunctionsSupported; } @@ -94,7 +97,9 @@ protected override QueryableMethodTranslatingExpressionVisitor CreateSubqueryVis typeof(int)), _sqlExpressionFactory.Constant(0)); - return source.UpdateQueryExpression(_sqlExpressionFactory.Select(translation)); +#pragma warning disable EF1001 + return source.UpdateQueryExpression(_sqlExpressionFactory.Select(translation, _sqlAliasManager)); +#pragma warning restore EF1001 } return base.TranslateAny(source, predicate); @@ -189,7 +194,9 @@ protected override QueryableMethodTranslatingExpressionVisitor CreateSubqueryVis argumentsPropagateNullability: new[] { true }, typeof(int)); - return source.UpdateQueryExpression(_sqlExpressionFactory.Select(translation)); +#pragma warning disable EF1001 + return source.UpdateQueryExpression(_sqlExpressionFactory.Select(translation, _sqlAliasManager)); +#pragma warning restore EF1001 } return base.TranslateCount(source, predicate); @@ -227,6 +234,7 @@ protected override QueryableMethodTranslatingExpressionVisitor CreateSubqueryVis #pragma warning disable EF1001 // Internal EF Core API usage. var selectExpression = new SelectExpression( + _sqlAliasManager, jsonEachExpression, columnName: "value", columnType: elementClrType, @@ -288,7 +296,7 @@ protected override ShapedQueryExpression TransformJsonQueryToTable(JsonQueryExpr // Calculate the table alias for the json_each expression based on the last named path segment // (or the JSON column name if there are none) var lastNamedPathSegment = jsonQueryExpression.Path.LastOrDefault(ps => ps.PropertyName is not null); - var tableAlias = char.ToLowerInvariant((lastNamedPathSegment.PropertyName ?? jsonQueryExpression.JsonColumn.Name)[0]).ToString(); + var tableAlias = _sqlAliasManager.GenerateTableAlias(lastNamedPathSegment.PropertyName ?? jsonQueryExpression.JsonColumn.Name); // Handling a non-primitive JSON array is complicated on SQLite; unlike SQL Server OPENJSON and PostgreSQL jsonb_to_recordset, // SQLite's json_each can only project elements of the array, and not properties within those elements. For example: @@ -312,6 +320,7 @@ protected override ShapedQueryExpression TransformJsonQueryToTable(JsonQueryExpr #pragma warning disable EF1001 // Internal EF Core API usage. var selectExpression = new SelectExpression( + _sqlAliasManager, jsonQueryExpression, jsonEachExpression, "key", @@ -390,6 +399,7 @@ protected override ShapedQueryExpression TransformJsonQueryToTable(JsonQueryExpr #pragma warning disable EF1001 // Internal EF Core API usage. var newOuterSelectExpression = new SelectExpression( + _sqlAliasManager, jsonQueryExpression, subquery, "key", @@ -487,7 +497,9 @@ static IEnumerable GetAllNavigationsInHierarchy(IEntityType entityT translation, _sqlExpressionFactory, projectionColumn.TypeMapping, projectionColumn.IsNullable); } - return source.UpdateQueryExpression(_sqlExpressionFactory.Select(translation)); +#pragma warning disable EF1001 + return source.UpdateQueryExpression(_sqlExpressionFactory.Select(translation, _sqlAliasManager)); +#pragma warning restore EF1001 } } diff --git a/src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryableMethodTranslatingExpressionVisitorFactory.cs b/src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryableMethodTranslatingExpressionVisitorFactory.cs index 6c31cedd4c0..5cb7e2dab7a 100644 --- a/src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryableMethodTranslatingExpressionVisitorFactory.cs +++ b/src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryableMethodTranslatingExpressionVisitorFactory.cs @@ -42,5 +42,6 @@ public SqliteQueryableMethodTranslatingExpressionVisitorFactory( /// doing so can result in application failures when updating to a new Entity Framework Core release. /// public virtual QueryableMethodTranslatingExpressionVisitor Create(QueryCompilationContext queryCompilationContext) - => new SqliteQueryableMethodTranslatingExpressionVisitor(Dependencies, RelationalDependencies, queryCompilationContext); + => new SqliteQueryableMethodTranslatingExpressionVisitor( + Dependencies, RelationalDependencies, (RelationalQueryCompilationContext)queryCompilationContext); } diff --git a/src/EFCore.Sqlite.Core/Query/SqlExpressions/Internal/JsonEachExpression.cs b/src/EFCore.Sqlite.Core/Query/SqlExpressions/Internal/JsonEachExpression.cs index 4e3b6307faa..d47b1e8d314 100644 --- a/src/EFCore.Sqlite.Core/Query/SqlExpressions/Internal/JsonEachExpression.cs +++ b/src/EFCore.Sqlite.Core/Query/SqlExpressions/Internal/JsonEachExpression.cs @@ -129,10 +129,10 @@ public virtual JsonEachExpression Update( /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// - public override TableExpressionBase Clone(ExpressionVisitor cloningExpressionVisitor) + public override TableExpressionBase Clone(string? alias, ExpressionVisitor cloningExpressionVisitor) { var newJsonExpression = (SqlExpression)cloningExpressionVisitor.Visit(JsonExpression); - var clone = new JsonEachExpression(Alias, newJsonExpression, Path); + var clone = new JsonEachExpression(alias!, newJsonExpression, Path); foreach (var annotation in GetAnnotations()) { diff --git a/test/EFCore.SqlServer.FunctionalTests/BulkUpdates/ComplexTypeBulkUpdatesSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/BulkUpdates/ComplexTypeBulkUpdatesSqlServerTest.cs index d37d944e87f..1042a432aab 100644 --- a/test/EFCore.SqlServer.FunctionalTests/BulkUpdates/ComplexTypeBulkUpdatesSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/BulkUpdates/ComplexTypeBulkUpdatesSqlServerTest.cs @@ -197,20 +197,20 @@ public override async Task Update_complex_type_to_another_database_complex_type_ """ @__p_0='1' -UPDATE [c] -SET [c].[ShippingAddress_AddressLine1] = [t].[BillingAddress_AddressLine1], - [c].[ShippingAddress_AddressLine2] = [t].[BillingAddress_AddressLine2], - [c].[ShippingAddress_Tags] = [t].[BillingAddress_Tags], - [c].[ShippingAddress_ZipCode] = [t].[BillingAddress_ZipCode], - [c].[ShippingAddress_Country_Code] = [t].[ShippingAddress_Country_Code], - [c].[ShippingAddress_Country_FullName] = [t].[ShippingAddress_Country_FullName] -FROM [Customer] AS [c] +UPDATE [c0] +SET [c0].[ShippingAddress_AddressLine1] = [t].[BillingAddress_AddressLine1], + [c0].[ShippingAddress_AddressLine2] = [t].[BillingAddress_AddressLine2], + [c0].[ShippingAddress_Tags] = [t].[BillingAddress_Tags], + [c0].[ShippingAddress_ZipCode] = [t].[BillingAddress_ZipCode], + [c0].[ShippingAddress_Country_Code] = [t].[ShippingAddress_Country_Code], + [c0].[ShippingAddress_Country_FullName] = [t].[ShippingAddress_Country_FullName] +FROM [Customer] AS [c0] INNER JOIN ( - SELECT [c0].[Id], [c0].[BillingAddress_AddressLine1], [c0].[BillingAddress_AddressLine2], [c0].[BillingAddress_Tags], [c0].[BillingAddress_ZipCode], [c0].[ShippingAddress_Country_Code], [c0].[ShippingAddress_Country_FullName] - FROM [Customer] AS [c0] - ORDER BY [c0].[Id] + SELECT [c].[Id], [c].[BillingAddress_AddressLine1], [c].[BillingAddress_AddressLine2], [c].[BillingAddress_Tags], [c].[BillingAddress_ZipCode], [c].[ShippingAddress_Country_Code], [c].[ShippingAddress_Country_FullName] + FROM [Customer] AS [c] + ORDER BY [c].[Id] OFFSET @__p_0 ROWS -) AS [t] ON [c].[Id] = [t].[Id] +) AS [t] ON [c0].[Id] = [t].[Id] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/BulkUpdates/NorthwindBulkUpdatesSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/BulkUpdates/NorthwindBulkUpdatesSqlServerTest.cs index 46b7c057c93..188c79a685f 100644 --- a/test/EFCore.SqlServer.FunctionalTests/BulkUpdates/NorthwindBulkUpdatesSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/BulkUpdates/NorthwindBulkUpdatesSqlServerTest.cs @@ -732,16 +732,16 @@ public override async Task Update_Where_Skip_set_constant(bool async) """ @__p_0='4' -UPDATE [c] -SET [c].[ContactName] = N'Updated' -FROM [Customers] AS [c] +UPDATE [c0] +SET [c0].[ContactName] = N'Updated' +FROM [Customers] AS [c0] INNER JOIN ( - SELECT [c0].[CustomerID] - FROM [Customers] AS [c0] - WHERE [c0].[CustomerID] LIKE N'F%' + SELECT [c].[CustomerID] + FROM [Customers] AS [c] + WHERE [c].[CustomerID] LIKE N'F%' ORDER BY (SELECT 1) OFFSET @__p_0 ROWS -) AS [t] ON [c].[CustomerID] = [t].[CustomerID] +) AS [t] ON [c0].[CustomerID] = [t].[CustomerID] """); } @@ -769,16 +769,16 @@ public override async Task Update_Where_Skip_Take_set_constant(bool async) @__p_0='2' @__p_1='4' -UPDATE [c] -SET [c].[ContactName] = N'Updated' -FROM [Customers] AS [c] +UPDATE [c0] +SET [c0].[ContactName] = N'Updated' +FROM [Customers] AS [c0] INNER JOIN ( - SELECT [c0].[CustomerID] - FROM [Customers] AS [c0] - WHERE [c0].[CustomerID] LIKE N'F%' + SELECT [c].[CustomerID] + FROM [Customers] AS [c] + WHERE [c].[CustomerID] LIKE N'F%' ORDER BY (SELECT 1) OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY -) AS [t] ON [c].[CustomerID] = [t].[CustomerID] +) AS [t] ON [c0].[CustomerID] = [t].[CustomerID] """); } @@ -788,14 +788,14 @@ public override async Task Update_Where_OrderBy_set_constant(bool async) AssertExecuteUpdateSql( """ -UPDATE [c] -SET [c].[ContactName] = N'Updated' -FROM [Customers] AS [c] +UPDATE [c0] +SET [c0].[ContactName] = N'Updated' +FROM [Customers] AS [c0] INNER JOIN ( - SELECT [c0].[CustomerID] - FROM [Customers] AS [c0] - WHERE [c0].[CustomerID] LIKE N'F%' -) AS [t] ON [c].[CustomerID] = [t].[CustomerID] + SELECT [c].[CustomerID] + FROM [Customers] AS [c] + WHERE [c].[CustomerID] LIKE N'F%' +) AS [t] ON [c0].[CustomerID] = [t].[CustomerID] """); } @@ -807,16 +807,16 @@ public override async Task Update_Where_OrderBy_Skip_set_constant(bool async) """ @__p_0='4' -UPDATE [c] -SET [c].[ContactName] = N'Updated' -FROM [Customers] AS [c] +UPDATE [c0] +SET [c0].[ContactName] = N'Updated' +FROM [Customers] AS [c0] INNER JOIN ( - SELECT [c0].[CustomerID] - FROM [Customers] AS [c0] - WHERE [c0].[CustomerID] LIKE N'F%' - ORDER BY [c0].[City] + SELECT [c].[CustomerID] + FROM [Customers] AS [c] + WHERE [c].[CustomerID] LIKE N'F%' + ORDER BY [c].[City] OFFSET @__p_0 ROWS -) AS [t] ON [c].[CustomerID] = [t].[CustomerID] +) AS [t] ON [c0].[CustomerID] = [t].[CustomerID] """); } @@ -828,15 +828,15 @@ public override async Task Update_Where_OrderBy_Take_set_constant(bool async) """ @__p_0='4' -UPDATE [c] -SET [c].[ContactName] = N'Updated' -FROM [Customers] AS [c] +UPDATE [c0] +SET [c0].[ContactName] = N'Updated' +FROM [Customers] AS [c0] INNER JOIN ( - SELECT TOP(@__p_0) [c0].[CustomerID] - FROM [Customers] AS [c0] - WHERE [c0].[CustomerID] LIKE N'F%' - ORDER BY [c0].[City] -) AS [t] ON [c].[CustomerID] = [t].[CustomerID] + SELECT TOP(@__p_0) [c].[CustomerID] + FROM [Customers] AS [c] + WHERE [c].[CustomerID] LIKE N'F%' + ORDER BY [c].[City] +) AS [t] ON [c0].[CustomerID] = [t].[CustomerID] """); } @@ -849,16 +849,16 @@ public override async Task Update_Where_OrderBy_Skip_Take_set_constant(bool asyn @__p_0='2' @__p_1='4' -UPDATE [c] -SET [c].[ContactName] = N'Updated' -FROM [Customers] AS [c] +UPDATE [c0] +SET [c0].[ContactName] = N'Updated' +FROM [Customers] AS [c0] INNER JOIN ( - SELECT [c0].[CustomerID] - FROM [Customers] AS [c0] - WHERE [c0].[CustomerID] LIKE N'F%' - ORDER BY [c0].[City] + SELECT [c].[CustomerID] + FROM [Customers] AS [c] + WHERE [c].[CustomerID] LIKE N'F%' + ORDER BY [c].[City] OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY -) AS [t] ON [c].[CustomerID] = [t].[CustomerID] +) AS [t] ON [c0].[CustomerID] = [t].[CustomerID] """); } @@ -871,21 +871,21 @@ public override async Task Update_Where_OrderBy_Skip_Take_Skip_Take_set_constant @__p_0='2' @__p_1='6' -UPDATE [c] -SET [c].[ContactName] = N'Updated' -FROM [Customers] AS [c] +UPDATE [c0] +SET [c0].[ContactName] = N'Updated' +FROM [Customers] AS [c0] INNER JOIN ( SELECT [t].[CustomerID] FROM ( - SELECT [c0].[CustomerID], [c0].[City] - FROM [Customers] AS [c0] - WHERE [c0].[CustomerID] LIKE N'F%' - ORDER BY [c0].[City] + SELECT [c].[CustomerID], [c].[City] + FROM [Customers] AS [c] + WHERE [c].[CustomerID] LIKE N'F%' + ORDER BY [c].[City] OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY ) AS [t] ORDER BY [t].[City] OFFSET @__p_0 ROWS FETCH NEXT @__p_0 ROWS ONLY -) AS [t0] ON [c].[CustomerID] = [t0].[CustomerID] +) AS [t0] ON [c0].[CustomerID] = [t0].[CustomerID] """); } @@ -961,14 +961,14 @@ public override async Task Update_Where_Distinct_set_constant(bool async) AssertExecuteUpdateSql( """ -UPDATE [c] -SET [c].[ContactName] = N'Updated' -FROM [Customers] AS [c] +UPDATE [c0] +SET [c0].[ContactName] = N'Updated' +FROM [Customers] AS [c0] INNER JOIN ( - SELECT DISTINCT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region] - FROM [Customers] AS [c0] - WHERE [c0].[CustomerID] LIKE N'F%' -) AS [t] ON [c].[CustomerID] = [t].[CustomerID] + SELECT DISTINCT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] + FROM [Customers] AS [c] + WHERE [c].[CustomerID] LIKE N'F%' +) AS [t] ON [c0].[CustomerID] = [t].[CustomerID] """); } @@ -1139,18 +1139,18 @@ public override async Task Update_Union_set_constant(bool async) AssertExecuteUpdateSql( """ -UPDATE [c] -SET [c].[ContactName] = N'Updated' -FROM [Customers] AS [c] +UPDATE [c1] +SET [c1].[ContactName] = N'Updated' +FROM [Customers] AS [c1] INNER JOIN ( + SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] + FROM [Customers] AS [c] + WHERE [c].[CustomerID] LIKE N'F%' + UNION SELECT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region] FROM [Customers] AS [c0] - WHERE [c0].[CustomerID] LIKE N'F%' - UNION - SELECT [c1].[CustomerID], [c1].[Address], [c1].[City], [c1].[CompanyName], [c1].[ContactName], [c1].[ContactTitle], [c1].[Country], [c1].[Fax], [c1].[Phone], [c1].[PostalCode], [c1].[Region] - FROM [Customers] AS [c1] - WHERE [c1].[CustomerID] LIKE N'A%' -) AS [t] ON [c].[CustomerID] = [t].[CustomerID] + WHERE [c0].[CustomerID] LIKE N'A%' +) AS [t] ON [c1].[CustomerID] = [t].[CustomerID] """); } @@ -1160,18 +1160,18 @@ public override async Task Update_Concat_set_constant(bool async) AssertExecuteUpdateSql( """ -UPDATE [c] -SET [c].[ContactName] = N'Updated' -FROM [Customers] AS [c] +UPDATE [c1] +SET [c1].[ContactName] = N'Updated' +FROM [Customers] AS [c1] INNER JOIN ( + SELECT [c].[CustomerID] + FROM [Customers] AS [c] + WHERE [c].[CustomerID] LIKE N'F%' + UNION ALL SELECT [c0].[CustomerID] FROM [Customers] AS [c0] - WHERE [c0].[CustomerID] LIKE N'F%' - UNION ALL - SELECT [c1].[CustomerID] - FROM [Customers] AS [c1] - WHERE [c1].[CustomerID] LIKE N'A%' -) AS [t] ON [c].[CustomerID] = [t].[CustomerID] + WHERE [c0].[CustomerID] LIKE N'A%' +) AS [t] ON [c1].[CustomerID] = [t].[CustomerID] """); } @@ -1181,18 +1181,18 @@ public override async Task Update_Except_set_constant(bool async) AssertExecuteUpdateSql( """ -UPDATE [c] -SET [c].[ContactName] = N'Updated' -FROM [Customers] AS [c] +UPDATE [c1] +SET [c1].[ContactName] = N'Updated' +FROM [Customers] AS [c1] INNER JOIN ( + SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] + FROM [Customers] AS [c] + WHERE [c].[CustomerID] LIKE N'F%' + EXCEPT SELECT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region] FROM [Customers] AS [c0] - WHERE [c0].[CustomerID] LIKE N'F%' - EXCEPT - SELECT [c1].[CustomerID], [c1].[Address], [c1].[City], [c1].[CompanyName], [c1].[ContactName], [c1].[ContactTitle], [c1].[Country], [c1].[Fax], [c1].[Phone], [c1].[PostalCode], [c1].[Region] - FROM [Customers] AS [c1] - WHERE [c1].[CustomerID] LIKE N'A%' -) AS [t] ON [c].[CustomerID] = [t].[CustomerID] + WHERE [c0].[CustomerID] LIKE N'A%' +) AS [t] ON [c1].[CustomerID] = [t].[CustomerID] """); } @@ -1202,18 +1202,18 @@ public override async Task Update_Intersect_set_constant(bool async) AssertExecuteUpdateSql( """ -UPDATE [c] -SET [c].[ContactName] = N'Updated' -FROM [Customers] AS [c] +UPDATE [c1] +SET [c1].[ContactName] = N'Updated' +FROM [Customers] AS [c1] INNER JOIN ( + SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] + FROM [Customers] AS [c] + WHERE [c].[CustomerID] LIKE N'F%' + INTERSECT SELECT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region] FROM [Customers] AS [c0] - WHERE [c0].[CustomerID] LIKE N'F%' - INTERSECT - SELECT [c1].[CustomerID], [c1].[Address], [c1].[City], [c1].[CompanyName], [c1].[ContactName], [c1].[ContactTitle], [c1].[Country], [c1].[Fax], [c1].[Phone], [c1].[PostalCode], [c1].[Region] - FROM [Customers] AS [c1] - WHERE [c1].[CustomerID] LIKE N'A%' -) AS [t] ON [c].[CustomerID] = [t].[CustomerID] + WHERE [c0].[CustomerID] LIKE N'A%' +) AS [t] ON [c1].[CustomerID] = [t].[CustomerID] """); } @@ -1389,19 +1389,19 @@ public override async Task Update_Where_SelectMany_subquery_set_null(bool async) AssertExecuteUpdateSql( """ -UPDATE [o] -SET [o].[OrderDate] = NULL -FROM [Orders] AS [o] +UPDATE [o0] +SET [o0].[OrderDate] = NULL +FROM [Orders] AS [o0] INNER JOIN ( SELECT [t].[OrderID] FROM [Customers] AS [c] INNER JOIN ( - SELECT [o0].[OrderID], [o0].[CustomerID] - FROM [Orders] AS [o0] - WHERE DATEPART(year, [o0].[OrderDate]) = 1997 + SELECT [o].[OrderID], [o].[CustomerID] + FROM [Orders] AS [o] + WHERE DATEPART(year, [o].[OrderDate]) = 1997 ) AS [t] ON [c].[CustomerID] = [t].[CustomerID] WHERE [c].[CustomerID] LIKE N'F%' -) AS [t0] ON [o].[OrderID] = [t0].[OrderID] +) AS [t0] ON [o0].[OrderID] = [t0].[OrderID] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/ManyToManyFieldsLoadSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/ManyToManyFieldsLoadSqlServerTest.cs index 25bf40b7ddc..566e6e5b0b5 100644 --- a/test/EFCore.SqlServer.FunctionalTests/ManyToManyFieldsLoadSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/ManyToManyFieldsLoadSqlServerTest.cs @@ -68,7 +68,7 @@ public override async Task Load_collection_using_Query_with_Include_for_same_col """ @__p_0='3' -SELECT [t].[Id], [t].[CollectionInverseId], [t].[Name], [t].[ReferenceInverseId], [e].[Id], [t].[OneSkipSharedId], [t].[TwoSkipSharedId], [t0].[OneSkipSharedId], [t0].[TwoSkipSharedId], [t0].[Id], [t0].[Name], [t0].[OneSkipSharedId0], [t0].[TwoSkipSharedId0], [t0].[Id0], [t0].[CollectionInverseId], [t0].[Name0], [t0].[ReferenceInverseId] +SELECT [t].[Id], [t].[CollectionInverseId], [t].[Name], [t].[ReferenceInverseId], [e].[Id], [t].[OneSkipSharedId], [t].[TwoSkipSharedId], [t1].[OneSkipSharedId], [t1].[TwoSkipSharedId], [t1].[Id], [t1].[Name], [t1].[OneSkipSharedId0], [t1].[TwoSkipSharedId0], [t1].[Id0], [t1].[CollectionInverseId], [t1].[Name0], [t1].[ReferenceInverseId] FROM [EntityOnes] AS [e] INNER JOIN ( SELECT [e1].[Id], [e1].[CollectionInverseId], [e1].[Name], [e1].[ReferenceInverseId], [e0].[OneSkipSharedId], [e0].[TwoSkipSharedId] @@ -76,18 +76,18 @@ FROM [EntityOneEntityTwo] AS [e0] INNER JOIN [EntityTwos] AS [e1] ON [e0].[TwoSkipSharedId] = [e1].[Id] ) AS [t] ON [e].[Id] = [t].[OneSkipSharedId] LEFT JOIN ( - SELECT [e2].[OneSkipSharedId], [e2].[TwoSkipSharedId], [e3].[Id], [e3].[Name], [t1].[OneSkipSharedId] AS [OneSkipSharedId0], [t1].[TwoSkipSharedId] AS [TwoSkipSharedId0], [t1].[Id] AS [Id0], [t1].[CollectionInverseId], [t1].[Name] AS [Name0], [t1].[ReferenceInverseId] + SELECT [e2].[OneSkipSharedId], [e2].[TwoSkipSharedId], [e3].[Id], [e3].[Name], [t0].[OneSkipSharedId] AS [OneSkipSharedId0], [t0].[TwoSkipSharedId] AS [TwoSkipSharedId0], [t0].[Id] AS [Id0], [t0].[CollectionInverseId], [t0].[Name] AS [Name0], [t0].[ReferenceInverseId] FROM [EntityOneEntityTwo] AS [e2] INNER JOIN [EntityOnes] AS [e3] ON [e2].[OneSkipSharedId] = [e3].[Id] LEFT JOIN ( SELECT [e4].[OneSkipSharedId], [e4].[TwoSkipSharedId], [e5].[Id], [e5].[CollectionInverseId], [e5].[Name], [e5].[ReferenceInverseId] FROM [EntityOneEntityTwo] AS [e4] INNER JOIN [EntityTwos] AS [e5] ON [e4].[TwoSkipSharedId] = [e5].[Id] - ) AS [t1] ON [e3].[Id] = [t1].[OneSkipSharedId] + ) AS [t0] ON [e3].[Id] = [t0].[OneSkipSharedId] WHERE [e3].[Id] = @__p_0 -) AS [t0] ON [t].[Id] = [t0].[TwoSkipSharedId] +) AS [t1] ON [t].[Id] = [t1].[TwoSkipSharedId] WHERE [e].[Id] = @__p_0 -ORDER BY [e].[Id], [t].[OneSkipSharedId], [t].[TwoSkipSharedId], [t].[Id], [t0].[OneSkipSharedId], [t0].[TwoSkipSharedId], [t0].[Id], [t0].[OneSkipSharedId0], [t0].[TwoSkipSharedId0] +ORDER BY [e].[Id], [t].[OneSkipSharedId], [t].[TwoSkipSharedId], [t].[Id], [t1].[OneSkipSharedId], [t1].[TwoSkipSharedId], [t1].[Id], [t1].[OneSkipSharedId0], [t1].[TwoSkipSharedId0] """); } @@ -190,7 +190,7 @@ public override async Task Load_collection_using_Query_with_join(bool async) """ @__p_0='3' -SELECT [t].[Id], [t].[CollectionInverseId], [t].[Name], [t].[ReferenceInverseId], [e].[Id], [t].[OneSkipSharedId], [t].[TwoSkipSharedId], [t0].[Id], [t0].[OneSkipSharedId], [t0].[TwoSkipSharedId], [t0].[Id0], [t2].[OneSkipSharedId], [t2].[TwoSkipSharedId], [t2].[Id], [t2].[Name], [t0].[CollectionInverseId], [t0].[Name0], [t0].[ReferenceInverseId] +SELECT [t].[Id], [t].[CollectionInverseId], [t].[Name], [t].[ReferenceInverseId], [e].[Id], [t].[OneSkipSharedId], [t].[TwoSkipSharedId], [t1].[Id], [t1].[OneSkipSharedId], [t1].[TwoSkipSharedId], [t1].[Id0], [t2].[OneSkipSharedId], [t2].[TwoSkipSharedId], [t2].[Id], [t2].[Name], [t1].[CollectionInverseId], [t1].[Name0], [t1].[ReferenceInverseId] FROM [EntityOnes] AS [e] INNER JOIN ( SELECT [e1].[Id], [e1].[CollectionInverseId], [e1].[Name], [e1].[ReferenceInverseId], [e0].[OneSkipSharedId], [e0].[TwoSkipSharedId] @@ -198,14 +198,14 @@ FROM [EntityOneEntityTwo] AS [e0] INNER JOIN [EntityTwos] AS [e1] ON [e0].[TwoSkipSharedId] = [e1].[Id] ) AS [t] ON [e].[Id] = [t].[OneSkipSharedId] INNER JOIN ( - SELECT [e2].[Id], [t1].[Id] AS [Id0], [t1].[CollectionInverseId], [t1].[Name] AS [Name0], [t1].[ReferenceInverseId], [t1].[OneSkipSharedId], [t1].[TwoSkipSharedId] + SELECT [e2].[Id], [t0].[Id] AS [Id0], [t0].[CollectionInverseId], [t0].[Name] AS [Name0], [t0].[ReferenceInverseId], [t0].[OneSkipSharedId], [t0].[TwoSkipSharedId] FROM [EntityOnes] AS [e2] INNER JOIN ( SELECT [e4].[Id], [e4].[CollectionInverseId], [e4].[Name], [e4].[ReferenceInverseId], [e3].[OneSkipSharedId], [e3].[TwoSkipSharedId] FROM [EntityOneEntityTwo] AS [e3] INNER JOIN [EntityTwos] AS [e4] ON [e3].[TwoSkipSharedId] = [e4].[Id] - ) AS [t1] ON [e2].[Id] = [t1].[OneSkipSharedId] -) AS [t0] ON [t].[Id] = [t0].[Id0] + ) AS [t0] ON [e2].[Id] = [t0].[OneSkipSharedId] +) AS [t1] ON [t].[Id] = [t1].[Id0] LEFT JOIN ( SELECT [e5].[OneSkipSharedId], [e5].[TwoSkipSharedId], [e6].[Id], [e6].[Name] FROM [EntityOneEntityTwo] AS [e5] @@ -213,7 +213,7 @@ FROM [EntityOneEntityTwo] AS [e5] WHERE [e6].[Id] = @__p_0 ) AS [t2] ON [t].[Id] = [t2].[TwoSkipSharedId] WHERE [e].[Id] = @__p_0 -ORDER BY [e].[Id], [t].[OneSkipSharedId], [t].[TwoSkipSharedId], [t].[Id], [t0].[Id], [t0].[OneSkipSharedId], [t0].[TwoSkipSharedId], [t0].[Id0], [t2].[OneSkipSharedId], [t2].[TwoSkipSharedId] +ORDER BY [e].[Id], [t].[OneSkipSharedId], [t].[TwoSkipSharedId], [t].[Id], [t1].[Id], [t1].[OneSkipSharedId], [t1].[TwoSkipSharedId], [t1].[Id0], [t2].[OneSkipSharedId], [t2].[TwoSkipSharedId] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/ManyToManyLoadSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/ManyToManyLoadSqlServerTest.cs index 96abcff2305..cb38c76bb56 100644 --- a/test/EFCore.SqlServer.FunctionalTests/ManyToManyLoadSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/ManyToManyLoadSqlServerTest.cs @@ -87,7 +87,7 @@ public override async Task Load_collection_using_Query_with_Include_for_same_col """ @__p_0='3' -SELECT [t].[Id], [t].[CollectionInverseId], [t].[ExtraId], [t].[Name], [t].[ReferenceInverseId], [e].[Id], [t].[OneSkipSharedId], [t].[TwoSkipSharedId], [t0].[OneSkipSharedId], [t0].[TwoSkipSharedId], [t0].[Id], [t0].[Name], [t0].[OneSkipSharedId0], [t0].[TwoSkipSharedId0], [t0].[Id0], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name0], [t0].[ReferenceInverseId] +SELECT [t].[Id], [t].[CollectionInverseId], [t].[ExtraId], [t].[Name], [t].[ReferenceInverseId], [e].[Id], [t].[OneSkipSharedId], [t].[TwoSkipSharedId], [t1].[OneSkipSharedId], [t1].[TwoSkipSharedId], [t1].[Id], [t1].[Name], [t1].[OneSkipSharedId0], [t1].[TwoSkipSharedId0], [t1].[Id0], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name0], [t1].[ReferenceInverseId] FROM [EntityOnes] AS [e] INNER JOIN ( SELECT [e1].[Id], [e1].[CollectionInverseId], [e1].[ExtraId], [e1].[Name], [e1].[ReferenceInverseId], [e0].[OneSkipSharedId], [e0].[TwoSkipSharedId] @@ -95,18 +95,18 @@ FROM [EntityOneEntityTwo] AS [e0] INNER JOIN [EntityTwos] AS [e1] ON [e0].[TwoSkipSharedId] = [e1].[Id] ) AS [t] ON [e].[Id] = [t].[OneSkipSharedId] LEFT JOIN ( - SELECT [e2].[OneSkipSharedId], [e2].[TwoSkipSharedId], [e3].[Id], [e3].[Name], [t1].[OneSkipSharedId] AS [OneSkipSharedId0], [t1].[TwoSkipSharedId] AS [TwoSkipSharedId0], [t1].[Id] AS [Id0], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name] AS [Name0], [t1].[ReferenceInverseId] + SELECT [e2].[OneSkipSharedId], [e2].[TwoSkipSharedId], [e3].[Id], [e3].[Name], [t0].[OneSkipSharedId] AS [OneSkipSharedId0], [t0].[TwoSkipSharedId] AS [TwoSkipSharedId0], [t0].[Id] AS [Id0], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name] AS [Name0], [t0].[ReferenceInverseId] FROM [EntityOneEntityTwo] AS [e2] INNER JOIN [EntityOnes] AS [e3] ON [e2].[OneSkipSharedId] = [e3].[Id] LEFT JOIN ( SELECT [e4].[OneSkipSharedId], [e4].[TwoSkipSharedId], [e5].[Id], [e5].[CollectionInverseId], [e5].[ExtraId], [e5].[Name], [e5].[ReferenceInverseId] FROM [EntityOneEntityTwo] AS [e4] INNER JOIN [EntityTwos] AS [e5] ON [e4].[TwoSkipSharedId] = [e5].[Id] - ) AS [t1] ON [e3].[Id] = [t1].[OneSkipSharedId] + ) AS [t0] ON [e3].[Id] = [t0].[OneSkipSharedId] WHERE [e3].[Id] = @__p_0 -) AS [t0] ON [t].[Id] = [t0].[TwoSkipSharedId] +) AS [t1] ON [t].[Id] = [t1].[TwoSkipSharedId] WHERE [e].[Id] = @__p_0 -ORDER BY [e].[Id], [t].[OneSkipSharedId], [t].[TwoSkipSharedId], [t].[Id], [t0].[OneSkipSharedId], [t0].[TwoSkipSharedId], [t0].[Id], [t0].[OneSkipSharedId0], [t0].[TwoSkipSharedId0] +ORDER BY [e].[Id], [t].[OneSkipSharedId], [t].[TwoSkipSharedId], [t].[Id], [t1].[OneSkipSharedId], [t1].[TwoSkipSharedId], [t1].[Id], [t1].[OneSkipSharedId0], [t1].[TwoSkipSharedId0] """); } @@ -209,7 +209,7 @@ public override async Task Load_collection_using_Query_with_join(bool async) """ @__p_0='3' -SELECT [t].[Id], [t].[CollectionInverseId], [t].[ExtraId], [t].[Name], [t].[ReferenceInverseId], [e].[Id], [t].[OneSkipSharedId], [t].[TwoSkipSharedId], [t0].[Id], [t0].[OneSkipSharedId], [t0].[TwoSkipSharedId], [t0].[Id0], [t2].[OneSkipSharedId], [t2].[TwoSkipSharedId], [t2].[Id], [t2].[Name], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name0], [t0].[ReferenceInverseId] +SELECT [t].[Id], [t].[CollectionInverseId], [t].[ExtraId], [t].[Name], [t].[ReferenceInverseId], [e].[Id], [t].[OneSkipSharedId], [t].[TwoSkipSharedId], [t1].[Id], [t1].[OneSkipSharedId], [t1].[TwoSkipSharedId], [t1].[Id0], [t2].[OneSkipSharedId], [t2].[TwoSkipSharedId], [t2].[Id], [t2].[Name], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name0], [t1].[ReferenceInverseId] FROM [EntityOnes] AS [e] INNER JOIN ( SELECT [e1].[Id], [e1].[CollectionInverseId], [e1].[ExtraId], [e1].[Name], [e1].[ReferenceInverseId], [e0].[OneSkipSharedId], [e0].[TwoSkipSharedId] @@ -217,14 +217,14 @@ FROM [EntityOneEntityTwo] AS [e0] INNER JOIN [EntityTwos] AS [e1] ON [e0].[TwoSkipSharedId] = [e1].[Id] ) AS [t] ON [e].[Id] = [t].[OneSkipSharedId] INNER JOIN ( - SELECT [e2].[Id], [t1].[Id] AS [Id0], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name] AS [Name0], [t1].[ReferenceInverseId], [t1].[OneSkipSharedId], [t1].[TwoSkipSharedId] + SELECT [e2].[Id], [t0].[Id] AS [Id0], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name] AS [Name0], [t0].[ReferenceInverseId], [t0].[OneSkipSharedId], [t0].[TwoSkipSharedId] FROM [EntityOnes] AS [e2] INNER JOIN ( SELECT [e4].[Id], [e4].[CollectionInverseId], [e4].[ExtraId], [e4].[Name], [e4].[ReferenceInverseId], [e3].[OneSkipSharedId], [e3].[TwoSkipSharedId] FROM [EntityOneEntityTwo] AS [e3] INNER JOIN [EntityTwos] AS [e4] ON [e3].[TwoSkipSharedId] = [e4].[Id] - ) AS [t1] ON [e2].[Id] = [t1].[OneSkipSharedId] -) AS [t0] ON [t].[Id] = [t0].[Id0] + ) AS [t0] ON [e2].[Id] = [t0].[OneSkipSharedId] +) AS [t1] ON [t].[Id] = [t1].[Id0] LEFT JOIN ( SELECT [e5].[OneSkipSharedId], [e5].[TwoSkipSharedId], [e6].[Id], [e6].[Name] FROM [EntityOneEntityTwo] AS [e5] @@ -232,7 +232,7 @@ FROM [EntityOneEntityTwo] AS [e5] WHERE [e6].[Id] = @__p_0 ) AS [t2] ON [t].[Id] = [t2].[TwoSkipSharedId] WHERE [e].[Id] = @__p_0 -ORDER BY [e].[Id], [t].[OneSkipSharedId], [t].[TwoSkipSharedId], [t].[Id], [t0].[Id], [t0].[OneSkipSharedId], [t0].[TwoSkipSharedId], [t0].[Id0], [t2].[OneSkipSharedId], [t2].[TwoSkipSharedId] +ORDER BY [e].[Id], [t].[OneSkipSharedId], [t].[TwoSkipSharedId], [t].[Id], [t1].[Id], [t1].[OneSkipSharedId], [t1].[TwoSkipSharedId], [t1].[Id0], [t2].[OneSkipSharedId], [t2].[TwoSkipSharedId] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/AdHocMiscellaneousQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/AdHocMiscellaneousQuerySqlServerTest.cs index 9f76ac479ea..8323c18eb2a 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/AdHocMiscellaneousQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/AdHocMiscellaneousQuerySqlServerTest.cs @@ -1647,7 +1647,7 @@ public override async Task Union_and_insert_works_correctly_together() await base.Union_and_insert_works_correctly_together(); AssertSql( -""" + """ @__id1_0='1' @__id2_1='2' @@ -1655,12 +1655,12 @@ SELECT [t].[Id] FROM [Tables1] AS [t] WHERE [t].[Id] = @__id1_0 UNION -SELECT [t1].[Id] -FROM [Tables2] AS [t1] -WHERE [t1].[Id] = @__id2_1 +SELECT [t0].[Id] +FROM [Tables2] AS [t0] +WHERE [t0].[Id] = @__id2_1 """, - // - """ + // + """ SET NOCOUNT ON; INSERT INTO [Tables1] OUTPUT INSERTED.[Id] @@ -1846,57 +1846,57 @@ public override async Task GroupJoin_Anonymous_projection_GroupBy_Aggregate_join await base.GroupJoin_Anonymous_projection_GroupBy_Aggregate_join_elimination(); AssertSql( -""" -SELECT [t0].[AnotherEntity11818_Name] AS [Key], COUNT(*) + 5 AS [cnt] + """ +SELECT [t1].[AnotherEntity11818_Name] AS [Key], COUNT(*) + 5 AS [cnt] FROM [Table] AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Exists], [t1].[AnotherEntity11818_Name] - FROM [Table] AS [t1] - WHERE [t1].[Exists] IS NOT NULL -) AS [t0] ON [t].[Id] = CASE - WHEN [t0].[Exists] IS NOT NULL THEN [t0].[Id] + SELECT [t0].[Id], [t0].[Exists], [t0].[AnotherEntity11818_Name] + FROM [Table] AS [t0] + WHERE [t0].[Exists] IS NOT NULL +) AS [t1] ON [t].[Id] = CASE + WHEN [t1].[Exists] IS NOT NULL THEN [t1].[Id] END -GROUP BY [t0].[AnotherEntity11818_Name] +GROUP BY [t1].[AnotherEntity11818_Name] """, - // - """ -SELECT [t0].[AnotherEntity11818_Name] AS [MyKey], COUNT(*) + 5 AS [cnt] + // + """ +SELECT [t1].[AnotherEntity11818_Name] AS [MyKey], COUNT(*) + 5 AS [cnt] FROM [Table] AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Exists], [t1].[AnotherEntity11818_Name] - FROM [Table] AS [t1] - WHERE [t1].[Exists] IS NOT NULL -) AS [t0] ON [t].[Id] = CASE - WHEN [t0].[Exists] IS NOT NULL THEN [t0].[Id] + SELECT [t0].[Id], [t0].[Exists], [t0].[AnotherEntity11818_Name] + FROM [Table] AS [t0] + WHERE [t0].[Exists] IS NOT NULL +) AS [t1] ON [t].[Id] = CASE + WHEN [t1].[Exists] IS NOT NULL THEN [t1].[Id] END LEFT JOIN ( - SELECT [t3].[Id], [t3].[MaumarEntity11818_Exists], [t3].[MaumarEntity11818_Name] - FROM [Table] AS [t3] - WHERE [t3].[MaumarEntity11818_Exists] IS NOT NULL -) AS [t2] ON [t].[Id] = CASE - WHEN [t2].[MaumarEntity11818_Exists] IS NOT NULL THEN [t2].[Id] + SELECT [t2].[Id], [t2].[MaumarEntity11818_Exists], [t2].[MaumarEntity11818_Name] + FROM [Table] AS [t2] + WHERE [t2].[MaumarEntity11818_Exists] IS NOT NULL +) AS [t3] ON [t].[Id] = CASE + WHEN [t3].[MaumarEntity11818_Exists] IS NOT NULL THEN [t3].[Id] END -GROUP BY [t0].[AnotherEntity11818_Name], [t2].[MaumarEntity11818_Name] +GROUP BY [t1].[AnotherEntity11818_Name], [t3].[MaumarEntity11818_Name] """, - // - """ -SELECT TOP(1) [t0].[AnotherEntity11818_Name] AS [MyKey], [t2].[MaumarEntity11818_Name] AS [cnt] + // + """ +SELECT TOP(1) [t1].[AnotherEntity11818_Name] AS [MyKey], [t3].[MaumarEntity11818_Name] AS [cnt] FROM [Table] AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Exists], [t1].[AnotherEntity11818_Name] - FROM [Table] AS [t1] - WHERE [t1].[Exists] IS NOT NULL -) AS [t0] ON [t].[Id] = CASE - WHEN [t0].[Exists] IS NOT NULL THEN [t0].[Id] + SELECT [t0].[Id], [t0].[Exists], [t0].[AnotherEntity11818_Name] + FROM [Table] AS [t0] + WHERE [t0].[Exists] IS NOT NULL +) AS [t1] ON [t].[Id] = CASE + WHEN [t1].[Exists] IS NOT NULL THEN [t1].[Id] END LEFT JOIN ( - SELECT [t3].[Id], [t3].[MaumarEntity11818_Exists], [t3].[MaumarEntity11818_Name] - FROM [Table] AS [t3] - WHERE [t3].[MaumarEntity11818_Exists] IS NOT NULL -) AS [t2] ON [t].[Id] = CASE - WHEN [t2].[MaumarEntity11818_Exists] IS NOT NULL THEN [t2].[Id] + SELECT [t2].[Id], [t2].[MaumarEntity11818_Exists], [t2].[MaumarEntity11818_Name] + FROM [Table] AS [t2] + WHERE [t2].[MaumarEntity11818_Exists] IS NOT NULL +) AS [t3] ON [t].[Id] = CASE + WHEN [t3].[MaumarEntity11818_Exists] IS NOT NULL THEN [t3].[Id] END -GROUP BY [t0].[AnotherEntity11818_Name], [t2].[MaumarEntity11818_Name] +GROUP BY [t1].[AnotherEntity11818_Name], [t3].[MaumarEntity11818_Name] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/AdHocNavigationsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/AdHocNavigationsQuerySqlServerTest.cs index 68207ca450e..3f6d502b63a 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/AdHocNavigationsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/AdHocNavigationsQuerySqlServerTest.cs @@ -344,28 +344,28 @@ public override async Task SelectMany_and_collection_in_projection_in_FirstOrDef await base.SelectMany_and_collection_in_projection_in_FirstOrDefault(); AssertSql( -""" + """ @__referenceId_0='a' (Size = 4000) @__customerId_1='1115c816-6c4c-4016-94df-d8b60a22ffa1' -SELECT [t].[Id], [t0].[Id], [t0].[Image], [t0].[Id0], [t0].[Id00] +SELECT [t].[Id], [t1].[Id], [t1].[Image], [t1].[Id0], [t1].[Id00] FROM ( SELECT TOP(2) [o].[Id] FROM [Orders] AS [o] WHERE [o].[ExternalReferenceId] = @__referenceId_0 AND [o].[CustomerId] = @__customerId_1 ) AS [t] OUTER APPLY ( - SELECT [i].[Id], [t1].[Image], [t1].[Id] AS [Id0], [t1].[Id0] AS [Id00] + SELECT [i].[Id], [t0].[Image], [t0].[Id] AS [Id0], [t0].[Id0] AS [Id00] FROM [IdentityDocument] AS [i] OUTER APPLY ( SELECT [i1].[Image], [i0].[Id], [i1].[Id] AS [Id0] FROM [IdentityDocument] AS [i0] INNER JOIN [IdentityDocumentImage] AS [i1] ON [i0].[Id] = [i1].[IdentityDocumentId] WHERE [t].[Id] = [i0].[OrderId] - ) AS [t1] + ) AS [t0] WHERE [t].[Id] = [i].[OrderId] -) AS [t0] -ORDER BY [t].[Id], [t0].[Id], [t0].[Id0] +) AS [t1] +ORDER BY [t].[Id], [t1].[Id], [t1].[Id0] """); } @@ -398,7 +398,7 @@ public override async Task Select_enumerable_navigation_backed_by_collection(boo if (split) { AssertSql( -""" + """ SELECT [e].[Id] FROM [Entities] AS [e] ORDER BY [e].[Id] @@ -528,27 +528,27 @@ public override async Task Projection_with_multiple_includes_and_subquery_with_s """ @__id_0='1' -SELECT [t].[Id], [t].[Name], [t].[Surname], [t].[Birthday], [t].[Hometown], [t].[Bio], [t].[AvatarUrl], [t].[Id0], [t].[Id1], [p0].[Id], [p0].[ImageUrl], [p0].[Height], [p0].[Width], [t0].[Id], [t0].[Name], [t0].[PosterUrl], [t0].[Rating] +SELECT [t0].[Id], [t0].[Name], [t0].[Surname], [t0].[Birthday], [t0].[Hometown], [t0].[Bio], [t0].[AvatarUrl], [t0].[Id0], [t0].[Id1], [p0].[Id], [p0].[ImageUrl], [p0].[Height], [p0].[Width], [t].[Id], [t].[Name], [t].[PosterUrl], [t].[Rating] FROM ( SELECT TOP(1) [p].[Id], [p].[Name], [p].[Surname], [p].[Birthday], [p].[Hometown], [p].[Bio], [p].[AvatarUrl], [a].[Id] AS [Id0], [d].[Id] AS [Id1] FROM [Persons] AS [p] LEFT JOIN [ActorEntity] AS [a] ON [p].[Id] = [a].[PersonId] LEFT JOIN [DirectorEntity] AS [d] ON [p].[Id] = [d].[PersonId] WHERE [p].[Id] = @__id_0 -) AS [t] -LEFT JOIN [PersonImageEntity] AS [p0] ON [t].[Id] = [p0].[PersonId] +) AS [t0] +LEFT JOIN [PersonImageEntity] AS [p0] ON [t0].[Id] = [p0].[PersonId] OUTER APPLY ( SELECT [m0].[Id], [m0].[Budget], [m0].[Description], [m0].[DurationInMins], [m0].[Name], [m0].[PosterUrl], [m0].[Rating], [m0].[ReleaseDate], [m0].[Revenue] FROM [MovieActorEntity] AS [m] INNER JOIN [MovieEntity] AS [m0] ON [m].[MovieId] = [m0].[Id] - WHERE [t].[Id0] IS NOT NULL AND [t].[Id0] = [m].[ActorId] + WHERE [t0].[Id0] IS NOT NULL AND [t0].[Id0] = [m].[ActorId] UNION SELECT [m2].[Id], [m2].[Budget], [m2].[Description], [m2].[DurationInMins], [m2].[Name], [m2].[PosterUrl], [m2].[Rating], [m2].[ReleaseDate], [m2].[Revenue] FROM [MovieDirectorEntity] AS [m1] INNER JOIN [MovieEntity] AS [m2] ON [m1].[MovieId] = [m2].[Id] - WHERE [t].[Id1] IS NOT NULL AND [t].[Id1] = [m1].[DirectorId] -) AS [t0] -ORDER BY [t].[Id], [t].[Id0], [t].[Id1], [p0].[Id] + WHERE [t0].[Id1] IS NOT NULL AND [t0].[Id1] = [m1].[DirectorId] +) AS [t] +ORDER BY [t0].[Id], [t0].[Id0], [t0].[Id1], [p0].[Id] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/AdHocQueryFiltersQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/AdHocQueryFiltersQuerySqlServerTest.cs index 1a460e58271..9a0826a891c 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/AdHocQueryFiltersQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/AdHocQueryFiltersQuerySqlServerTest.cs @@ -292,7 +292,7 @@ public override async Task Group_by_multiple_aggregate_joining_different_tables( await base.Group_by_multiple_aggregate_joining_different_tables(async); AssertSql( -""" + """ SELECT ( SELECT COUNT(*) FROM ( @@ -300,20 +300,20 @@ SELECT DISTINCT [c].[Value1] FROM ( SELECT [p0].[Child1Id], 1 AS [Key] FROM [Parents] AS [p0] - ) AS [t1] - LEFT JOIN [Child1] AS [c] ON [t1].[Child1Id] = [c].[Id] - WHERE [t].[Key] = [t1].[Key] - ) AS [t0]) AS [Test1], ( + ) AS [t0] + LEFT JOIN [Child1] AS [c] ON [t0].[Child1Id] = [c].[Id] + WHERE [t].[Key] = [t0].[Key] + ) AS [t1]) AS [Test1], ( SELECT COUNT(*) FROM ( SELECT DISTINCT [c0].[Value2] FROM ( SELECT [p1].[Child2Id], 1 AS [Key] FROM [Parents] AS [p1] - ) AS [t3] - LEFT JOIN [Child2] AS [c0] ON [t3].[Child2Id] = [c0].[Id] - WHERE [t].[Key] = [t3].[Key] - ) AS [t2]) AS [Test2] + ) AS [t2] + LEFT JOIN [Child2] AS [c0] ON [t2].[Child2Id] = [c0].[Id] + WHERE [t].[Key] = [t2].[Key] + ) AS [t3]) AS [Test2] FROM ( SELECT 1 AS [Key] FROM [Parents] AS [p] @@ -327,11 +327,11 @@ public override async Task Group_by_multiple_aggregate_joining_different_tables_ await base.Group_by_multiple_aggregate_joining_different_tables_with_query_filter(async); AssertSql( -""" + """ SELECT ( SELECT COUNT(*) FROM ( - SELECT DISTINCT [t2].[Value1] + SELECT DISTINCT [t1].[Value1] FROM ( SELECT [p0].[ChildFilter1Id], 1 AS [Key] FROM [Parents] AS [p0] @@ -340,23 +340,23 @@ LEFT JOIN ( SELECT [c].[Id], [c].[Value1] FROM [ChildFilter1] AS [c] WHERE [c].[Filter1] = N'Filter1' - ) AS [t2] ON [t0].[ChildFilter1Id] = [t2].[Id] + ) AS [t1] ON [t0].[ChildFilter1Id] = [t1].[Id] WHERE [t].[Key] = [t0].[Key] - ) AS [t1]) AS [Test1], ( + ) AS [t2]) AS [Test1], ( SELECT COUNT(*) FROM ( - SELECT DISTINCT [t5].[Value2] + SELECT DISTINCT [t4].[Value2] FROM ( SELECT [p1].[ChildFilter2Id], 1 AS [Key] FROM [Parents] AS [p1] - ) AS [t4] + ) AS [t3] LEFT JOIN ( SELECT [c0].[Id], [c0].[Value2] FROM [ChildFilter2] AS [c0] WHERE [c0].[Filter2] = N'Filter2' - ) AS [t5] ON [t4].[ChildFilter2Id] = [t5].[Id] - WHERE [t].[Key] = [t4].[Key] - ) AS [t3]) AS [Test2] + ) AS [t4] ON [t3].[ChildFilter2Id] = [t4].[Id] + WHERE [t].[Key] = [t3].[Key] + ) AS [t5]) AS [Test2] FROM ( SELECT 1 AS [Key] FROM [Parents] AS [p] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/AdHocQuerySplittingQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/AdHocQuerySplittingQuerySqlServerTest.cs index 3d7872d3f19..183a929ebfb 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/AdHocQuerySplittingQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/AdHocQuerySplittingQuerySqlServerTest.cs @@ -45,27 +45,27 @@ public override async Task Can_configure_SingleQuery_at_context_level() await base.Can_configure_SingleQuery_at_context_level(); AssertSql( -""" + """ SELECT [p].[Id], [c].[Id], [c].[ParentId] FROM [Parents] AS [p] LEFT JOIN [Child] AS [c] ON [p].[Id] = [c].[ParentId] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [p].[Id] FROM [Parents] AS [p] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [c].[Id], [c].[ParentId], [p].[Id] FROM [Parents] AS [p] INNER JOIN [Child] AS [c] ON [p].[Id] = [c].[ParentId] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [p].[Id], [c].[Id], [c].[ParentId], [a].[Id], [a].[ParentId] FROM [Parents] AS [p] LEFT JOIN [Child] AS [c] ON [p].[Id] = [c].[ParentId] @@ -79,40 +79,40 @@ public override async Task Can_configure_SplitQuery_at_context_level() await base.Can_configure_SplitQuery_at_context_level(); AssertSql( -""" + """ SELECT [p].[Id] FROM [Parents] AS [p] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [c].[Id], [c].[ParentId], [p].[Id] FROM [Parents] AS [p] INNER JOIN [Child] AS [c] ON [p].[Id] = [c].[ParentId] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [p].[Id], [c].[Id], [c].[ParentId] FROM [Parents] AS [p] LEFT JOIN [Child] AS [c] ON [p].[Id] = [c].[ParentId] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [p].[Id] FROM [Parents] AS [p] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [c].[Id], [c].[ParentId], [p].[Id] FROM [Parents] AS [p] INNER JOIN [Child] AS [c] ON [p].[Id] = [c].[ParentId] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [a].[Id], [a].[ParentId], [p].[Id] FROM [Parents] AS [p] INNER JOIN [AnotherChild] AS [a] ON [p].[Id] = [a].[ParentId] @@ -125,20 +125,20 @@ public override async Task Unconfigured_query_splitting_behavior_throws_a_warnin await base.Unconfigured_query_splitting_behavior_throws_a_warning(); AssertSql( -""" + """ SELECT [p].[Id] FROM [Parents] AS [p] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [c].[Id], [c].[ParentId], [p].[Id] FROM [Parents] AS [p] INNER JOIN [Child] AS [c] ON [p].[Id] = [c].[ParentId] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [a].[Id], [a].[ParentId], [p].[Id] FROM [Parents] AS [p] INNER JOIN [AnotherChild] AS [a] ON [p].[Id] = [a].[ParentId] @@ -165,53 +165,53 @@ public override async Task SplitQuery_disposes_inner_data_readers() await base.SplitQuery_disposes_inner_data_readers(); AssertSql( -""" + """ SELECT [p].[Id] FROM [Parents] AS [p] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [c].[Id], [c].[ParentId], [p].[Id] FROM [Parents] AS [p] INNER JOIN [Child] AS [c] ON [p].[Id] = [c].[ParentId] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [a].[Id], [a].[ParentId], [p].[Id] FROM [Parents] AS [p] INNER JOIN [AnotherChild] AS [a] ON [p].[Id] = [a].[ParentId] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [p].[Id] FROM [Parents] AS [p] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [c].[Id], [c].[ParentId], [p].[Id] FROM [Parents] AS [p] INNER JOIN [Child] AS [c] ON [p].[Id] = [c].[ParentId] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [a].[Id], [a].[ParentId], [p].[Id] FROM [Parents] AS [p] INNER JOIN [AnotherChild] AS [a] ON [p].[Id] = [a].[ParentId] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT TOP(2) [p].[Id] FROM [Parents] AS [p] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [c].[Id], [c].[ParentId], [t].[Id] FROM ( SELECT TOP(1) [p].[Id] @@ -221,25 +221,25 @@ ORDER BY [p].[Id] INNER JOIN [Child] AS [c] ON [t].[Id] = [c].[ParentId] ORDER BY [t].[Id] """, - // - """ -SELECT [a].[Id], [a].[ParentId], [t].[Id] + // + """ +SELECT [a].[Id], [a].[ParentId], [t0].[Id] FROM ( SELECT TOP(1) [p].[Id] FROM [Parents] AS [p] ORDER BY [p].[Id] -) AS [t] -INNER JOIN [AnotherChild] AS [a] ON [t].[Id] = [a].[ParentId] -ORDER BY [t].[Id] +) AS [t0] +INNER JOIN [AnotherChild] AS [a] ON [t0].[Id] = [a].[ParentId] +ORDER BY [t0].[Id] """, - // - """ + // + """ SELECT TOP(2) [p].[Id] FROM [Parents] AS [p] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [c].[Id], [c].[ParentId], [t].[Id] FROM ( SELECT TOP(1) [p].[Id] @@ -249,16 +249,16 @@ ORDER BY [p].[Id] INNER JOIN [Child] AS [c] ON [t].[Id] = [c].[ParentId] ORDER BY [t].[Id] """, - // - """ -SELECT [a].[Id], [a].[ParentId], [t].[Id] + // + """ +SELECT [a].[Id], [a].[ParentId], [t0].[Id] FROM ( SELECT TOP(1) [p].[Id] FROM [Parents] AS [p] ORDER BY [p].[Id] -) AS [t] -INNER JOIN [AnotherChild] AS [a] ON [t].[Id] = [a].[ParentId] -ORDER BY [t].[Id] +) AS [t0] +INNER JOIN [AnotherChild] AS [a] ON [t0].[Id] = [a].[ParentId] +ORDER BY [t0].[Id] """); } @@ -273,20 +273,20 @@ public virtual async Task Using_AsSplitQuery_without_multiple_active_result_sets context.Parents.Include(p => p.Children1).Include(p => p.Children2).AsSplitQuery().ToList(); AssertSql( -""" + """ SELECT [p].[Id] FROM [Parents] AS [p] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [c].[Id], [c].[ParentId], [p].[Id] FROM [Parents] AS [p] INNER JOIN [Child] AS [c] ON [p].[Id] = [c].[ParentId] ORDER BY [p].[Id] """, - // - """ + // + """ SELECT [a].[Id], [a].[ParentId], [p].[Id] FROM [Parents] AS [p] INNER JOIN [AnotherChild] AS [a] ON [p].[Id] = [a].[ParentId] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsCollectionsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsCollectionsQuerySqlServerTest.cs index 3140be10e71..2eef1e3be85 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsCollectionsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsCollectionsQuerySqlServerTest.cs @@ -738,22 +738,22 @@ public override async Task Include_collection_with_groupby_in_subquery(bool asyn AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t].[Name], [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t].[Name], [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] FROM ( SELECT [l].[Name] FROM [LevelOne] AS [l] GROUP BY [l].[Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] -LEFT JOIN [LevelTwo] AS [l1] ON [t0].[Id] = [l1].[OneToMany_Optional_Inverse2Id] -ORDER BY [t].[Name], [t0].[Id] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] +LEFT JOIN [LevelTwo] AS [l1] ON [t1].[Id] = [l1].[OneToMany_Optional_Inverse2Id] +ORDER BY [t].[Name], [t1].[Id] """); } @@ -763,7 +763,7 @@ public override async Task Include_collection_with_groupby_in_subquery_and_filte AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t].[Name], [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t].[Name], [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] FROM ( SELECT [l].[Name] FROM [LevelOne] AS [l] @@ -771,16 +771,16 @@ WHERE [l].[Id] > 3 GROUP BY [l].[Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [LevelOne] AS [l0] WHERE [l0].[Id] > 3 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] -LEFT JOIN [LevelTwo] AS [l1] ON [t0].[Id] = [l1].[OneToMany_Optional_Inverse2Id] -ORDER BY [t].[Name], [t0].[Id] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] +LEFT JOIN [LevelTwo] AS [l1] ON [t1].[Id] = [l1].[OneToMany_Optional_Inverse2Id] +ORDER BY [t].[Name], [t1].[Id] """); } @@ -790,7 +790,7 @@ public override async Task Include_collection_with_groupby_in_subquery_and_filte AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t].[Name], [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t].[Name], [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] FROM ( SELECT [l].[Name] FROM [LevelOne] AS [l] @@ -798,15 +798,15 @@ GROUP BY [l].[Name] HAVING [l].[Name] <> N'Foo' OR [l].[Name] IS NULL ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] -LEFT JOIN [LevelTwo] AS [l1] ON [t0].[Id] = [l1].[OneToMany_Optional_Inverse2Id] -ORDER BY [t].[Name], [t0].[Id] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] +LEFT JOIN [LevelTwo] AS [l1] ON [t1].[Id] = [l1].[OneToMany_Optional_Inverse2Id] +ORDER BY [t].[Name], [t1].[Id] """); } @@ -1175,21 +1175,21 @@ public override async Task Lift_projection_mapping_when_pushing_down_subquery(bo """ @__p_0='25' -SELECT [t].[Id], [t0].[Id], [l1].[Id], [t0].[c] +SELECT [t].[Id], [t1].[Id], [l1].[Id], [t1].[c] FROM ( SELECT TOP(@__p_0) [l].[Id] FROM [LevelOne] AS [l] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[c], [t1].[OneToMany_Required_Inverse2Id] + SELECT [t0].[Id], [t0].[c], [t0].[OneToMany_Required_Inverse2Id] FROM ( SELECT [l0].[Id], 1 AS [c], [l0].[OneToMany_Required_Inverse2Id], ROW_NUMBER() OVER(PARTITION BY [l0].[OneToMany_Required_Inverse2Id] ORDER BY [l0].[Id]) AS [row] FROM [LevelTwo] AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Id] = [t0].[OneToMany_Required_Inverse2Id] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Id] = [t1].[OneToMany_Required_Inverse2Id] LEFT JOIN [LevelTwo] AS [l1] ON [t].[Id] = [l1].[OneToMany_Required_Inverse2Id] -ORDER BY [t].[Id], [t0].[Id] +ORDER BY [t].[Id], [t1].[Id] """); } @@ -1261,17 +1261,17 @@ public override async Task Select_subquery_single_nested_subquery2(bool async) SELECT [l].[Id], [t1].[Id], [t1].[Id0], [t1].[Id1], [t1].[c] FROM [LevelOne] AS [l] LEFT JOIN ( - SELECT [l0].[Id], [t0].[Id] AS [Id0], [l1].[Id] AS [Id1], [t0].[c], [l0].[OneToMany_Optional_Inverse2Id] + SELECT [l0].[Id], [t0].[Id] AS [Id0], [l2].[Id] AS [Id1], [t0].[c], [l0].[OneToMany_Optional_Inverse2Id] FROM [LevelTwo] AS [l0] LEFT JOIN ( SELECT [t].[c], [t].[Id], [t].[OneToMany_Optional_Inverse3Id] FROM ( - SELECT 1 AS [c], [l2].[Id], [l2].[OneToMany_Optional_Inverse3Id], ROW_NUMBER() OVER(PARTITION BY [l2].[OneToMany_Optional_Inverse3Id] ORDER BY [l2].[Id]) AS [row] - FROM [LevelThree] AS [l2] + SELECT 1 AS [c], [l1].[Id], [l1].[OneToMany_Optional_Inverse3Id], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Optional_Inverse3Id] ORDER BY [l1].[Id]) AS [row] + FROM [LevelThree] AS [l1] ) AS [t] WHERE [t].[row] <= 1 ) AS [t0] ON [l0].[Id] = [t0].[OneToMany_Optional_Inverse3Id] - LEFT JOIN [LevelFour] AS [l1] ON [t0].[Id] = [l1].[OneToMany_Optional_Inverse4Id] + LEFT JOIN [LevelFour] AS [l2] ON [t0].[Id] = [l2].[OneToMany_Optional_Inverse4Id] ) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] ORDER BY [l].[Id], [t1].[Id], [t1].[Id0], [t1].[Id1] """); @@ -1491,7 +1491,7 @@ public override async Task Filtered_include_after_different_filtered_include_sam AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id] +SELECT [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t2].[Id], [t2].[Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Optional_Self_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToMany_Required_Self_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[OneToOne_Optional_Self2Id] FROM [LevelOne] AS [l] LEFT JOIN ( SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id] @@ -1503,15 +1503,15 @@ WHERE [l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL WHERE [t].[row] <= 3 ) AS [t0] ON [l].[Id] = [t0].[OneToMany_Optional_Inverse2Id] LEFT JOIN ( - SELECT [t2].[Id], [t2].[Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Optional_Self_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToMany_Required_Self_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[OneToOne_Optional_Self2Id] + SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id] FROM ( SELECT [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Required_Inverse2Id] ORDER BY [l1].[Name] DESC) AS [row] FROM [LevelTwo] AS [l1] WHERE [l1].[Name] <> N'Bar' OR [l1].[Name] IS NULL - ) AS [t2] - WHERE 1 < [t2].[row] -) AS [t1] ON [l].[Id] = [t1].[OneToMany_Required_Inverse2Id] -ORDER BY [l].[Id], [t0].[OneToMany_Optional_Inverse2Id], [t0].[Name], [t0].[Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[Name] DESC + ) AS [t1] + WHERE 1 < [t1].[row] +) AS [t2] ON [l].[Id] = [t2].[OneToMany_Required_Inverse2Id] +ORDER BY [l].[Id], [t0].[OneToMany_Optional_Inverse2Id], [t0].[Name], [t0].[Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[Name] DESC """); } @@ -1524,7 +1524,7 @@ public override async Task Filtered_include_after_different_filtered_include_dif SELECT [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [t2].[Id], [t2].[Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Optional_Self_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToMany_Required_Self_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[OneToOne_Optional_Self2Id], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Name0], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Optional_Self_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToMany_Required_Self_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[OneToOne_Optional_Self3Id] FROM [LevelOne] AS [l] OUTER APPLY ( - SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name] AS [Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t1].[Id] AS [Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name] AS [Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id] FROM ( SELECT TOP(3) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] FROM [LevelTwo] AS [l0] @@ -1532,14 +1532,14 @@ FROM [LevelTwo] AS [l0] ORDER BY [l0].[Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id] + SELECT [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id] FROM ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Required_Inverse3Id] ORDER BY [l1].[Name] DESC) AS [row] FROM [LevelThree] AS [l1] WHERE [l1].[Name] <> N'Bar' OR [l1].[Name] IS NULL - ) AS [t1] - WHERE 1 < [t1].[row] - ) AS [t0] ON [t].[Id] = [t0].[OneToMany_Required_Inverse3Id] + ) AS [t0] + WHERE 1 < [t0].[row] + ) AS [t1] ON [t].[Id] = [t1].[OneToMany_Required_Inverse3Id] ) AS [t2] ORDER BY [l].[Id], [t2].[Name], [t2].[Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[Name0] DESC """); @@ -1575,15 +1575,15 @@ public override async Task Filtered_include_same_filter_set_on_same_navigation_t SELECT [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[Id0], [t0].[Id1], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t0].[Level2_Optional_Id0], [t0].[Level2_Required_Id0], [t0].[Name1], [t0].[OneToMany_Optional_Inverse3Id0], [t0].[OneToMany_Optional_Self_Inverse3Id0], [t0].[OneToMany_Required_Inverse3Id0], [t0].[OneToMany_Required_Self_Inverse3Id0], [t0].[OneToOne_Optional_PK_Inverse3Id0], [t0].[OneToOne_Optional_Self3Id0] FROM [LevelOne] AS [l] OUTER APPLY ( - SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l0].[Id] AS [Id0], [l1].[Id] AS [Id1], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l0].[Level2_Optional_Id] AS [Level2_Optional_Id0], [l0].[Level2_Required_Id] AS [Level2_Required_Id0], [l0].[Name] AS [Name1], [l0].[OneToMany_Optional_Inverse3Id] AS [OneToMany_Optional_Inverse3Id0], [l0].[OneToMany_Optional_Self_Inverse3Id] AS [OneToMany_Optional_Self_Inverse3Id0], [l0].[OneToMany_Required_Inverse3Id] AS [OneToMany_Required_Inverse3Id0], [l0].[OneToMany_Required_Self_Inverse3Id] AS [OneToMany_Required_Self_Inverse3Id0], [l0].[OneToOne_Optional_PK_Inverse3Id] AS [OneToOne_Optional_PK_Inverse3Id0], [l0].[OneToOne_Optional_Self3Id] AS [OneToOne_Optional_Self3Id0] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l1].[Id] AS [Id0], [l2].[Id] AS [Id1], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name] AS [Name0], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Optional_Self_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToMany_Required_Self_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[OneToOne_Optional_Self3Id], [l1].[Level2_Optional_Id] AS [Level2_Optional_Id0], [l1].[Level2_Required_Id] AS [Level2_Required_Id0], [l1].[Name] AS [Name1], [l1].[OneToMany_Optional_Inverse3Id] AS [OneToMany_Optional_Inverse3Id0], [l1].[OneToMany_Optional_Self_Inverse3Id] AS [OneToMany_Optional_Self_Inverse3Id0], [l1].[OneToMany_Required_Inverse3Id] AS [OneToMany_Required_Inverse3Id0], [l1].[OneToMany_Required_Self_Inverse3Id] AS [OneToMany_Required_Self_Inverse3Id0], [l1].[OneToOne_Optional_PK_Inverse3Id] AS [OneToOne_Optional_PK_Inverse3Id0], [l1].[OneToOne_Optional_Self3Id] AS [OneToOne_Optional_Self3Id0] FROM ( - SELECT TOP(2) [l2].[Id], [l2].[Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Optional_Self_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToMany_Required_Self_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l2] - WHERE [l].[Id] = [l2].[OneToMany_Optional_Inverse2Id] AND ([l2].[Name] <> N'Foo' OR [l2].[Name] IS NULL) - ORDER BY [l2].[Id] + SELECT TOP(2) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l0] + WHERE [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] AND ([l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL) + ORDER BY [l0].[Id] ) AS [t] - LEFT JOIN [LevelThree] AS [l0] ON [t].[Id] = [l0].[Level2_Required_Id] - LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[OneToMany_Optional_Inverse3Id] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[Level2_Required_Id] + LEFT JOIN [LevelThree] AS [l2] ON [t].[Id] = [l2].[OneToMany_Optional_Inverse3Id] ) AS [t0] ORDER BY [l].[Id], [t0].[Id], [t0].[Id0] """); @@ -1600,15 +1600,15 @@ await base SELECT [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[Id0], [t0].[Id1], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t0].[Level2_Optional_Id0], [t0].[Level2_Required_Id0], [t0].[Name1], [t0].[OneToMany_Optional_Inverse3Id0], [t0].[OneToMany_Optional_Self_Inverse3Id0], [t0].[OneToMany_Required_Inverse3Id0], [t0].[OneToMany_Required_Self_Inverse3Id0], [t0].[OneToOne_Optional_PK_Inverse3Id0], [t0].[OneToOne_Optional_Self3Id0] FROM [LevelOne] AS [l] OUTER APPLY ( - SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l0].[Id] AS [Id0], [l1].[Id] AS [Id1], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l0].[Level2_Optional_Id] AS [Level2_Optional_Id0], [l0].[Level2_Required_Id] AS [Level2_Required_Id0], [l0].[Name] AS [Name1], [l0].[OneToMany_Optional_Inverse3Id] AS [OneToMany_Optional_Inverse3Id0], [l0].[OneToMany_Optional_Self_Inverse3Id] AS [OneToMany_Optional_Self_Inverse3Id0], [l0].[OneToMany_Required_Inverse3Id] AS [OneToMany_Required_Inverse3Id0], [l0].[OneToMany_Required_Self_Inverse3Id] AS [OneToMany_Required_Self_Inverse3Id0], [l0].[OneToOne_Optional_PK_Inverse3Id] AS [OneToOne_Optional_PK_Inverse3Id0], [l0].[OneToOne_Optional_Self3Id] AS [OneToOne_Optional_Self3Id0] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l1].[Id] AS [Id0], [l2].[Id] AS [Id1], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name] AS [Name0], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Optional_Self_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToMany_Required_Self_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[OneToOne_Optional_Self3Id], [l1].[Level2_Optional_Id] AS [Level2_Optional_Id0], [l1].[Level2_Required_Id] AS [Level2_Required_Id0], [l1].[Name] AS [Name1], [l1].[OneToMany_Optional_Inverse3Id] AS [OneToMany_Optional_Inverse3Id0], [l1].[OneToMany_Optional_Self_Inverse3Id] AS [OneToMany_Optional_Self_Inverse3Id0], [l1].[OneToMany_Required_Inverse3Id] AS [OneToMany_Required_Inverse3Id0], [l1].[OneToMany_Required_Self_Inverse3Id] AS [OneToMany_Required_Self_Inverse3Id0], [l1].[OneToOne_Optional_PK_Inverse3Id] AS [OneToOne_Optional_PK_Inverse3Id0], [l1].[OneToOne_Optional_Self3Id] AS [OneToOne_Optional_Self3Id0] FROM ( - SELECT TOP(2) [l2].[Id], [l2].[Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Optional_Self_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToMany_Required_Self_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l2] - WHERE [l].[Id] = [l2].[OneToMany_Optional_Inverse2Id] AND ([l2].[Name] <> N'Foo' OR [l2].[Name] IS NULL) - ORDER BY [l2].[Id] + SELECT TOP(2) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l0] + WHERE [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] AND ([l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL) + ORDER BY [l0].[Id] ) AS [t] - LEFT JOIN [LevelThree] AS [l0] ON [t].[Id] = [l0].[Level2_Required_Id] - LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[OneToMany_Optional_Inverse3Id] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[Level2_Required_Id] + LEFT JOIN [LevelThree] AS [l2] ON [t].[Id] = [l2].[OneToMany_Optional_Inverse3Id] ) AS [t0] ORDER BY [l].[Id], [t0].[Id], [t0].[Id0] """); @@ -1665,19 +1665,19 @@ public override async Task Filtered_include_and_non_filtered_include_followed_by SELECT [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id], [t1].[Id1], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Name1], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Optional_Self_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToMany_Required_Self_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t1].[OneToOne_Optional_Self4Id] FROM [LevelOne] AS [l] OUTER APPLY ( - SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id], [t0].[Id] AS [Id1], [t0].[Level3_Optional_Id], [t0].[Level3_Required_Id], [t0].[Name] AS [Name1], [t0].[OneToMany_Optional_Inverse4Id], [t0].[OneToMany_Optional_Self_Inverse4Id], [t0].[OneToMany_Required_Inverse4Id], [t0].[OneToMany_Required_Self_Inverse4Id], [t0].[OneToOne_Optional_PK_Inverse4Id], [t0].[OneToOne_Optional_Self4Id] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [t0].[Id] AS [Id1], [t0].[Level3_Optional_Id], [t0].[Level3_Required_Id], [t0].[Name] AS [Name1], [t0].[OneToMany_Optional_Inverse4Id], [t0].[OneToMany_Optional_Self_Inverse4Id], [t0].[OneToMany_Required_Inverse4Id], [t0].[OneToMany_Required_Self_Inverse4Id], [t0].[OneToOne_Optional_PK_Inverse4Id], [t0].[OneToOne_Optional_Self4Id] FROM ( - SELECT TOP(1) [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l1] - WHERE [l].[Id] = [l1].[OneToMany_Optional_Inverse2Id] AND ([l1].[Name] <> N'Foo' OR [l1].[Name] IS NULL) - ORDER BY [l1].[Id] + SELECT TOP(1) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l0] + WHERE [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] AND ([l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL) + ORDER BY [l0].[Id] ) AS [t] - LEFT JOIN [LevelThree] AS [l0] ON [t].[Id] = [l0].[OneToOne_Optional_PK_Inverse3Id] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[OneToOne_Optional_PK_Inverse3Id] LEFT JOIN ( SELECT [l2].[Id], [l2].[Level3_Optional_Id], [l2].[Level3_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse4Id], [l2].[OneToMany_Optional_Self_Inverse4Id], [l2].[OneToMany_Required_Inverse4Id], [l2].[OneToMany_Required_Self_Inverse4Id], [l2].[OneToOne_Optional_PK_Inverse4Id], [l2].[OneToOne_Optional_Self4Id] FROM [LevelFour] AS [l2] WHERE [l2].[Id] > 1 - ) AS [t0] ON [l0].[Id] = [t0].[OneToMany_Optional_Inverse4Id] + ) AS [t0] ON [l1].[Id] = [t0].[OneToMany_Optional_Inverse4Id] ) AS [t1] ORDER BY [l].[Id], [t1].[Id], [t1].[Id0] """); @@ -1695,15 +1695,15 @@ LEFT JOIN ( SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name] AS [Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t0].[Id0] AS [Id00], [t0].[Level3_Optional_Id], [t0].[Level3_Required_Id], [t0].[Name0] AS [Name00], [t0].[OneToMany_Optional_Inverse4Id], [t0].[OneToMany_Optional_Self_Inverse4Id], [t0].[OneToMany_Required_Inverse4Id], [t0].[OneToMany_Required_Self_Inverse4Id], [t0].[OneToOne_Optional_PK_Inverse4Id], [t0].[OneToOne_Optional_Self4Id], [t0].[Id1], [t0].[Level3_Optional_Id0], [t0].[Level3_Required_Id0], [t0].[Name1], [t0].[OneToMany_Optional_Inverse4Id0], [t0].[OneToMany_Optional_Self_Inverse4Id0], [t0].[OneToMany_Required_Inverse4Id0], [t0].[OneToMany_Required_Self_Inverse4Id0], [t0].[OneToOne_Optional_PK_Inverse4Id0], [t0].[OneToOne_Optional_Self4Id0] FROM [LevelTwo] AS [l0] OUTER APPLY ( - SELECT [t].[Id], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Optional_Self_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToMany_Required_Self_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[OneToOne_Optional_Self3Id], [l1].[Id] AS [Id0], [l1].[Level3_Optional_Id], [l1].[Level3_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse4Id], [l1].[OneToMany_Optional_Self_Inverse4Id], [l1].[OneToMany_Required_Inverse4Id], [l1].[OneToMany_Required_Self_Inverse4Id], [l1].[OneToOne_Optional_PK_Inverse4Id], [l1].[OneToOne_Optional_Self4Id], [l2].[Id] AS [Id1], [l2].[Level3_Optional_Id] AS [Level3_Optional_Id0], [l2].[Level3_Required_Id] AS [Level3_Required_Id0], [l2].[Name] AS [Name1], [l2].[OneToMany_Optional_Inverse4Id] AS [OneToMany_Optional_Inverse4Id0], [l2].[OneToMany_Optional_Self_Inverse4Id] AS [OneToMany_Optional_Self_Inverse4Id0], [l2].[OneToMany_Required_Inverse4Id] AS [OneToMany_Required_Inverse4Id0], [l2].[OneToMany_Required_Self_Inverse4Id] AS [OneToMany_Required_Self_Inverse4Id0], [l2].[OneToOne_Optional_PK_Inverse4Id] AS [OneToOne_Optional_PK_Inverse4Id0], [l2].[OneToOne_Optional_Self4Id] AS [OneToOne_Optional_Self4Id0] + SELECT [t].[Id], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Optional_Self_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToMany_Required_Self_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[OneToOne_Optional_Self3Id], [l2].[Id] AS [Id0], [l2].[Level3_Optional_Id], [l2].[Level3_Required_Id], [l2].[Name] AS [Name0], [l2].[OneToMany_Optional_Inverse4Id], [l2].[OneToMany_Optional_Self_Inverse4Id], [l2].[OneToMany_Required_Inverse4Id], [l2].[OneToMany_Required_Self_Inverse4Id], [l2].[OneToOne_Optional_PK_Inverse4Id], [l2].[OneToOne_Optional_Self4Id], [l3].[Id] AS [Id1], [l3].[Level3_Optional_Id] AS [Level3_Optional_Id0], [l3].[Level3_Required_Id] AS [Level3_Required_Id0], [l3].[Name] AS [Name1], [l3].[OneToMany_Optional_Inverse4Id] AS [OneToMany_Optional_Inverse4Id0], [l3].[OneToMany_Optional_Self_Inverse4Id] AS [OneToMany_Optional_Self_Inverse4Id0], [l3].[OneToMany_Required_Inverse4Id] AS [OneToMany_Required_Inverse4Id0], [l3].[OneToMany_Required_Self_Inverse4Id] AS [OneToMany_Required_Self_Inverse4Id0], [l3].[OneToOne_Optional_PK_Inverse4Id] AS [OneToOne_Optional_PK_Inverse4Id0], [l3].[OneToOne_Optional_Self4Id] AS [OneToOne_Optional_Self4Id0] FROM ( - SELECT TOP(1) [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Optional_Self_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToMany_Required_Self_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[OneToOne_Optional_Self3Id] - FROM [LevelThree] AS [l3] - WHERE [l0].[Id] = [l3].[OneToMany_Optional_Inverse3Id] AND ([l3].[Name] <> N'Foo' OR [l3].[Name] IS NULL) - ORDER BY [l3].[Id] + SELECT TOP(1) [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id] + FROM [LevelThree] AS [l1] + WHERE [l0].[Id] = [l1].[OneToMany_Optional_Inverse3Id] AND ([l1].[Name] <> N'Foo' OR [l1].[Name] IS NULL) + ORDER BY [l1].[Id] ) AS [t] - LEFT JOIN [LevelFour] AS [l1] ON [t].[Id] = [l1].[OneToMany_Optional_Inverse4Id] - LEFT JOIN [LevelFour] AS [l2] ON [t].[Id] = [l2].[OneToMany_Required_Inverse4Id] + LEFT JOIN [LevelFour] AS [l2] ON [t].[Id] = [l2].[OneToMany_Optional_Inverse4Id] + LEFT JOIN [LevelFour] AS [l3] ON [t].[Id] = [l3].[OneToMany_Required_Inverse4Id] ) AS [t0] ) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] ORDER BY [l].[Id], [t1].[Id], [t1].[Id0], [t1].[Id00] @@ -1722,15 +1722,15 @@ LEFT JOIN ( SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name] AS [Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t0].[Id0] AS [Id00], [t0].[Level3_Optional_Id], [t0].[Level3_Required_Id], [t0].[Name0] AS [Name00], [t0].[OneToMany_Optional_Inverse4Id], [t0].[OneToMany_Optional_Self_Inverse4Id], [t0].[OneToMany_Required_Inverse4Id], [t0].[OneToMany_Required_Self_Inverse4Id], [t0].[OneToOne_Optional_PK_Inverse4Id], [t0].[OneToOne_Optional_Self4Id], [t0].[Id1], [t0].[Level3_Optional_Id0], [t0].[Level3_Required_Id0], [t0].[Name1], [t0].[OneToMany_Optional_Inverse4Id0], [t0].[OneToMany_Optional_Self_Inverse4Id0], [t0].[OneToMany_Required_Inverse4Id0], [t0].[OneToMany_Required_Self_Inverse4Id0], [t0].[OneToOne_Optional_PK_Inverse4Id0], [t0].[OneToOne_Optional_Self4Id0] FROM [LevelTwo] AS [l0] OUTER APPLY ( - SELECT [t].[Id], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Optional_Self_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToMany_Required_Self_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[OneToOne_Optional_Self3Id], [l1].[Id] AS [Id0], [l1].[Level3_Optional_Id], [l1].[Level3_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse4Id], [l1].[OneToMany_Optional_Self_Inverse4Id], [l1].[OneToMany_Required_Inverse4Id], [l1].[OneToMany_Required_Self_Inverse4Id], [l1].[OneToOne_Optional_PK_Inverse4Id], [l1].[OneToOne_Optional_Self4Id], [l2].[Id] AS [Id1], [l2].[Level3_Optional_Id] AS [Level3_Optional_Id0], [l2].[Level3_Required_Id] AS [Level3_Required_Id0], [l2].[Name] AS [Name1], [l2].[OneToMany_Optional_Inverse4Id] AS [OneToMany_Optional_Inverse4Id0], [l2].[OneToMany_Optional_Self_Inverse4Id] AS [OneToMany_Optional_Self_Inverse4Id0], [l2].[OneToMany_Required_Inverse4Id] AS [OneToMany_Required_Inverse4Id0], [l2].[OneToMany_Required_Self_Inverse4Id] AS [OneToMany_Required_Self_Inverse4Id0], [l2].[OneToOne_Optional_PK_Inverse4Id] AS [OneToOne_Optional_PK_Inverse4Id0], [l2].[OneToOne_Optional_Self4Id] AS [OneToOne_Optional_Self4Id0] + SELECT [t].[Id], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Optional_Self_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToMany_Required_Self_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[OneToOne_Optional_Self3Id], [l2].[Id] AS [Id0], [l2].[Level3_Optional_Id], [l2].[Level3_Required_Id], [l2].[Name] AS [Name0], [l2].[OneToMany_Optional_Inverse4Id], [l2].[OneToMany_Optional_Self_Inverse4Id], [l2].[OneToMany_Required_Inverse4Id], [l2].[OneToMany_Required_Self_Inverse4Id], [l2].[OneToOne_Optional_PK_Inverse4Id], [l2].[OneToOne_Optional_Self4Id], [l3].[Id] AS [Id1], [l3].[Level3_Optional_Id] AS [Level3_Optional_Id0], [l3].[Level3_Required_Id] AS [Level3_Required_Id0], [l3].[Name] AS [Name1], [l3].[OneToMany_Optional_Inverse4Id] AS [OneToMany_Optional_Inverse4Id0], [l3].[OneToMany_Optional_Self_Inverse4Id] AS [OneToMany_Optional_Self_Inverse4Id0], [l3].[OneToMany_Required_Inverse4Id] AS [OneToMany_Required_Inverse4Id0], [l3].[OneToMany_Required_Self_Inverse4Id] AS [OneToMany_Required_Self_Inverse4Id0], [l3].[OneToOne_Optional_PK_Inverse4Id] AS [OneToOne_Optional_PK_Inverse4Id0], [l3].[OneToOne_Optional_Self4Id] AS [OneToOne_Optional_Self4Id0] FROM ( - SELECT TOP(1) [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Optional_Self_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToMany_Required_Self_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[OneToOne_Optional_Self3Id] - FROM [LevelThree] AS [l3] - WHERE [l0].[Id] = [l3].[OneToMany_Optional_Inverse3Id] AND ([l3].[Name] <> N'Foo' OR [l3].[Name] IS NULL) - ORDER BY [l3].[Id] + SELECT TOP(1) [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id] + FROM [LevelThree] AS [l1] + WHERE [l0].[Id] = [l1].[OneToMany_Optional_Inverse3Id] AND ([l1].[Name] <> N'Foo' OR [l1].[Name] IS NULL) + ORDER BY [l1].[Id] ) AS [t] - LEFT JOIN [LevelFour] AS [l1] ON [t].[Id] = [l1].[OneToMany_Optional_Inverse4Id] - LEFT JOIN [LevelFour] AS [l2] ON [t].[Id] = [l2].[OneToMany_Required_Inverse4Id] + LEFT JOIN [LevelFour] AS [l2] ON [t].[Id] = [l2].[OneToMany_Optional_Inverse4Id] + LEFT JOIN [LevelFour] AS [l3] ON [t].[Id] = [l3].[OneToMany_Required_Inverse4Id] ) AS [t0] ) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] ORDER BY [l].[Id], [t1].[Id], [t1].[Id0], [t1].[Id00] @@ -1818,7 +1818,7 @@ public override async Task Filtered_include_outer_parameter_used_inside_filter(b AssertSql( """ -SELECT [l].[Id], [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[Id0], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Name0], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Optional_Self_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToMany_Required_Self_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[OneToOne_Optional_Self3Id], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id] +SELECT [l].[Id], [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[Id0], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Name0], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Optional_Self_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToMany_Required_Self_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[OneToOne_Optional_Self3Id], [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id] FROM [LevelOne] AS [l] OUTER APPLY ( SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id] @@ -1826,15 +1826,15 @@ FROM [LevelTwo] AS [l0] LEFT JOIN [LevelThree] AS [l1] ON [l0].[Id] = [l1].[OneToMany_Optional_Inverse3Id] ) AS [t] OUTER APPLY ( - SELECT [l2].[Id], [l2].[Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Optional_Self_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToMany_Required_Self_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[OneToOne_Optional_Self2Id], [t1].[Id] AS [Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name] AS [Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id] + SELECT [l2].[Id], [l2].[Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Optional_Self_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToMany_Required_Self_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[OneToOne_Optional_Self2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name] AS [Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id] FROM [LevelTwo] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Optional_Self_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToMany_Required_Self_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[OneToOne_Optional_Self3Id] FROM [LevelThree] AS [l3] WHERE [l3].[Id] <> [l].[Id] - ) AS [t1] ON [l2].[Id] = [t1].[OneToMany_Optional_Inverse3Id] -) AS [t0] -ORDER BY [l].[Id], [t].[Id], [t].[Id0], [t0].[Id] + ) AS [t0] ON [l2].[Id] = [t0].[OneToMany_Optional_Inverse3Id] +) AS [t1] +ORDER BY [l].[Id], [t].[Id], [t].[Id0], [t1].[Id] """); } @@ -1914,23 +1914,23 @@ public override async Task Take_Select_collection_Take(bool async) """ @__p_0='1' -SELECT [t].[Id], [t].[Name], [t0].[Id], [t0].[Name], [t0].[Level1Id], [t0].[Level2Id], [t0].[Id0], [t0].[Date], [t0].[Name0], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] +SELECT [t0].[Id], [t0].[Name], [t1].[Id], [t1].[Name], [t1].[Level1Id], [t1].[Level2Id], [t1].[Id0], [t1].[Date], [t1].[Name0], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] FROM ( SELECT TOP(@__p_0) [l].[Id], [l].[Name] FROM [LevelOne] AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Name], [t1].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t1].[Level1_Required_Id] AS [Level2Id], [l0].[Id] AS [Id0], [l0].[Date], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id] + SELECT [t].[Id], [t].[Name], [t].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t].[Level1_Required_Id] AS [Level2Id], [l1].[Id] AS [Id0], [l1].[Date], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Self_Inverse1Id], [l1].[OneToMany_Required_Self_Inverse1Id], [l1].[OneToOne_Optional_Self1Id] FROM ( - SELECT TOP(3) [l1].[Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Required_Inverse2Id] - FROM [LevelTwo] AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Required_Inverse2Id] - ORDER BY [l1].[Id] - ) AS [t1] - INNER JOIN [LevelOne] AS [l0] ON [t1].[Level1_Required_Id] = [l0].[Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[Id] + SELECT TOP(3) [l0].[Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Required_Inverse2Id] + FROM [LevelTwo] AS [l0] + WHERE [t0].[Id] = [l0].[OneToMany_Required_Inverse2Id] + ORDER BY [l0].[Id] + ) AS [t] + INNER JOIN [LevelOne] AS [l1] ON [t].[Level1_Required_Id] = [l1].[Id] +) AS [t1] +ORDER BY [t0].[Id], [t1].[Id] """); } @@ -1942,25 +1942,25 @@ public override async Task Skip_Take_Select_collection_Skip_Take(bool async) """ @__p_0='1' -SELECT [t].[Id], [t].[Name], [t0].[Id], [t0].[Name], [t0].[Level1Id], [t0].[Level2Id], [t0].[Id0], [t0].[Date], [t0].[Name0], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] +SELECT [t0].[Id], [t0].[Name], [t1].[Id], [t1].[Name], [t1].[Level1Id], [t1].[Level2Id], [t1].[Id0], [t1].[Date], [t1].[Name0], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] FROM ( SELECT [l].[Id], [l].[Name] FROM [LevelOne] AS [l] ORDER BY [l].[Id] OFFSET @__p_0 ROWS FETCH NEXT @__p_0 ROWS ONLY -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Name], [t1].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t1].[Level1_Required_Id] AS [Level2Id], [l0].[Id] AS [Id0], [l0].[Date], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id] + SELECT [t].[Id], [t].[Name], [t].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t].[Level1_Required_Id] AS [Level2Id], [l1].[Id] AS [Id0], [l1].[Date], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Self_Inverse1Id], [l1].[OneToMany_Required_Self_Inverse1Id], [l1].[OneToOne_Optional_Self1Id] FROM ( - SELECT [l1].[Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Required_Inverse2Id] - FROM [LevelTwo] AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Required_Inverse2Id] - ORDER BY [l1].[Id] + SELECT [l0].[Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Required_Inverse2Id] + FROM [LevelTwo] AS [l0] + WHERE [t0].[Id] = [l0].[OneToMany_Required_Inverse2Id] + ORDER BY [l0].[Id] OFFSET 1 ROWS FETCH NEXT 3 ROWS ONLY - ) AS [t1] - INNER JOIN [LevelOne] AS [l0] ON [t1].[Level1_Required_Id] = [l0].[Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[Id] + ) AS [t] + INNER JOIN [LevelOne] AS [l1] ON [t].[Level1_Required_Id] = [l1].[Id] +) AS [t1] +ORDER BY [t0].[Id], [t1].[Id] """); } @@ -1989,23 +1989,23 @@ public override async Task Filtered_include_Take_with_another_Take_on_top_level( """ @__p_0='5' -SELECT [t].[Id], [t].[Date], [t].[Name], [t].[OneToMany_Optional_Self_Inverse1Id], [t].[OneToMany_Required_Self_Inverse1Id], [t].[OneToOne_Optional_Self1Id], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id] +SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id] FROM ( SELECT TOP(@__p_0) [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id] FROM [LevelOne] AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id] FROM ( - SELECT TOP(4) [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Optional_Inverse2Id] - ORDER BY [l1].[Name] DESC - ) AS [t1] - LEFT JOIN [LevelThree] AS [l0] ON [t1].[Id] = [l0].[Level2_Optional_Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[Name] DESC, [t0].[Id] + SELECT TOP(4) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l0] + WHERE [t0].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + ORDER BY [l0].[Name] DESC + ) AS [t] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[Level2_Optional_Id] +) AS [t1] +ORDER BY [t0].[Id], [t1].[Name] DESC, [t1].[Id] """); } @@ -2018,25 +2018,25 @@ public override async Task Filtered_include_Skip_Take_with_another_Skip_Take_on_ @__p_0='1' @__p_1='5' -SELECT [t].[Id], [t].[Date], [t].[Name], [t].[OneToMany_Optional_Self_Inverse1Id], [t].[OneToMany_Required_Self_Inverse1Id], [t].[OneToOne_Optional_Self1Id], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id] +SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id] FROM ( SELECT [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id] FROM [LevelOne] AS [l] ORDER BY [l].[Id] DESC OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id] FROM ( - SELECT [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Optional_Inverse2Id] - ORDER BY [l1].[Name] DESC + SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l0] + WHERE [t0].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + ORDER BY [l0].[Name] DESC OFFSET 1 ROWS FETCH NEXT 4 ROWS ONLY - ) AS [t1] - LEFT JOIN [LevelThree] AS [l0] ON [t1].[Id] = [l0].[Level2_Optional_Id] -) AS [t0] -ORDER BY [t].[Id] DESC, [t0].[Name] DESC, [t0].[Id] + ) AS [t] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[Level2_Optional_Id] +) AS [t1] +ORDER BY [t0].[Id] DESC, [t1].[Name] DESC, [t1].[Id] """); } @@ -2047,22 +2047,22 @@ public override async Task Filtered_include_with_Take_without_order_by_followed_ AssertSql( """ -SELECT [t].[Id], [t].[Date], [t].[Name], [t].[OneToMany_Optional_Self_Inverse1Id], [t].[OneToMany_Required_Self_Inverse1Id], [t].[OneToOne_Optional_Self1Id], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id] +SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id] FROM ( SELECT TOP(1) [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id] FROM [LevelOne] AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id] FROM ( - SELECT TOP(40) [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Optional_Inverse2Id] - ) AS [t1] - LEFT JOIN [LevelThree] AS [l0] ON [t1].[Id] = [l0].[Level2_Optional_Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[Id] + SELECT TOP(40) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l0] + WHERE [t0].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + ) AS [t] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[Level2_Optional_Id] +) AS [t1] +ORDER BY [t0].[Id], [t1].[Id] """); } @@ -2075,22 +2075,22 @@ public override async Task Filtered_include_with_Take_without_order_by_followed_ """ @__p_0='30' -SELECT [t].[Id], [t].[Date], [t].[Name], [t].[OneToMany_Optional_Self_Inverse1Id], [t].[OneToMany_Required_Self_Inverse1Id], [t].[OneToOne_Optional_Self1Id], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id] +SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id] FROM ( SELECT TOP(@__p_0) [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id] FROM [LevelOne] AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id] FROM ( - SELECT TOP(40) [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Optional_Inverse2Id] - ) AS [t1] - LEFT JOIN [LevelThree] AS [l0] ON [t1].[Id] = [l0].[Level2_Optional_Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[Id] + SELECT TOP(40) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l0] + WHERE [t0].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + ) AS [t] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[Level2_Optional_Id] +) AS [t1] +ORDER BY [t0].[Id], [t1].[Id] """); } @@ -2100,21 +2100,21 @@ public override async Task Skip_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] FROM ( SELECT [l].[Date] FROM [LevelOne] AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + ) AS [t0] + WHERE 1 < [t0].[row] +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -2124,21 +2124,21 @@ public override async Task Take_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] FROM ( SELECT [l].[Date] FROM [LevelOne] AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name] DESC) AS [row] FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 10 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] DESC + ) AS [t0] + WHERE [t0].[row] <= 10 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] DESC """); } @@ -2148,21 +2148,21 @@ public override async Task Skip_Take_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] FROM ( SELECT [l].[Date] FROM [LevelOne] AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -2172,23 +2172,23 @@ public override async Task Skip_Take_Distinct_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] +SELECT [t0].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] FROM ( SELECT [l].[Date] FROM [LevelOne] AS [l] GROUP BY [l].[Date] -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT DISTINCT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT DISTINCT [t].[Id], [t].[Date], [t].[Name], [t].[OneToMany_Optional_Self_Inverse1Id], [t].[OneToMany_Required_Self_Inverse1Id], [t].[OneToOne_Optional_Self1Id] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id] FROM [LevelOne] AS [l0] - WHERE [t].[Date] = [l0].[Date] + WHERE [t0].[Date] = [l0].[Date] ORDER BY [l0].[Name] OFFSET 1 ROWS FETCH NEXT 5 ROWS ONLY - ) AS [t1] -) AS [t0] -ORDER BY [t].[Date] + ) AS [t] +) AS [t1] +ORDER BY [t0].[Date] """); } @@ -2198,21 +2198,21 @@ public override async Task Skip_Take_ToList_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] FROM ( SELECT [l].[Date] FROM [LevelOne] AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -2222,21 +2222,21 @@ public override async Task Skip_Take_on_grouping_element_into_non_entity(bool as AssertSql( """ -SELECT [t].[Date], [t0].[Name], [t0].[Id] +SELECT [t].[Date], [t1].[Name], [t1].[Id] FROM ( SELECT [l].[Date] FROM [LevelOne] AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Name], [t1].[Id], [t1].[Date] + SELECT [t0].[Name], [t0].[Id], [t0].[Date] FROM ( SELECT [l0].[Name], [l0].[Id], [l0].[Date], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -2246,24 +2246,24 @@ public override async Task Skip_Take_on_grouping_element_with_collection_include AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[Id0], [t0].[Date0], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[Id0], [t1].[Date0], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id] FROM ( SELECT [l].[Date] FROM [LevelOne] AS [l] GROUP BY [l].[Date] ) AS [t] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [l0].[Id] AS [Id0], [l0].[Date] AS [Date0], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [l1].[Id] AS [Id0], [l1].[Date] AS [Date0], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] FROM ( - SELECT [l1].[Id], [l1].[Date], [l1].[Name], [l1].[OneToMany_Optional_Self_Inverse1Id], [l1].[OneToMany_Required_Self_Inverse1Id], [l1].[OneToOne_Optional_Self1Id] - FROM [LevelOne] AS [l1] - WHERE [t].[Date] = [l1].[Date] - ORDER BY [l1].[Name] + SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id] + FROM [LevelOne] AS [l0] + WHERE [t].[Date] = [l0].[Date] + ORDER BY [l0].[Name] OFFSET 1 ROWS FETCH NEXT 5 ROWS ONLY - ) AS [t1] - LEFT JOIN [LevelTwo] AS [l0] ON [t1].[Id] = [l0].[OneToMany_Optional_Inverse2Id] -) AS [t0] -ORDER BY [t].[Date], [t0].[Name], [t0].[Id] + ) AS [t0] + LEFT JOIN [LevelTwo] AS [l1] ON [t0].[Id] = [l1].[OneToMany_Optional_Inverse2Id] +) AS [t1] +ORDER BY [t].[Date], [t1].[Name], [t1].[Id] """); } @@ -2273,24 +2273,24 @@ public override async Task Skip_Take_on_grouping_element_with_reference_include( AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[Id0], [t0].[Date0], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id] +SELECT [t0].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[Id0], [t1].[Date0], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id] FROM ( SELECT [l].[Date] FROM [LevelOne] AS [l] GROUP BY [l].[Date] -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [l0].[Id] AS [Id0], [l0].[Date] AS [Date0], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + SELECT [t].[Id], [t].[Date], [t].[Name], [t].[OneToMany_Optional_Self_Inverse1Id], [t].[OneToMany_Required_Self_Inverse1Id], [t].[OneToOne_Optional_Self1Id], [l1].[Id] AS [Id0], [l1].[Date] AS [Date0], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] FROM ( - SELECT [l1].[Id], [l1].[Date], [l1].[Name], [l1].[OneToMany_Optional_Self_Inverse1Id], [l1].[OneToMany_Required_Self_Inverse1Id], [l1].[OneToOne_Optional_Self1Id] - FROM [LevelOne] AS [l1] - WHERE [t].[Date] = [l1].[Date] - ORDER BY [l1].[Name] + SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id] + FROM [LevelOne] AS [l0] + WHERE [t0].[Date] = [l0].[Date] + ORDER BY [l0].[Name] OFFSET 1 ROWS FETCH NEXT 5 ROWS ONLY - ) AS [t1] - LEFT JOIN [LevelTwo] AS [l0] ON [t1].[Id] = [l0].[Level1_Optional_Id] -) AS [t0] -ORDER BY [t].[Date], [t0].[Name], [t0].[Id] + ) AS [t] + LEFT JOIN [LevelTwo] AS [l1] ON [t].[Id] = [l1].[Level1_Optional_Id] +) AS [t1] +ORDER BY [t0].[Date], [t1].[Name], [t1].[Id] """); } @@ -2303,7 +2303,7 @@ public override async Task Skip_Take_on_grouping_element_inside_collection_proje SELECT [l].[Id], [t2].[Date], [t2].[Id], [t2].[Date0], [t2].[Name], [t2].[OneToMany_Optional_Self_Inverse1Id], [t2].[OneToMany_Required_Self_Inverse1Id], [t2].[OneToOne_Optional_Self1Id] FROM [LevelOne] AS [l] OUTER APPLY ( - SELECT [t].[Date], [t0].[Id], [t0].[Date] AS [Date0], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] + SELECT [t].[Date], [t1].[Id], [t1].[Date] AS [Date0], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] FROM ( SELECT [l0].[Date] FROM [LevelOne] AS [l0] @@ -2311,14 +2311,14 @@ FROM [LevelOne] AS [l0] GROUP BY [l0].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( SELECT [l1].[Id], [l1].[Date], [l1].[Name], [l1].[OneToMany_Optional_Self_Inverse1Id], [l1].[OneToMany_Required_Self_Inverse1Id], [l1].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l1].[Date] ORDER BY [l1].[Name]) AS [row] FROM [LevelOne] AS [l1] WHERE [l1].[Name] = [l].[Name] OR ([l1].[Name] IS NULL AND [l].[Name] IS NULL) - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 - ) AS [t0] ON [t].[Date] = [t0].[Date] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 + ) AS [t1] ON [t].[Date] = [t1].[Date] ) AS [t2] ORDER BY [l].[Id], [t2].[Date], [t2].[Date0], [t2].[Name] """); @@ -2466,7 +2466,7 @@ public override async Task Complex_query_issue_21665(bool async) AssertSql( """ -SELECT [t].[Id], [t].[Date], [t].[Name], [t].[OneToMany_Optional_Self_Inverse1Id], [t].[OneToMany_Required_Self_Inverse1Id], [t].[OneToOne_Optional_Self1Id], [t].[Name0], [t].[c], [t].[c0], [t].[c1], [t].[Id0], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[ChildCount], [t0].[Level2Name], [t0].[Level2Count], [t0].[IsLevel2There], [t0].[Id0] +SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[Name0], [t0].[c], [t0].[c0], [t0].[c1], [t0].[Id0], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[ChildCount], [t1].[Level2Name], [t1].[Level2Count], [t1].[IsLevel2There], [t1].[Id0] FROM ( SELECT TOP(1) [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [l0].[Name] AS [Name0], ( SELECT COUNT(*) @@ -2485,31 +2485,31 @@ FROM [LevelOne] AS [l] LEFT JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[Level1_Optional_Id] WHERE [l].[Id] = 2 ORDER BY [l].[Name] -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], ( + SELECT [t].[Id], [t].[Date], [t].[Name], [t].[OneToMany_Optional_Self_Inverse1Id], [t].[OneToMany_Required_Self_Inverse1Id], [t].[OneToOne_Optional_Self1Id], ( SELECT COUNT(*) - FROM [LevelOne] AS [l5] - WHERE [t1].[Id] = [l5].[OneToMany_Optional_Self_Inverse1Id]) AS [ChildCount], [l4].[Name] AS [Level2Name], ( + FROM [LevelOne] AS [l6] + WHERE [t].[Id] = [l6].[OneToMany_Optional_Self_Inverse1Id]) AS [ChildCount], [l5].[Name] AS [Level2Name], ( SELECT COUNT(*) - FROM [LevelTwo] AS [l6] - WHERE [t1].[Id] = [l6].[OneToMany_Optional_Inverse2Id]) AS [Level2Count], CASE + FROM [LevelTwo] AS [l7] + WHERE [t].[Id] = [l7].[OneToMany_Optional_Inverse2Id]) AS [Level2Count], CASE WHEN EXISTS ( SELECT 1 - FROM [LevelTwo] AS [l7] - WHERE [t1].[Id] = [l7].[OneToMany_Optional_Inverse2Id] AND [l7].[Id] = 2) THEN CAST(1 AS bit) + FROM [LevelTwo] AS [l8] + WHERE [t].[Id] = [l8].[OneToMany_Optional_Inverse2Id] AND [l8].[Id] = 2) THEN CAST(1 AS bit) ELSE CAST(0 AS bit) - END AS [IsLevel2There], [l4].[Id] AS [Id0] + END AS [IsLevel2There], [l5].[Id] AS [Id0] FROM ( - SELECT [l8].[Id], [l8].[Date], [l8].[Name], [l8].[OneToMany_Optional_Self_Inverse1Id], [l8].[OneToMany_Required_Self_Inverse1Id], [l8].[OneToOne_Optional_Self1Id] - FROM [LevelOne] AS [l8] - WHERE [t].[Id] = [l8].[OneToMany_Optional_Self_Inverse1Id] - ORDER BY [l8].[Name] + SELECT [l4].[Id], [l4].[Date], [l4].[Name], [l4].[OneToMany_Optional_Self_Inverse1Id], [l4].[OneToMany_Required_Self_Inverse1Id], [l4].[OneToOne_Optional_Self1Id] + FROM [LevelOne] AS [l4] + WHERE [t0].[Id] = [l4].[OneToMany_Optional_Self_Inverse1Id] + ORDER BY [l4].[Name] OFFSET 1 ROWS FETCH NEXT 5 ROWS ONLY - ) AS [t1] - LEFT JOIN [LevelTwo] AS [l4] ON [t1].[Id] = [l4].[Level1_Optional_Id] -) AS [t0] -ORDER BY [t].[Name], [t].[Id], [t].[Id0], [t0].[Name], [t0].[Id] + ) AS [t] + LEFT JOIN [LevelTwo] AS [l5] ON [t].[Id] = [l5].[Level1_Optional_Id] +) AS [t1] +ORDER BY [t0].[Name], [t0].[Id], [t0].[Id0], [t1].[Name], [t1].[Id] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsCollectionsSharedTypeQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsCollectionsSharedTypeQuerySqlServerTest.cs index d4b57543b6b..ed07c10b41a 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsCollectionsSharedTypeQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsCollectionsSharedTypeQuerySqlServerTest.cs @@ -108,29 +108,29 @@ public override async Task Take_Select_collection_Take(bool async) """ @__p_0='1' -SELECT [t].[Id], [t].[Name], [t0].[Id], [t0].[Name], [t0].[Level1Id], [t0].[Level2Id], [t0].[Id0], [t0].[Date], [t0].[Name0], [t0].[Id1] +SELECT [t0].[Id], [t0].[Name], [t1].[Id], [t1].[Name], [t1].[Level1Id], [t1].[Level2Id], [t1].[Id0], [t1].[Date], [t1].[Name0], [t1].[Id1] FROM ( SELECT TOP(@__p_0) [l].[Id], [l].[Name] FROM [Level1] AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t0] OUTER APPLY ( SELECT CASE - WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] - END AS [Id], [t1].[Level2_Name] AS [Name], [t1].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t1].[Level1_Required_Id] AS [Level2Id], [l0].[Id] AS [Id0], [l0].[Date], [l0].[Name] AS [Name0], [t1].[Id] AS [Id1], [t1].[c] + WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] + END AS [Id], [t].[Level2_Name] AS [Name], [t].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t].[Level1_Required_Id] AS [Level2Id], [l1].[Id] AS [Id0], [l1].[Date], [l1].[Name] AS [Name0], [t].[Id] AS [Id1], [t].[c] FROM ( - SELECT TOP(3) [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Required_Inverse2Id], CASE - WHEN [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l1].[Id] + SELECT TOP(3) [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Required_Inverse2Id], CASE + WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END AS [c] - FROM [Level1] AS [l1] - WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[Id] = [l1].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l0] + WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[Id] = [l0].[OneToMany_Required_Inverse2Id] ORDER BY CASE - WHEN [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l1].[Id] + WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END - ) AS [t1] - INNER JOIN [Level1] AS [l0] ON [t1].[Level1_Required_Id] = [l0].[Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[c], [t0].[Id1] + ) AS [t] + INNER JOIN [Level1] AS [l1] ON [t].[Level1_Required_Id] = [l1].[Id] +) AS [t1] +ORDER BY [t0].[Id], [t1].[c], [t1].[Id1] """); } @@ -142,31 +142,31 @@ public override async Task Skip_Take_Select_collection_Skip_Take(bool async) """ @__p_0='1' -SELECT [t].[Id], [t].[Name], [t0].[Id], [t0].[Name], [t0].[Level1Id], [t0].[Level2Id], [t0].[Id0], [t0].[Date], [t0].[Name0], [t0].[Id1] +SELECT [t0].[Id], [t0].[Name], [t1].[Id], [t1].[Name], [t1].[Level1Id], [t1].[Level2Id], [t1].[Id0], [t1].[Date], [t1].[Name0], [t1].[Id1] FROM ( SELECT [l].[Id], [l].[Name] FROM [Level1] AS [l] ORDER BY [l].[Id] OFFSET @__p_0 ROWS FETCH NEXT @__p_0 ROWS ONLY -) AS [t] +) AS [t0] OUTER APPLY ( SELECT CASE - WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] - END AS [Id], [t1].[Level2_Name] AS [Name], [t1].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t1].[Level1_Required_Id] AS [Level2Id], [l0].[Id] AS [Id0], [l0].[Date], [l0].[Name] AS [Name0], [t1].[Id] AS [Id1], [t1].[c] + WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] + END AS [Id], [t].[Level2_Name] AS [Name], [t].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t].[Level1_Required_Id] AS [Level2Id], [l1].[Id] AS [Id0], [l1].[Date], [l1].[Name] AS [Name0], [t].[Id] AS [Id1], [t].[c] FROM ( - SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Required_Inverse2Id], CASE - WHEN [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l1].[Id] + SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Required_Inverse2Id], CASE + WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END AS [c] - FROM [Level1] AS [l1] - WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[Id] = [l1].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l0] + WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[Id] = [l0].[OneToMany_Required_Inverse2Id] ORDER BY CASE - WHEN [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l1].[Id] + WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END OFFSET 1 ROWS FETCH NEXT 3 ROWS ONLY - ) AS [t1] - INNER JOIN [Level1] AS [l0] ON [t1].[Level1_Required_Id] = [l0].[Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[c], [t0].[Id1] + ) AS [t] + INNER JOIN [Level1] AS [l1] ON [t].[Level1_Required_Id] = [l1].[Id] +) AS [t1] +ORDER BY [t0].[Id], [t1].[c], [t1].[Id1] """); } @@ -340,29 +340,29 @@ public override async Task Filtered_include_Take_with_another_Take_on_top_level( """ @__p_0='5' -SELECT [t].[Id], [t].[Date], [t].[Name], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] FROM ( SELECT TOP(@__p_0) [l].[Id], [l].[Date], [l].[Name] FROM [Level1] AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t1] OUTER APPLY ( - SELECT [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id] AS [Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] + SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] FROM ( SELECT TOP(4) [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l0] - WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t1].[Id] = [l0].[OneToMany_Optional_Inverse2Id] ORDER BY [l0].[Level2_Name] DESC - ) AS [t0] + ) AS [t] LEFT JOIN ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE - WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] - END = [t2].[Level2_Optional_Id] -) AS [t1] -ORDER BY [t].[Id], [t1].[Level2_Name] DESC, [t1].[Id] + ) AS [t0] ON CASE + WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] + END = [t0].[Level2_Optional_Id] +) AS [t2] +ORDER BY [t1].[Id], [t2].[Level2_Name] DESC, [t2].[Id] """); } @@ -375,7 +375,7 @@ public override async Task Filtered_include_after_different_filtered_include_dif SELECT [l].[Id], [l].[Date], [l].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l] OUTER APPLY ( - SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] + SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id] AS [Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] FROM ( SELECT TOP(3) [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l0] @@ -383,16 +383,16 @@ FROM [Level1] AS [l0] ORDER BY [l0].[Level2_Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] + SELECT [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] FROM ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Required_Inverse3Id] ORDER BY [l1].[Level3_Name] DESC) AS [row] FROM [Level1] AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL AND ([l1].[Level3_Name] <> N'Bar' OR [l1].[Level3_Name] IS NULL) - ) AS [t1] - WHERE 1 < [t1].[row] - ) AS [t0] ON CASE + ) AS [t0] + WHERE 1 < [t0].[row] + ) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] - END = [t0].[OneToMany_Required_Inverse3Id] + END = [t1].[OneToMany_Required_Inverse3Id] ) AS [t2] ORDER BY [l].[Id], [t2].[Level2_Name], [t2].[Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[Level3_Name] DESC """); @@ -443,7 +443,7 @@ public override async Task Filtered_include_on_ThenInclude(bool async) AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] +SELECT [l].[Id], [l].[Date], [l].[Name], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id] @@ -451,17 +451,17 @@ FROM [Level1] AS [l0] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l].[Id] = [t].[Level1_Optional_Id] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] + SELECT [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] FROM ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Optional_Inverse3Id] ORDER BY [l1].[Level3_Name]) AS [row] FROM [Level1] AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL AND ([l1].[Level3_Name] <> N'Foo' OR [l1].[Level3_Name] IS NULL) - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 4 -) AS [t0] ON CASE + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 4 +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] -END = [t0].[OneToMany_Optional_Inverse3Id] -ORDER BY [l].[Id], [t].[Id], [t0].[OneToMany_Optional_Inverse3Id], [t0].[Level3_Name] +END = [t1].[OneToMany_Optional_Inverse3Id] +ORDER BY [l].[Id], [t].[Id], [t1].[OneToMany_Optional_Inverse3Id], [t1].[Level3_Name] """); } @@ -491,7 +491,7 @@ public override async Task Include_nested_with_optional_navigation(bool async) AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[Id0], [t0].[Level3_Optional_Id], [t0].[Level3_Required_Id], [t0].[Level4_Name], [t0].[OneToMany_Optional_Inverse4Id], [t0].[OneToMany_Required_Inverse4Id], [t0].[OneToOne_Optional_PK_Inverse4Id] +SELECT [l].[Id], [l].[Date], [l].[Name], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[Id0], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id] @@ -499,21 +499,21 @@ FROM [Level1] AS [l0] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l].[Id] = [t].[Level1_Optional_Id] LEFT JOIN ( - SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [t1].[Id] AS [Id0], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id] + SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [t0].[Id] AS [Id0], [t0].[Level3_Optional_Id], [t0].[Level3_Required_Id], [t0].[Level4_Name], [t0].[OneToMany_Optional_Inverse4Id], [t0].[OneToMany_Required_Inverse4Id], [t0].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l1] LEFT JOIN ( SELECT [l2].[Id], [l2].[Level3_Optional_Id], [l2].[Level3_Required_Id], [l2].[Level4_Name], [l2].[OneToMany_Optional_Inverse4Id], [l2].[OneToMany_Required_Inverse4Id], [l2].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l2] WHERE [l2].[Level3_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse4Id] IS NOT NULL - ) AS [t1] ON CASE + ) AS [t0] ON CASE WHEN [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [l1].[Id] - END = [t1].[Level3_Required_Id] + END = [t0].[Level3_Required_Id] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t0] ON CASE +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] -END = [t0].[OneToMany_Required_Inverse3Id] +END = [t1].[OneToMany_Required_Inverse3Id] WHERE [t].[Level2_Name] <> N'L2 09' OR [t].[Level2_Name] IS NULL -ORDER BY [l].[Id], [t].[Id], [t0].[Id] +ORDER BY [l].[Id], [t].[Id], [t1].[Id] """); } @@ -632,7 +632,7 @@ public override async Task Multiple_complex_includes(bool async) AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] +SELECT [l].[Id], [l].[Date], [l].[Name], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id] @@ -643,22 +643,22 @@ LEFT JOIN ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t0] ON CASE +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] -END = [t0].[OneToMany_Optional_Inverse3Id] +END = [t1].[OneToMany_Optional_Inverse3Id] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id] AS [Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] + SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Level3_Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l3] WHERE [l3].[Level2_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE + ) AS [t0] ON CASE WHEN [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l2].[Id] - END = [t2].[Level2_Optional_Id] + END = [t0].[Level2_Optional_Id] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] -ORDER BY [l].[Id], [t].[Id], [t0].[Id], [t1].[Id] +) AS [t2] ON [l].[Id] = [t2].[OneToMany_Optional_Inverse2Id] +ORDER BY [l].[Id], [t].[Id], [t1].[Id], [t2].[Id] """); } @@ -926,21 +926,21 @@ public override async Task Skip_Take_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name] FROM ( SELECT [l].[Date] FROM [Level1] AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name] + SELECT [t0].[Id], [t0].[Date], [t0].[Name] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] FROM [Level1] AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -1012,26 +1012,26 @@ public override async Task Include_collection_with_groupby_in_subquery(bool asyn AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] FROM ( SELECT [l].[Name] FROM [Level1] AS [l] GROUP BY [l].[Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name] + SELECT [t0].[Id], [t0].[Date], [t0].[Name] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [Level1] AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] LEFT JOIN ( SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t2] ON [t0].[Id] = [t2].[OneToMany_Optional_Inverse2Id] -ORDER BY [t].[Name], [t0].[Id] +) AS [t2] ON [t1].[Id] = [t2].[OneToMany_Optional_Inverse2Id] +ORDER BY [t].[Name], [t1].[Id] """); } @@ -1041,21 +1041,21 @@ public override async Task Skip_Take_ToList_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name] FROM ( SELECT [l].[Date] FROM [Level1] AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name] + SELECT [t0].[Id], [t0].[Date], [t0].[Name] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] FROM [Level1] AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -1065,7 +1065,7 @@ public override async Task Project_collection_navigation_nested_with_take(bool a AssertSql( """ -SELECT [l].[Id], [t].[Id], [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] +SELECT [l].[Id], [t].[Id], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id] @@ -1073,16 +1073,16 @@ FROM [Level1] AS [l0] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l].[Id] = [t].[Level1_Optional_Id] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] + SELECT [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] FROM ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Optional_Inverse3Id] ORDER BY [l1].[Id]) AS [row] FROM [Level1] AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t1] - WHERE [t1].[row] <= 50 -) AS [t0] ON CASE + ) AS [t0] + WHERE [t0].[row] <= 50 +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] -END = [t0].[OneToMany_Optional_Inverse3Id] +END = [t1].[OneToMany_Optional_Inverse3Id] ORDER BY [l].[Id], [t].[Id] """); } @@ -1126,28 +1126,28 @@ public override async Task Skip_Take_on_grouping_element_with_reference_include( AssertSql( """ -SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id] +SELECT [t1].[Date], [t2].[Id], [t2].[Date], [t2].[Name], [t2].[Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] FROM ( SELECT [l].[Date] FROM [Level1] AS [l] GROUP BY [l].[Date] -) AS [t] +) AS [t1] OUTER APPLY ( - SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t2].[Id] AS [Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] + SELECT [t].[Id], [t].[Date], [t].[Name], [t0].[Id] AS [Id0], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name] FROM [Level1] AS [l0] - WHERE [t].[Date] = [l0].[Date] + WHERE [t1].[Date] = [l0].[Date] ORDER BY [l0].[Name] OFFSET 1 ROWS FETCH NEXT 5 ROWS ONLY - ) AS [t0] + ) AS [t] LEFT JOIN ( SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [t0].[Id] = [t2].[Level1_Optional_Id] -) AS [t1] -ORDER BY [t].[Date], [t1].[Name], [t1].[Id] + ) AS [t0] ON [t].[Id] = [t0].[Level1_Optional_Id] +) AS [t2] +ORDER BY [t1].[Date], [t2].[Name], [t2].[Id] """); } @@ -1192,28 +1192,28 @@ public override async Task Filtered_include_with_Take_without_order_by_followed_ AssertSql( """ -SELECT [t].[Id], [t].[Date], [t].[Name], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] FROM ( SELECT TOP(1) [l].[Id], [l].[Date], [l].[Name] FROM [Level1] AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t1] OUTER APPLY ( - SELECT [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id] AS [Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] + SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] FROM ( SELECT TOP(40) [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l0] - WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[Id] = [l0].[OneToMany_Optional_Inverse2Id] - ) AS [t0] + WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t1].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + ) AS [t] LEFT JOIN ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE - WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] - END = [t2].[Level2_Optional_Id] -) AS [t1] -ORDER BY [t].[Id], [t1].[Id] + ) AS [t0] ON CASE + WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] + END = [t0].[Level2_Optional_Id] +) AS [t2] +ORDER BY [t1].[Id], [t2].[Id] """); } @@ -1288,7 +1288,7 @@ public override async Task Include_collection_with_groupby_in_subquery_and_filte AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] FROM ( SELECT [l].[Name] FROM [Level1] AS [l] @@ -1296,20 +1296,20 @@ WHERE [l].[Id] > 3 GROUP BY [l].[Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name] + SELECT [t0].[Id], [t0].[Date], [t0].[Name] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [Level1] AS [l0] WHERE [l0].[Id] > 3 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] LEFT JOIN ( SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t2] ON [t0].[Id] = [t2].[OneToMany_Optional_Inverse2Id] -ORDER BY [t].[Name], [t0].[Id] +) AS [t2] ON [t1].[Id] = [t2].[OneToMany_Optional_Inverse2Id] +ORDER BY [t].[Name], [t1].[Id] """); } @@ -1319,7 +1319,7 @@ public override async Task Filtered_include_after_reference_navigation(bool asyn AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] +SELECT [l].[Id], [l].[Date], [l].[Name], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id] @@ -1327,17 +1327,17 @@ FROM [Level1] AS [l0] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l].[Id] = [t].[Level1_Optional_Id] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] + SELECT [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] FROM ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Optional_Inverse3Id] ORDER BY [l1].[Level3_Name]) AS [row] FROM [Level1] AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL AND ([l1].[Level3_Name] <> N'Foo' OR [l1].[Level3_Name] IS NULL) - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 4 -) AS [t0] ON CASE + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 4 +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] -END = [t0].[OneToMany_Optional_Inverse3Id] -ORDER BY [l].[Id], [t].[Id], [t0].[OneToMany_Optional_Inverse3Id], [t0].[Level3_Name] +END = [t1].[OneToMany_Optional_Inverse3Id] +ORDER BY [l].[Id], [t].[Id], [t1].[OneToMany_Optional_Inverse3Id], [t1].[Level3_Name] """); } @@ -1373,22 +1373,22 @@ public override async Task Lift_projection_mapping_when_pushing_down_subquery(bo """ @__p_0='25' -SELECT [t].[Id], [t0].[Id0], [t2].[Id], [t2].[Id0], [t0].[Id], [t0].[c] +SELECT [t].[Id], [t1].[Id0], [t2].[Id], [t2].[Id0], [t1].[Id], [t1].[c] FROM ( SELECT TOP(@__p_0) [l].[Id] FROM [Level1] AS [l] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[c], [t1].[Id0], [t1].[OneToMany_Required_Inverse2Id] + SELECT [t0].[Id], [t0].[c], [t0].[Id0], [t0].[OneToMany_Required_Inverse2Id] FROM ( SELECT CASE WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END AS [Id], 1 AS [c], [l0].[Id] AS [Id0], [l0].[OneToMany_Required_Inverse2Id], ROW_NUMBER() OVER(PARTITION BY [l0].[OneToMany_Required_Inverse2Id] ORDER BY [l0].[Id]) AS [row] FROM [Level1] AS [l0] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Id] = [t0].[OneToMany_Required_Inverse2Id] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Id] = [t1].[OneToMany_Required_Inverse2Id] LEFT JOIN ( SELECT CASE WHEN [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l1].[Id] @@ -1396,7 +1396,7 @@ WHEN [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] FROM [Level1] AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t2] ON [t].[Id] = [t2].[OneToMany_Required_Inverse2Id] -ORDER BY [t].[Id], [t0].[Id0] +ORDER BY [t].[Id], [t1].[Id0] """); } @@ -1406,7 +1406,7 @@ public override async Task Include_collection_ThenInclude_reference_followed_by_ AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] +SELECT [l].[Id], [l].[Date], [l].[Name], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [t].[Id] AS [Id0], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Level3_Name], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id] @@ -1419,20 +1419,20 @@ WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END = [t].[OneToOne_Optional_PK_Inverse3Id] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t0] ON [l].[Id] = [t0].[OneToMany_Optional_Inverse2Id] +) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id] AS [Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] + SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Level3_Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l3] WHERE [l3].[Level2_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE + ) AS [t0] ON CASE WHEN [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l2].[Id] - END = [t2].[OneToOne_Optional_PK_Inverse3Id] + END = [t0].[OneToOne_Optional_PK_Inverse3Id] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] -ORDER BY [l].[Id], [t0].[Id], [t0].[Id0], [t1].[Id] +) AS [t2] ON [l].[Id] = [t2].[OneToMany_Optional_Inverse2Id] +ORDER BY [l].[Id], [t1].[Id], [t1].[Id0], [t2].[Id] """); } @@ -1466,7 +1466,7 @@ public override async Task Filtered_include_after_different_filtered_include_sam AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id] +SELECT [l].[Id], [l].[Date], [l].[Name], [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id] @@ -1478,15 +1478,15 @@ WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] WHERE [t].[row] <= 3 ) AS [t0] ON [l].[Id] = [t0].[OneToMany_Optional_Inverse2Id] LEFT JOIN ( - SELECT [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] + SELECT [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id] FROM ( SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Required_Inverse2Id] ORDER BY [l1].[Level2_Name] DESC) AS [row] FROM [Level1] AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND ([l1].[Level2_Name] <> N'Bar' OR [l1].[Level2_Name] IS NULL) - ) AS [t2] - WHERE 1 < [t2].[row] -) AS [t1] ON [l].[Id] = [t1].[OneToMany_Required_Inverse2Id] -ORDER BY [l].[Id], [t0].[OneToMany_Optional_Inverse2Id], [t0].[Level2_Name], [t0].[Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[Level2_Name] DESC + ) AS [t1] + WHERE 1 < [t1].[row] +) AS [t2] ON [l].[Id] = [t2].[OneToMany_Required_Inverse2Id] +ORDER BY [l].[Id], [t0].[OneToMany_Optional_Inverse2Id], [t0].[Level2_Name], [t0].[Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[Level2_Name] DESC """); } @@ -1639,31 +1639,31 @@ public override async Task Filtered_include_Skip_Take_with_another_Skip_Take_on_ @__p_0='1' @__p_1='5' -SELECT [t].[Id], [t].[Date], [t].[Name], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] FROM ( SELECT [l].[Id], [l].[Date], [l].[Name] FROM [Level1] AS [l] ORDER BY [l].[Id] DESC OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY -) AS [t] +) AS [t1] OUTER APPLY ( - SELECT [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id] AS [Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] + SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] FROM ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l0] - WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t1].[Id] = [l0].[OneToMany_Optional_Inverse2Id] ORDER BY [l0].[Level2_Name] DESC OFFSET 1 ROWS FETCH NEXT 4 ROWS ONLY - ) AS [t0] + ) AS [t] LEFT JOIN ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE - WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] - END = [t2].[Level2_Optional_Id] -) AS [t1] -ORDER BY [t].[Id] DESC, [t1].[Level2_Name] DESC, [t1].[Id] + ) AS [t0] ON CASE + WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] + END = [t0].[Level2_Optional_Id] +) AS [t2] +ORDER BY [t1].[Id] DESC, [t2].[Level2_Name] DESC, [t2].[Id] """); } @@ -1673,14 +1673,14 @@ public override async Task Skip_Take_on_grouping_element_with_collection_include AssertSql( """ -SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id] +SELECT [t].[Date], [t2].[Id], [t2].[Date], [t2].[Name], [t2].[Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] FROM ( SELECT [l].[Date] FROM [Level1] AS [l] GROUP BY [l].[Date] ) AS [t] OUTER APPLY ( - SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t2].[Id] AS [Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t1].[Id] AS [Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name] FROM [Level1] AS [l0] @@ -1692,9 +1692,9 @@ LEFT JOIN ( SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [t0].[Id] = [t2].[OneToMany_Optional_Inverse2Id] -) AS [t1] -ORDER BY [t].[Date], [t1].[Name], [t1].[Id] + ) AS [t1] ON [t0].[Id] = [t1].[OneToMany_Optional_Inverse2Id] +) AS [t2] +ORDER BY [t].[Date], [t2].[Name], [t2].[Id] """); } @@ -2032,7 +2032,7 @@ public override async Task Multiple_complex_include_select(bool async) AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] +SELECT [l].[Id], [l].[Date], [l].[Name], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id] @@ -2043,22 +2043,22 @@ LEFT JOIN ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t0] ON CASE +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] -END = [t0].[OneToMany_Optional_Inverse3Id] +END = [t1].[OneToMany_Optional_Inverse3Id] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id] AS [Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] + SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Level3_Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l3] WHERE [l3].[Level2_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE + ) AS [t0] ON CASE WHEN [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l2].[Id] - END = [t2].[Level2_Optional_Id] + END = [t0].[Level2_Optional_Id] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] -ORDER BY [l].[Id], [t].[Id], [t0].[Id], [t1].[Id] +) AS [t2] ON [l].[Id] = [t2].[OneToMany_Optional_Inverse2Id] +ORDER BY [l].[Id], [t].[Id], [t1].[Id], [t2].[Id] """); } @@ -2120,28 +2120,28 @@ public override async Task Filtered_include_with_Take_without_order_by_followed_ """ @__p_0='30' -SELECT [t].[Id], [t].[Date], [t].[Name], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] FROM ( SELECT TOP(@__p_0) [l].[Id], [l].[Date], [l].[Name] FROM [Level1] AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t1] OUTER APPLY ( - SELECT [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id] AS [Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] + SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] FROM ( SELECT TOP(40) [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l0] - WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[Id] = [l0].[OneToMany_Optional_Inverse2Id] - ) AS [t0] + WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t1].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + ) AS [t] LEFT JOIN ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE - WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] - END = [t2].[Level2_Optional_Id] -) AS [t1] -ORDER BY [t].[Id], [t1].[Id] + ) AS [t0] ON CASE + WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] + END = [t0].[Level2_Optional_Id] +) AS [t2] +ORDER BY [t1].[Id], [t2].[Id] """); } @@ -2204,7 +2204,7 @@ public override async Task Include_partially_added_before_Where_and_then_build_u AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t].[Id], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t3].[Id], [t3].[Level2_Optional_Id], [t3].[Level2_Required_Id], [t3].[Level3_Name], [t3].[OneToMany_Optional_Inverse3Id], [t3].[OneToMany_Required_Inverse3Id], [t3].[OneToOne_Optional_PK_Inverse3Id], [t3].[Id0], [t3].[Level3_Optional_Id], [t3].[Level3_Required_Id], [t3].[Level4_Name], [t3].[OneToMany_Optional_Inverse4Id], [t3].[OneToMany_Required_Inverse4Id], [t3].[OneToOne_Optional_PK_Inverse4Id] +SELECT [l].[Id], [l].[Date], [l].[Name], [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t].[Id], [t3].[Id], [t3].[Level2_Optional_Id], [t3].[Level2_Required_Id], [t3].[Level3_Name], [t3].[OneToMany_Optional_Inverse3Id], [t3].[OneToMany_Required_Inverse3Id], [t3].[OneToOne_Optional_PK_Inverse3Id], [t4].[Id], [t4].[Level2_Optional_Id], [t4].[Level2_Required_Id], [t4].[Level3_Name], [t4].[OneToMany_Optional_Inverse3Id], [t4].[OneToMany_Required_Inverse3Id], [t4].[OneToOne_Optional_PK_Inverse3Id], [t4].[Id0], [t4].[Level3_Optional_Id], [t4].[Level3_Required_Id], [t4].[Level4_Name], [t4].[OneToMany_Optional_Inverse4Id], [t4].[OneToMany_Required_Inverse4Id], [t4].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id] @@ -2228,29 +2228,29 @@ FROM [Level1] AS [l2] WHERE [l2].[Level2_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse3Id] IS NOT NULL ) AS [t2] WHERE [t2].[row] <= 3 -) AS [t1] ON CASE +) AS [t3] ON CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] -END = [t1].[OneToMany_Optional_Inverse3Id] +END = [t3].[OneToMany_Optional_Inverse3Id] LEFT JOIN ( - SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Level3_Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [t4].[Id] AS [Id0], [t4].[Level3_Optional_Id], [t4].[Level3_Required_Id], [t4].[Level4_Name], [t4].[OneToMany_Optional_Inverse4Id], [t4].[OneToMany_Required_Inverse4Id], [t4].[OneToOne_Optional_PK_Inverse4Id] + SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Level3_Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [t1].[Id] AS [Id0], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l3] LEFT JOIN ( SELECT [l4].[Id], [l4].[Level3_Optional_Id], [l4].[Level3_Required_Id], [l4].[Level4_Name], [l4].[OneToMany_Optional_Inverse4Id], [l4].[OneToMany_Required_Inverse4Id], [l4].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l4] WHERE [l4].[Level3_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse4Id] IS NOT NULL - ) AS [t4] ON CASE + ) AS [t1] ON CASE WHEN [l3].[Level2_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [l3].[Id] - END = [t4].[Level3_Optional_Id] + END = [t1].[Level3_Optional_Id] WHERE [l3].[Level2_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t3] ON CASE +) AS [t4] ON CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] -END = [t3].[OneToMany_Required_Inverse3Id] +END = [t4].[OneToMany_Required_Inverse3Id] WHERE CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END < 3 OR CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END > 8 -ORDER BY [l].[Id], [t].[Id], [t0].[Id], [t1].[OneToMany_Optional_Inverse3Id], [t1].[c], [t1].[Id], [t3].[Id] +ORDER BY [l].[Id], [t].[Id], [t0].[Id], [t3].[OneToMany_Optional_Inverse3Id], [t3].[c], [t3].[Id], [t4].[Id] """); } @@ -2431,7 +2431,7 @@ public override async Task Include_collection_with_groupby_in_subquery_and_filte AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] FROM ( SELECT [l].[Name] FROM [Level1] AS [l] @@ -2439,19 +2439,19 @@ GROUP BY [l].[Name] HAVING [l].[Name] <> N'Foo' OR [l].[Name] IS NULL ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name] + SELECT [t0].[Id], [t0].[Date], [t0].[Name] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [Level1] AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] LEFT JOIN ( SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t2] ON [t0].[Id] = [t2].[OneToMany_Optional_Inverse2Id] -ORDER BY [t].[Name], [t0].[Id] +) AS [t2] ON [t1].[Id] = [t2].[OneToMany_Optional_Inverse2Id] +ORDER BY [t].[Name], [t1].[Id] """); } @@ -2574,21 +2574,21 @@ public override async Task Skip_Take_on_grouping_element_into_non_entity(bool as AssertSql( """ -SELECT [t].[Date], [t0].[Name], [t0].[Id] +SELECT [t].[Date], [t1].[Name], [t1].[Id] FROM ( SELECT [l].[Date] FROM [Level1] AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Name], [t1].[Id], [t1].[Date] + SELECT [t0].[Name], [t0].[Id], [t0].[Date] FROM ( SELECT [l0].[Name], [l0].[Id], [l0].[Date], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] FROM [Level1] AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -2664,7 +2664,7 @@ public override async Task Optional_navigation_with_Include_ThenInclude(bool asy AssertSql( """ -SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [l].[Id], [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[Id0], [t0].[Level3_Optional_Id], [t0].[Level3_Required_Id], [t0].[Level4_Name], [t0].[OneToMany_Optional_Inverse4Id], [t0].[OneToMany_Required_Inverse4Id], [t0].[OneToOne_Optional_PK_Inverse4Id] +SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [l].[Id], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[Id0], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id] @@ -2672,20 +2672,20 @@ FROM [Level1] AS [l0] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l].[Id] = [t].[Level1_Optional_Id] LEFT JOIN ( - SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [t1].[Id] AS [Id0], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id] + SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [t0].[Id] AS [Id0], [t0].[Level3_Optional_Id], [t0].[Level3_Required_Id], [t0].[Level4_Name], [t0].[OneToMany_Optional_Inverse4Id], [t0].[OneToMany_Required_Inverse4Id], [t0].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l1] LEFT JOIN ( SELECT [l2].[Id], [l2].[Level3_Optional_Id], [l2].[Level3_Required_Id], [l2].[Level4_Name], [l2].[OneToMany_Optional_Inverse4Id], [l2].[OneToMany_Required_Inverse4Id], [l2].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l2] WHERE [l2].[Level3_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse4Id] IS NOT NULL - ) AS [t1] ON CASE + ) AS [t0] ON CASE WHEN [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [l1].[Id] - END = [t1].[Level3_Optional_Id] + END = [t0].[Level3_Optional_Id] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t0] ON CASE +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] -END = [t0].[OneToMany_Optional_Inverse3Id] -ORDER BY [l].[Id], [t].[Id], [t0].[Id] +END = [t1].[OneToMany_Optional_Inverse3Id] +ORDER BY [l].[Id], [t].[Id], [t1].[Id] """); } @@ -2748,7 +2748,7 @@ public override async Task Include_partially_added_before_Where_and_then_build_u AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t].[Id], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[Id0], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id] +SELECT [l].[Id], [l].[Date], [l].[Name], [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t].[Id], [t2].[Id], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[Id0], [t2].[Level3_Optional_Id], [t2].[Level3_Required_Id], [t2].[Level4_Name], [t2].[OneToMany_Optional_Inverse4Id], [t2].[OneToMany_Required_Inverse4Id], [t2].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id] @@ -2761,25 +2761,25 @@ FROM [Level1] AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] LEFT JOIN ( - SELECT [l2].[Id], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Level3_Name], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [t2].[Id] AS [Id0], [t2].[Level3_Optional_Id], [t2].[Level3_Required_Id], [t2].[Level4_Name], [t2].[OneToMany_Optional_Inverse4Id], [t2].[OneToMany_Required_Inverse4Id], [t2].[OneToOne_Optional_PK_Inverse4Id] + SELECT [l2].[Id], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Level3_Name], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [t1].[Id] AS [Id0], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[Level3_Optional_Id], [l3].[Level3_Required_Id], [l3].[Level4_Name], [l3].[OneToMany_Optional_Inverse4Id], [l3].[OneToMany_Required_Inverse4Id], [l3].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l3] WHERE [l3].[Level3_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse4Id] IS NOT NULL - ) AS [t2] ON CASE + ) AS [t1] ON CASE WHEN [l2].[Level2_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [l2].[Id] - END = [t2].[Level3_Optional_Id] + END = [t1].[Level3_Optional_Id] WHERE [l2].[Level2_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t1] ON CASE +) AS [t2] ON CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] -END = [t1].[OneToMany_Optional_Inverse3Id] +END = [t2].[OneToMany_Optional_Inverse3Id] WHERE CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END < 3 OR CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END > 8 -ORDER BY [l].[Id], [t].[Id], [t0].[Id], [t1].[Id] +ORDER BY [l].[Id], [t].[Id], [t0].[Id], [t2].[Id] """); } @@ -2789,10 +2789,10 @@ public override async Task Include_collection_multiple_with_filter(bool async) AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[Id1], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id] +SELECT [l].[Id], [l].[Date], [l].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[Id1], [t2].[Level3_Optional_Id], [t2].[Level3_Required_Id], [t2].[Level4_Name], [t2].[OneToMany_Optional_Inverse4Id], [t2].[OneToMany_Required_Inverse4Id], [t2].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t2].[Id] AS [Id1], [t2].[Level3_Optional_Id], [t2].[Level3_Required_Id], [t2].[Level4_Name], [t2].[OneToMany_Optional_Inverse4Id], [t2].[OneToMany_Required_Inverse4Id], [t2].[OneToOne_Optional_PK_Inverse4Id] + SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t1].[Id] AS [Id1], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Level3_Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id] @@ -2805,11 +2805,11 @@ LEFT JOIN ( SELECT [l4].[Id], [l4].[Level3_Optional_Id], [l4].[Level3_Required_Id], [l4].[Level4_Name], [l4].[OneToMany_Optional_Inverse4Id], [l4].[OneToMany_Required_Inverse4Id], [l4].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l4] WHERE [l4].[Level3_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse4Id] IS NOT NULL - ) AS [t2] ON CASE + ) AS [t1] ON CASE WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] - END = [t2].[Level3_Optional_Id] + END = [t1].[Level3_Optional_Id] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] +) AS [t2] ON [l].[Id] = [t2].[OneToMany_Optional_Inverse2Id] WHERE ( SELECT COUNT(*) FROM [Level1] AS [l0] @@ -2821,7 +2821,7 @@ WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END = [t].[OneToOne_Optional_PK_Inverse3Id] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] AND ([t].[Level3_Name] <> N'Foo' OR [t].[Level3_Name] IS NULL)) > 0 -ORDER BY [l].[Id], [t1].[Id], [t1].[Id0] +ORDER BY [l].[Id], [t2].[Id], [t2].[Id0] """); } @@ -2912,21 +2912,21 @@ public override async Task Take_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name] FROM ( SELECT [l].[Date] FROM [Level1] AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name] + SELECT [t0].[Id], [t0].[Date], [t0].[Name] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name] DESC) AS [row] FROM [Level1] AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 10 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] DESC + ) AS [t0] + WHERE [t0].[row] <= 10 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] DESC """); } @@ -2987,7 +2987,7 @@ public override async Task Skip_Take_on_grouping_element_inside_collection_proje SELECT [l].[Id], [t2].[Date], [t2].[Id], [t2].[Date0], [t2].[Name] FROM [Level1] AS [l] OUTER APPLY ( - SELECT [t].[Date], [t0].[Id], [t0].[Date] AS [Date0], [t0].[Name] + SELECT [t].[Date], [t1].[Id], [t1].[Date] AS [Date0], [t1].[Name] FROM ( SELECT [l0].[Date] FROM [Level1] AS [l0] @@ -2995,14 +2995,14 @@ FROM [Level1] AS [l0] GROUP BY [l0].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name] + SELECT [t0].[Id], [t0].[Date], [t0].[Name] FROM ( SELECT [l1].[Id], [l1].[Date], [l1].[Name], ROW_NUMBER() OVER(PARTITION BY [l1].[Date] ORDER BY [l1].[Name]) AS [row] FROM [Level1] AS [l1] WHERE [l1].[Name] = [l].[Name] OR ([l1].[Name] IS NULL AND [l].[Name] IS NULL) - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 - ) AS [t0] ON [t].[Date] = [t0].[Date] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 + ) AS [t1] ON [t].[Date] = [t1].[Date] ) AS [t2] ORDER BY [l].[Id], [t2].[Date], [t2].[Date0], [t2].[Name] """); @@ -3069,21 +3069,21 @@ public override async Task Skip_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name] FROM ( SELECT [l].[Date] FROM [Level1] AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name] + SELECT [t0].[Id], [t0].[Date], [t0].[Name] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] FROM [Level1] AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + ) AS [t0] + WHERE 1 < [t0].[row] +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -3117,23 +3117,23 @@ public override async Task Skip_Take_Distinct_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name] +SELECT [t0].[Date], [t1].[Id], [t1].[Date], [t1].[Name] FROM ( SELECT [l].[Date] FROM [Level1] AS [l] GROUP BY [l].[Date] -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT DISTINCT [t1].[Id], [t1].[Date], [t1].[Name] + SELECT DISTINCT [t].[Id], [t].[Date], [t].[Name] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name] FROM [Level1] AS [l0] - WHERE [t].[Date] = [l0].[Date] + WHERE [t0].[Date] = [l0].[Date] ORDER BY [l0].[Name] OFFSET 1 ROWS FETCH NEXT 5 ROWS ONLY - ) AS [t1] -) AS [t0] -ORDER BY [t].[Date] + ) AS [t] +) AS [t1] +ORDER BY [t0].[Date] """); } @@ -3567,7 +3567,7 @@ public override async Task Multiple_complex_includes_EF_Property(bool async) AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] +SELECT [l].[Id], [l].[Date], [l].[Name], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id] @@ -3578,22 +3578,22 @@ LEFT JOIN ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t0] ON CASE +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] -END = [t0].[OneToMany_Optional_Inverse3Id] +END = [t1].[OneToMany_Optional_Inverse3Id] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id] AS [Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id] + SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Level3_Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l3] WHERE [l3].[Level2_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE + ) AS [t0] ON CASE WHEN [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l2].[Id] - END = [t2].[Level2_Optional_Id] + END = [t0].[Level2_Optional_Id] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] -ORDER BY [l].[Id], [t].[Id], [t0].[Id], [t1].[Id] +) AS [t2] ON [l].[Id] = [t2].[OneToMany_Optional_Inverse2Id] +ORDER BY [l].[Id], [t].[Id], [t1].[Id], [t2].[Id] """); } @@ -3603,10 +3603,10 @@ public override async Task Include_collection_multiple_with_filter_EF_Property(b AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[Id1], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id] +SELECT [l].[Id], [l].[Date], [l].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[Id1], [t2].[Level3_Optional_Id], [t2].[Level3_Required_Id], [t2].[Level4_Name], [t2].[OneToMany_Optional_Inverse4Id], [t2].[OneToMany_Required_Inverse4Id], [t2].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t2].[Id] AS [Id1], [t2].[Level3_Optional_Id], [t2].[Level3_Required_Id], [t2].[Level4_Name], [t2].[OneToMany_Optional_Inverse4Id], [t2].[OneToMany_Required_Inverse4Id], [t2].[OneToOne_Optional_PK_Inverse4Id] + SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t1].[Id] AS [Id1], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Level3_Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id] @@ -3619,11 +3619,11 @@ LEFT JOIN ( SELECT [l4].[Id], [l4].[Level3_Optional_Id], [l4].[Level3_Required_Id], [l4].[Level4_Name], [l4].[OneToMany_Optional_Inverse4Id], [l4].[OneToMany_Required_Inverse4Id], [l4].[OneToOne_Optional_PK_Inverse4Id] FROM [Level1] AS [l4] WHERE [l4].[Level3_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse4Id] IS NOT NULL - ) AS [t2] ON CASE + ) AS [t1] ON CASE WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] - END = [t2].[Level3_Optional_Id] + END = [t1].[Level3_Optional_Id] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] +) AS [t2] ON [l].[Id] = [t2].[OneToMany_Optional_Inverse2Id] WHERE ( SELECT COUNT(*) FROM [Level1] AS [l0] @@ -3635,7 +3635,7 @@ WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END = [t].[OneToOne_Optional_PK_Inverse3Id] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] AND ([t].[Level3_Name] <> N'Foo' OR [t].[Level3_Name] IS NULL)) > 0 -ORDER BY [l].[Id], [t1].[Id], [t1].[Id0] +ORDER BY [l].[Id], [t2].[Id], [t2].[Id0] """); } @@ -3700,7 +3700,7 @@ public override async Task Filtered_include_on_ThenInclude_EF_Property(bool asyn AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] +SELECT [l].[Id], [l].[Date], [l].[Name], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id] @@ -3708,17 +3708,17 @@ FROM [Level1] AS [l0] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l].[Id] = [t].[Level1_Optional_Id] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id] + SELECT [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id] FROM ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Optional_Inverse3Id] ORDER BY [l1].[Level3_Name]) AS [row] FROM [Level1] AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL AND ([l1].[Level3_Name] <> N'Foo' OR [l1].[Level3_Name] IS NULL) - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 4 -) AS [t0] ON CASE + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 4 +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] -END = [t0].[OneToMany_Optional_Inverse3Id] -ORDER BY [l].[Id], [t].[Id], [t0].[OneToMany_Optional_Inverse3Id], [t0].[Level3_Name] +END = [t1].[OneToMany_Optional_Inverse3Id] +ORDER BY [l].[Id], [t].[Id], [t1].[OneToMany_Optional_Inverse3Id], [t1].[Level3_Name] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsCollectionsSplitQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsCollectionsSplitQuerySqlServerTest.cs index d566fd0f75e..0daa4e0ea0e 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsCollectionsSplitQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsCollectionsSplitQuerySqlServerTest.cs @@ -330,18 +330,18 @@ WHERE [l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL """, // """ -SELECT [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [l].[Id] +SELECT [t2].[Id], [t2].[Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Optional_Self_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToMany_Required_Self_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[OneToOne_Optional_Self2Id], [l].[Id] FROM [LevelOne] AS [l] INNER JOIN ( - SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id] + SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id] FROM ( - SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], ROW_NUMBER() OVER(PARTITION BY [l0].[OneToMany_Required_Inverse2Id] ORDER BY [l0].[Name] DESC) AS [row] - FROM [LevelTwo] AS [l0] - WHERE [l0].[Name] <> N'Bar' OR [l0].[Name] IS NULL - ) AS [t] - WHERE 1 < [t].[row] -) AS [t0] ON [l].[Id] = [t0].[OneToMany_Required_Inverse2Id] -ORDER BY [l].[Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[Name] DESC + SELECT [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Required_Inverse2Id] ORDER BY [l1].[Name] DESC) AS [row] + FROM [LevelTwo] AS [l1] + WHERE [l1].[Name] <> N'Bar' OR [l1].[Name] IS NULL + ) AS [t1] + WHERE 1 < [t1].[row] +) AS [t2] ON [l].[Id] = [t2].[OneToMany_Required_Inverse2Id] +ORDER BY [l].[Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[Name] DESC """); } @@ -372,7 +372,7 @@ WHERE [l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL """, // """ -SELECT [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id], [l].[Id], [t0].[Id] +SELECT [t2].[Id], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Optional_Self_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToMany_Required_Self_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[OneToOne_Optional_Self3Id], [l].[Id], [t0].[Id] FROM [LevelOne] AS [l] INNER JOIN ( SELECT [t].[Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id] @@ -384,15 +384,15 @@ WHERE [l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL WHERE [t].[row] <= 3 ) AS [t0] ON [l].[Id] = [t0].[OneToMany_Optional_Inverse2Id] INNER JOIN ( - SELECT [t2].[Id], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Optional_Self_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToMany_Required_Self_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[OneToOne_Optional_Self3Id] + SELECT [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id] FROM ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Required_Inverse3Id] ORDER BY [l1].[Name] DESC) AS [row] FROM [LevelThree] AS [l1] WHERE [l1].[Name] <> N'Bar' OR [l1].[Name] IS NULL - ) AS [t2] - WHERE 1 < [t2].[row] -) AS [t1] ON [t0].[Id] = [t1].[OneToMany_Required_Inverse3Id] -ORDER BY [l].[Id], [t0].[OneToMany_Optional_Inverse2Id], [t0].[Name], [t0].[Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[Name] DESC + ) AS [t1] + WHERE 1 < [t1].[row] +) AS [t2] ON [t0].[Id] = [t2].[OneToMany_Required_Inverse3Id] +ORDER BY [l].[Id], [t0].[OneToMany_Optional_Inverse2Id], [t0].[Name], [t0].[Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[Name] DESC """); } @@ -438,14 +438,14 @@ ORDER BY [l].[Id] SELECT [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [l].[Id], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id] FROM [LevelOne] AS [l] CROSS APPLY ( - SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id] FROM ( - SELECT TOP(2) [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l1] - WHERE [l].[Id] = [l1].[OneToMany_Optional_Inverse2Id] AND ([l1].[Name] <> N'Foo' OR [l1].[Name] IS NULL) - ORDER BY [l1].[Id] + SELECT TOP(2) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l0] + WHERE [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] AND ([l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL) + ORDER BY [l0].[Id] ) AS [t] - LEFT JOIN [LevelThree] AS [l0] ON [t].[Id] = [l0].[Level2_Required_Id] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[Level2_Required_Id] ) AS [t0] ORDER BY [l].[Id], [t0].[Id], [t0].[Id0] """, @@ -454,14 +454,14 @@ ORDER BY [l1].[Id] SELECT [l2].[Id], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Optional_Self_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToMany_Required_Self_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[OneToOne_Optional_Self3Id], [l].[Id], [t0].[Id], [t0].[Id0] FROM [LevelOne] AS [l] CROSS APPLY ( - SELECT [t].[Id], [l0].[Id] AS [Id0] + SELECT [t].[Id], [l1].[Id] AS [Id0] FROM ( - SELECT TOP(2) [l1].[Id] - FROM [LevelTwo] AS [l1] - WHERE [l].[Id] = [l1].[OneToMany_Optional_Inverse2Id] AND ([l1].[Name] <> N'Foo' OR [l1].[Name] IS NULL) - ORDER BY [l1].[Id] + SELECT TOP(2) [l0].[Id] + FROM [LevelTwo] AS [l0] + WHERE [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] AND ([l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL) + ORDER BY [l0].[Id] ) AS [t] - LEFT JOIN [LevelThree] AS [l0] ON [t].[Id] = [l0].[Level2_Required_Id] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[Level2_Required_Id] ) AS [t0] INNER JOIN [LevelThree] AS [l2] ON [t0].[Id] = [l2].[OneToMany_Optional_Inverse3Id] ORDER BY [l].[Id], [t0].[Id], [t0].[Id0] @@ -485,14 +485,14 @@ ORDER BY [l].[Id] SELECT [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [l].[Id], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id] FROM [LevelOne] AS [l] CROSS APPLY ( - SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id] FROM ( - SELECT TOP(2) [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l1] - WHERE [l].[Id] = [l1].[OneToMany_Optional_Inverse2Id] AND ([l1].[Name] <> N'Foo' OR [l1].[Name] IS NULL) - ORDER BY [l1].[Id] + SELECT TOP(2) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l0] + WHERE [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] AND ([l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL) + ORDER BY [l0].[Id] ) AS [t] - LEFT JOIN [LevelThree] AS [l0] ON [t].[Id] = [l0].[Level2_Required_Id] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[Level2_Required_Id] ) AS [t0] ORDER BY [l].[Id], [t0].[Id], [t0].[Id0] """, @@ -501,14 +501,14 @@ ORDER BY [l1].[Id] SELECT [l2].[Id], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Optional_Self_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToMany_Required_Self_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[OneToOne_Optional_Self3Id], [l].[Id], [t0].[Id], [t0].[Id0] FROM [LevelOne] AS [l] CROSS APPLY ( - SELECT [t].[Id], [l0].[Id] AS [Id0] + SELECT [t].[Id], [l1].[Id] AS [Id0] FROM ( - SELECT TOP(2) [l1].[Id] - FROM [LevelTwo] AS [l1] - WHERE [l].[Id] = [l1].[OneToMany_Optional_Inverse2Id] AND ([l1].[Name] <> N'Foo' OR [l1].[Name] IS NULL) - ORDER BY [l1].[Id] + SELECT TOP(2) [l0].[Id] + FROM [LevelTwo] AS [l0] + WHERE [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] AND ([l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL) + ORDER BY [l0].[Id] ) AS [t] - LEFT JOIN [LevelThree] AS [l0] ON [t].[Id] = [l0].[Level2_Required_Id] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[Level2_Required_Id] ) AS [t0] INNER JOIN [LevelThree] AS [l2] ON [t0].[Id] = [l2].[OneToMany_Optional_Inverse3Id] ORDER BY [l].[Id], [t0].[Id], [t0].[Id0] @@ -584,14 +584,14 @@ ORDER BY [l].[Id] SELECT [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [l].[Id] FROM [LevelOne] AS [l] CROSS APPLY ( - SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id] FROM ( - SELECT TOP(1) [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l1] - WHERE [l].[Id] = [l1].[OneToMany_Optional_Inverse2Id] AND ([l1].[Name] <> N'Foo' OR [l1].[Name] IS NULL) - ORDER BY [l1].[Id] + SELECT TOP(1) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l0] + WHERE [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] AND ([l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL) + ORDER BY [l0].[Id] ) AS [t] - LEFT JOIN [LevelThree] AS [l0] ON [t].[Id] = [l0].[OneToOne_Optional_PK_Inverse3Id] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[OneToOne_Optional_PK_Inverse3Id] ) AS [t0] ORDER BY [l].[Id], [t0].[Id], [t0].[Id0] """, @@ -600,14 +600,14 @@ ORDER BY [l1].[Id] SELECT [t1].[Id], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Optional_Self_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToMany_Required_Self_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t1].[OneToOne_Optional_Self4Id], [l].[Id], [t0].[Id], [t0].[Id0] FROM [LevelOne] AS [l] CROSS APPLY ( - SELECT [t].[Id], [l0].[Id] AS [Id0] + SELECT [t].[Id], [l1].[Id] AS [Id0] FROM ( - SELECT TOP(1) [l1].[Id] - FROM [LevelTwo] AS [l1] - WHERE [l].[Id] = [l1].[OneToMany_Optional_Inverse2Id] AND ([l1].[Name] <> N'Foo' OR [l1].[Name] IS NULL) - ORDER BY [l1].[Id] + SELECT TOP(1) [l0].[Id] + FROM [LevelTwo] AS [l0] + WHERE [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] AND ([l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL) + ORDER BY [l0].[Id] ) AS [t] - LEFT JOIN [LevelThree] AS [l0] ON [t].[Id] = [l0].[OneToOne_Optional_PK_Inverse3Id] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[OneToOne_Optional_PK_Inverse3Id] ) AS [t0] INNER JOIN ( SELECT [l2].[Id], [l2].[Level3_Optional_Id], [l2].[Level3_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse4Id], [l2].[OneToMany_Optional_Self_Inverse4Id], [l2].[OneToMany_Required_Inverse4Id], [l2].[OneToMany_Required_Self_Inverse4Id], [l2].[OneToOne_Optional_PK_Inverse4Id], [l2].[OneToOne_Optional_Self4Id] @@ -670,7 +670,7 @@ WHERE [l1].[Name] <> N'Foo' OR [l1].[Name] IS NULL """, // """ -SELECT [l2].[Id], [l2].[Level3_Optional_Id], [l2].[Level3_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse4Id], [l2].[OneToMany_Optional_Self_Inverse4Id], [l2].[OneToMany_Required_Inverse4Id], [l2].[OneToMany_Required_Self_Inverse4Id], [l2].[OneToOne_Optional_PK_Inverse4Id], [l2].[OneToOne_Optional_Self4Id], [l].[Id], [l0].[Id], [t0].[Id] +SELECT [l3].[Id], [l3].[Level3_Optional_Id], [l3].[Level3_Required_Id], [l3].[Name], [l3].[OneToMany_Optional_Inverse4Id], [l3].[OneToMany_Optional_Self_Inverse4Id], [l3].[OneToMany_Required_Inverse4Id], [l3].[OneToMany_Required_Self_Inverse4Id], [l3].[OneToOne_Optional_PK_Inverse4Id], [l3].[OneToOne_Optional_Self4Id], [l].[Id], [l0].[Id], [t0].[Id] FROM [LevelOne] AS [l] INNER JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] INNER JOIN ( @@ -682,7 +682,7 @@ WHERE [l1].[Name] <> N'Foo' OR [l1].[Name] IS NULL ) AS [t] WHERE [t].[row] <= 1 ) AS [t0] ON [l0].[Id] = [t0].[OneToMany_Optional_Inverse3Id] -INNER JOIN [LevelFour] AS [l2] ON [t0].[Id] = [l2].[OneToMany_Required_Inverse4Id] +INNER JOIN [LevelFour] AS [l3] ON [t0].[Id] = [l3].[OneToMany_Required_Inverse4Id] ORDER BY [l].[Id], [l0].[Id], [t0].[OneToMany_Optional_Inverse3Id], [t0].[Id] """); } @@ -739,7 +739,7 @@ WHERE [l1].[Name] <> N'Foo' OR [l1].[Name] IS NULL """, // """ -SELECT [l2].[Id], [l2].[Level3_Optional_Id], [l2].[Level3_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse4Id], [l2].[OneToMany_Optional_Self_Inverse4Id], [l2].[OneToMany_Required_Inverse4Id], [l2].[OneToMany_Required_Self_Inverse4Id], [l2].[OneToOne_Optional_PK_Inverse4Id], [l2].[OneToOne_Optional_Self4Id], [l].[Id], [l0].[Id], [t0].[Id] +SELECT [l3].[Id], [l3].[Level3_Optional_Id], [l3].[Level3_Required_Id], [l3].[Name], [l3].[OneToMany_Optional_Inverse4Id], [l3].[OneToMany_Optional_Self_Inverse4Id], [l3].[OneToMany_Required_Inverse4Id], [l3].[OneToMany_Required_Self_Inverse4Id], [l3].[OneToOne_Optional_PK_Inverse4Id], [l3].[OneToOne_Optional_Self4Id], [l].[Id], [l0].[Id], [t0].[Id] FROM [LevelOne] AS [l] INNER JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] INNER JOIN ( @@ -751,7 +751,7 @@ WHERE [l1].[Name] <> N'Foo' OR [l1].[Name] IS NULL ) AS [t] WHERE [t].[row] <= 1 ) AS [t0] ON [l0].[Id] = [t0].[OneToMany_Optional_Inverse3Id] -INNER JOIN [LevelFour] AS [l2] ON [t0].[Id] = [l2].[OneToMany_Required_Inverse4Id] +INNER JOIN [LevelFour] AS [l3] ON [t0].[Id] = [l3].[OneToMany_Required_Inverse4Id] ORDER BY [l].[Id], [l0].[Id], [t0].[OneToMany_Optional_Inverse3Id], [t0].[Id] """); } @@ -861,33 +861,33 @@ ORDER BY [l].[Id] """, // """ -SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l].[Id] +SELECT [l4].[Id], [l4].[Date], [l4].[Level1_Optional_Id], [l4].[Level1_Required_Id], [l4].[Name], [l4].[OneToMany_Optional_Inverse2Id], [l4].[OneToMany_Optional_Self_Inverse2Id], [l4].[OneToMany_Required_Inverse2Id], [l4].[OneToMany_Required_Self_Inverse2Id], [l4].[OneToOne_Optional_PK_Inverse2Id], [l4].[OneToOne_Optional_Self2Id], [l].[Id] FROM [LevelOne] AS [l] -CROSS APPLY [LevelTwo] AS [l0] -ORDER BY [l].[Id], [l0].[Id] +CROSS APPLY [LevelTwo] AS [l4] +ORDER BY [l].[Id], [l4].[Id] """, // """ -SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l].[Id], [l0].[Id] +SELECT [l5].[Id], [l5].[Level2_Optional_Id], [l5].[Level2_Required_Id], [l5].[Name], [l5].[OneToMany_Optional_Inverse3Id], [l5].[OneToMany_Optional_Self_Inverse3Id], [l5].[OneToMany_Required_Inverse3Id], [l5].[OneToMany_Required_Self_Inverse3Id], [l5].[OneToOne_Optional_PK_Inverse3Id], [l5].[OneToOne_Optional_Self3Id], [l].[Id], [l4].[Id] FROM [LevelOne] AS [l] -CROSS APPLY [LevelTwo] AS [l0] -INNER JOIN [LevelThree] AS [l1] ON [l0].[Id] = [l1].[OneToMany_Optional_Inverse3Id] -ORDER BY [l].[Id], [l0].[Id] +CROSS APPLY [LevelTwo] AS [l4] +INNER JOIN [LevelThree] AS [l5] ON [l4].[Id] = [l5].[OneToMany_Optional_Inverse3Id] +ORDER BY [l].[Id], [l4].[Id] """, // """ -SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l].[Id] +SELECT [l8].[Id], [l8].[Date], [l8].[Level1_Optional_Id], [l8].[Level1_Required_Id], [l8].[Name], [l8].[OneToMany_Optional_Inverse2Id], [l8].[OneToMany_Optional_Self_Inverse2Id], [l8].[OneToMany_Required_Inverse2Id], [l8].[OneToMany_Required_Self_Inverse2Id], [l8].[OneToOne_Optional_PK_Inverse2Id], [l8].[OneToOne_Optional_Self2Id], [l].[Id] FROM [LevelOne] AS [l] -CROSS APPLY [LevelTwo] AS [l0] -ORDER BY [l].[Id], [l0].[Id] +CROSS APPLY [LevelTwo] AS [l8] +ORDER BY [l].[Id], [l8].[Id] """, // """ -SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l].[Id], [l0].[Id] +SELECT [l9].[Id], [l9].[Level2_Optional_Id], [l9].[Level2_Required_Id], [l9].[Name], [l9].[OneToMany_Optional_Inverse3Id], [l9].[OneToMany_Optional_Self_Inverse3Id], [l9].[OneToMany_Required_Inverse3Id], [l9].[OneToMany_Required_Self_Inverse3Id], [l9].[OneToOne_Optional_PK_Inverse3Id], [l9].[OneToOne_Optional_Self3Id], [l].[Id], [l8].[Id] FROM [LevelOne] AS [l] -CROSS APPLY [LevelTwo] AS [l0] -INNER JOIN [LevelThree] AS [l1] ON [l0].[Id] = [l1].[OneToMany_Optional_Inverse3Id] AND [l].[Id] <> [l1].[Id] -ORDER BY [l].[Id], [l0].[Id] +CROSS APPLY [LevelTwo] AS [l8] +INNER JOIN [LevelThree] AS [l9] ON [l8].[Id] = [l9].[OneToMany_Optional_Inverse3Id] AND [l].[Id] <> [l9].[Id] +ORDER BY [l].[Id], [l8].[Id] """); } @@ -903,9 +903,9 @@ ORDER BY [l].[Id] """, // """ -SELECT [l0].[Id], [l].[Id] +SELECT [l2].[Id], [l].[Id] FROM [LevelOne] AS [l] -INNER JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[OneToMany_Required_Inverse2Id] +INNER JOIN [LevelTwo] AS [l2] ON [l].[Id] = [l2].[OneToMany_Required_Inverse2Id] ORDER BY [l].[Id] """); } @@ -970,9 +970,9 @@ FROM [LevelFour] AS [l7] LEFT JOIN [LevelTwo] AS [l13] ON [t0].[Level2_Optional_Id0] = [l13].[Id] LEFT JOIN [LevelThree] AS [l14] ON [l13].[Id] = [l14].[Level2_Required_Id] INNER JOIN ( - SELECT [l15].[Id], [l15].[Date], [l15].[Level1_Optional_Id], [l15].[Level1_Required_Id], [l15].[Name], [l15].[OneToMany_Optional_Inverse2Id], [l15].[OneToMany_Optional_Self_Inverse2Id], [l15].[OneToMany_Required_Inverse2Id], [l15].[OneToMany_Required_Self_Inverse2Id], [l15].[OneToOne_Optional_PK_Inverse2Id], [l15].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l15] - WHERE [l15].[Id] <> 42 + SELECT [l17].[Id], [l17].[Date], [l17].[Level1_Optional_Id], [l17].[Level1_Required_Id], [l17].[Name], [l17].[OneToMany_Optional_Inverse2Id], [l17].[OneToMany_Optional_Self_Inverse2Id], [l17].[OneToMany_Required_Inverse2Id], [l17].[OneToMany_Required_Self_Inverse2Id], [l17].[OneToOne_Optional_PK_Inverse2Id], [l17].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l17] + WHERE [l17].[Id] <> 42 ) AS [t1] ON [t].[Id2] = [t1].[OneToMany_Optional_Self_Inverse2Id] WHERE [l11].[Name] <> N'Foo' OR [l11].[Name] IS NULL ORDER BY [l12].[Id], [l].[Id], [l0].[Id], [l1].[Id], [l2].[Id], [t].[Id], [t].[Id0], [t].[Id1], [t].[Id2], [t0].[Id], [t0].[Id0], [t0].[Id1], [t0].[Id2], [l11].[Id], [l13].[Id], [l14].[Id] @@ -1038,8 +1038,8 @@ FROM [LevelOne] AS [l] INNER JOIN ( SELECT [t].[Id], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Optional_Self_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToMany_Required_Self_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[OneToOne_Optional_Self3Id] FROM ( - SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Optional_Inverse3Id] ORDER BY [l1].[Id]) AS [row] - FROM [LevelThree] AS [l1] + SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Optional_Self_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToMany_Required_Self_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[OneToOne_Optional_Self3Id], ROW_NUMBER() OVER(PARTITION BY [l3].[OneToMany_Optional_Inverse3Id] ORDER BY [l3].[Id]) AS [row] + FROM [LevelThree] AS [l3] ) AS [t] WHERE [t].[row] <= 50 ) AS [t0] ON [l0].[Id] = [t0].[OneToMany_Optional_Inverse3Id] @@ -1105,9 +1105,9 @@ ORDER BY [l].[Id] SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l].[Id] FROM [LevelOne] AS [l] INNER JOIN ( - SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l0] - WHERE [l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL + SELECT [l2].[Id], [l2].[Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Optional_Self_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToMany_Required_Self_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l2] + WHERE [l2].[Name] <> N'Foo' OR [l2].[Name] IS NULL ) AS [t] ON [l].[Id] = [t].[OneToMany_Optional_Inverse2Id] WHERE [l].[Id] < 3 ORDER BY [l].[Id] @@ -1152,9 +1152,9 @@ ORDER BY [l].[Id] """, // """ -SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l].[Id] +SELECT [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l].[Id] FROM [LevelOne] AS [l] -INNER JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] +INNER JOIN [LevelTwo] AS [l1] ON [l].[Id] = [l1].[OneToMany_Optional_Inverse2Id] ORDER BY [l].[Id] """); } @@ -1196,23 +1196,23 @@ ORDER BY [l].[Id] SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l].[Id] FROM [LevelOne] AS [l] CROSS APPLY ( - SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l0] - WHERE [l0].[Id] > 0 + SELECT [l4].[Id], [l4].[Date], [l4].[Level1_Optional_Id], [l4].[Level1_Required_Id], [l4].[Name], [l4].[OneToMany_Optional_Inverse2Id], [l4].[OneToMany_Optional_Self_Inverse2Id], [l4].[OneToMany_Required_Inverse2Id], [l4].[OneToMany_Required_Self_Inverse2Id], [l4].[OneToOne_Optional_PK_Inverse2Id], [l4].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l4] + WHERE [l4].[Id] > 0 ) AS [t] WHERE [l].[Id] < 3 ORDER BY [l].[Id], [t].[Id] """, // """ -SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l].[Id], [t].[Id] +SELECT [l5].[Id], [l5].[Level2_Optional_Id], [l5].[Level2_Required_Id], [l5].[Name], [l5].[OneToMany_Optional_Inverse3Id], [l5].[OneToMany_Optional_Self_Inverse3Id], [l5].[OneToMany_Required_Inverse3Id], [l5].[OneToMany_Required_Self_Inverse3Id], [l5].[OneToOne_Optional_PK_Inverse3Id], [l5].[OneToOne_Optional_Self3Id], [l].[Id], [t].[Id] FROM [LevelOne] AS [l] CROSS APPLY ( - SELECT [l0].[Id] - FROM [LevelTwo] AS [l0] - WHERE [l0].[Id] > 0 + SELECT [l4].[Id] + FROM [LevelTwo] AS [l4] + WHERE [l4].[Id] > 0 ) AS [t] -INNER JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[OneToMany_Optional_Inverse3Id] +INNER JOIN [LevelThree] AS [l5] ON [t].[Id] = [l5].[OneToMany_Optional_Inverse3Id] WHERE [l].[Id] < 3 ORDER BY [l].[Id], [t].[Id] """); @@ -1234,11 +1234,11 @@ ORDER BY [l].[Id] FROM [LevelOne] AS [l] INNER JOIN ( SELECT CASE - WHEN [l1].[Id] IS NULL THEN CAST(1 AS bit) + WHEN [l5].[Id] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) - END AS [c], [l1].[Name], [l0].[OneToMany_Optional_Inverse2Id] - FROM [LevelTwo] AS [l0] - LEFT JOIN [LevelThree] AS [l1] ON [l0].[Id] = [l1].[Level2_Required_Id] + END AS [c], [l5].[Name], [l4].[OneToMany_Optional_Inverse2Id] + FROM [LevelTwo] AS [l4] + LEFT JOIN [LevelThree] AS [l5] ON [l4].[Id] = [l5].[Level2_Required_Id] ) AS [t] ON [l].[Id] = [t].[OneToMany_Optional_Inverse2Id] ORDER BY [l].[Id] """); @@ -1260,11 +1260,11 @@ ORDER BY [l].[Id] FROM [LevelOne] AS [l] INNER JOIN ( SELECT CASE - WHEN [l1].[Id] IS NULL THEN CAST(1 AS bit) + WHEN [l5].[Id] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) - END AS [c], [l1].[Name], [l0].[OneToMany_Optional_Inverse2Id] - FROM [LevelTwo] AS [l0] - LEFT JOIN [LevelThree] AS [l1] ON [l0].[Id] = [l1].[Level2_Required_Id] + END AS [c], [l5].[Name], [l4].[OneToMany_Optional_Inverse2Id] + FROM [LevelTwo] AS [l4] + LEFT JOIN [LevelThree] AS [l5] ON [l4].[Id] = [l5].[Level2_Required_Id] ) AS [t] ON [l].[Id] = [t].[OneToMany_Optional_Inverse2Id] ORDER BY [l].[Id] """); @@ -1335,10 +1335,10 @@ FROM [LevelOne] AS [l] """, // """ -SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l].[Id], [l0].[Id] +SELECT [l2].[Id], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Optional_Self_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToMany_Required_Self_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[OneToOne_Optional_Self3Id], [l].[Id], [l0].[Id] FROM [LevelOne] AS [l] INNER JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] -INNER JOIN [LevelThree] AS [l1] ON [l0].[Id] = [l1].[OneToMany_Optional_Inverse3Id] +INNER JOIN [LevelThree] AS [l2] ON [l0].[Id] = [l2].[OneToMany_Optional_Inverse3Id] ORDER BY [l].[Id], [l0].[Id] """); } @@ -1351,31 +1351,31 @@ public override async Task Lift_projection_mapping_when_pushing_down_subquery(bo """ @__p_0='25' -SELECT [t].[Id], [t0].[Id], [t0].[c] +SELECT [t].[Id], [t1].[Id], [t1].[c] FROM ( SELECT TOP(@__p_0) [l].[Id] FROM [LevelOne] AS [l] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[c], [t1].[OneToMany_Required_Inverse2Id] + SELECT [t0].[Id], [t0].[c], [t0].[OneToMany_Required_Inverse2Id] FROM ( SELECT [l0].[Id], 1 AS [c], [l0].[OneToMany_Required_Inverse2Id], ROW_NUMBER() OVER(PARTITION BY [l0].[OneToMany_Required_Inverse2Id] ORDER BY [l0].[Id]) AS [row] FROM [LevelTwo] AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Id] = [t0].[OneToMany_Required_Inverse2Id] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Id] = [t1].[OneToMany_Required_Inverse2Id] ORDER BY [t].[Id] """, // """ @__p_0='25' -SELECT [l0].[Id], [t].[Id] +SELECT [l4].[Id], [t].[Id] FROM ( SELECT TOP(@__p_0) [l].[Id] FROM [LevelOne] AS [l] ) AS [t] -INNER JOIN [LevelTwo] AS [l0] ON [t].[Id] = [l0].[OneToMany_Required_Inverse2Id] +INNER JOIN [LevelTwo] AS [l4] ON [t].[Id] = [l4].[OneToMany_Required_Inverse2Id] ORDER BY [t].[Id] """); } @@ -1400,18 +1400,18 @@ FROM [LevelTwo] AS [l0] """, // """ -SELECT [l1].[Id], [l].[Id], [t0].[Id] +SELECT [l11].[Id], [l].[Id], [t0].[Id] FROM [LevelOne] AS [l] LEFT JOIN ( SELECT [t].[Id], [t].[OneToMany_Optional_Inverse2Id] FROM ( - SELECT [l0].[Id], [l0].[OneToMany_Optional_Inverse2Id], ROW_NUMBER() OVER(PARTITION BY [l0].[OneToMany_Optional_Inverse2Id] ORDER BY [l0].[Id]) AS [row] - FROM [LevelTwo] AS [l0] + SELECT [l8].[Id], [l8].[OneToMany_Optional_Inverse2Id], ROW_NUMBER() OVER(PARTITION BY [l8].[OneToMany_Optional_Inverse2Id] ORDER BY [l8].[Id]) AS [row] + FROM [LevelTwo] AS [l8] ) AS [t] WHERE [t].[row] <= 1 ) AS [t0] ON [l].[Id] = [t0].[OneToMany_Optional_Inverse2Id] -INNER JOIN [LevelThree] AS [l1] ON [t0].[Id] = [l1].[OneToMany_Optional_Inverse3Id] -ORDER BY [l].[Id], [t0].[Id], [l1].[Id] +INNER JOIN [LevelThree] AS [l11] ON [t0].[Id] = [l11].[OneToMany_Optional_Inverse3Id] +ORDER BY [l].[Id], [t0].[Id], [l11].[Id] """); } @@ -1427,34 +1427,34 @@ ORDER BY [l].[Id] """, // """ -SELECT [l].[Id], [l0].[Id], [t0].[Id], [t0].[c] +SELECT [l].[Id], [l26].[Id], [t0].[Id], [t0].[c] FROM [LevelOne] AS [l] -INNER JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] +INNER JOIN [LevelTwo] AS [l26] ON [l].[Id] = [l26].[OneToMany_Optional_Inverse2Id] LEFT JOIN ( SELECT [t].[c], [t].[Id], [t].[OneToMany_Optional_Inverse3Id] FROM ( - SELECT 1 AS [c], [l1].[Id], [l1].[OneToMany_Optional_Inverse3Id], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Optional_Inverse3Id] ORDER BY [l1].[Id]) AS [row] - FROM [LevelThree] AS [l1] + SELECT 1 AS [c], [l35].[Id], [l35].[OneToMany_Optional_Inverse3Id], ROW_NUMBER() OVER(PARTITION BY [l35].[OneToMany_Optional_Inverse3Id] ORDER BY [l35].[Id]) AS [row] + FROM [LevelThree] AS [l35] ) AS [t] WHERE [t].[row] <= 1 -) AS [t0] ON [l0].[Id] = [t0].[OneToMany_Optional_Inverse3Id] -ORDER BY [l].[Id], [l0].[Id], [t0].[Id] +) AS [t0] ON [l26].[Id] = [t0].[OneToMany_Optional_Inverse3Id] +ORDER BY [l].[Id], [l26].[Id], [t0].[Id] """, // """ -SELECT [l2].[Id], [l].[Id], [l0].[Id], [t0].[Id] +SELECT [l38].[Id], [l].[Id], [l26].[Id], [t0].[Id] FROM [LevelOne] AS [l] -INNER JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] +INNER JOIN [LevelTwo] AS [l26] ON [l].[Id] = [l26].[OneToMany_Optional_Inverse2Id] LEFT JOIN ( SELECT [t].[Id], [t].[OneToMany_Optional_Inverse3Id] FROM ( - SELECT [l1].[Id], [l1].[OneToMany_Optional_Inverse3Id], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Optional_Inverse3Id] ORDER BY [l1].[Id]) AS [row] - FROM [LevelThree] AS [l1] + SELECT [l35].[Id], [l35].[OneToMany_Optional_Inverse3Id], ROW_NUMBER() OVER(PARTITION BY [l35].[OneToMany_Optional_Inverse3Id] ORDER BY [l35].[Id]) AS [row] + FROM [LevelThree] AS [l35] ) AS [t] WHERE [t].[row] <= 1 -) AS [t0] ON [l0].[Id] = [t0].[OneToMany_Optional_Inverse3Id] -INNER JOIN [LevelFour] AS [l2] ON [t0].[Id] = [l2].[OneToMany_Optional_Inverse4Id] -ORDER BY [l].[Id], [l0].[Id], [t0].[Id], [l2].[Id] +) AS [t0] ON [l26].[Id] = [t0].[OneToMany_Optional_Inverse3Id] +INNER JOIN [LevelFour] AS [l38] ON [t0].[Id] = [l38].[OneToMany_Optional_Inverse4Id] +ORDER BY [l].[Id], [l26].[Id], [t0].[Id], [l38].[Id] """); } @@ -1485,17 +1485,17 @@ WHERE [l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL SELECT [t0].[Name], [l].[Id], [t].[Id] FROM [LevelOne] AS [l] OUTER APPLY ( - SELECT TOP(1) [l0].[Id] - FROM [LevelTwo] AS [l0] - WHERE [l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL + SELECT TOP(1) [l21].[Id] + FROM [LevelTwo] AS [l21] + WHERE [l21].[Name] <> N'Foo' OR [l21].[Name] IS NULL ) AS [t] CROSS APPLY ( - SELECT [l1].[Name] - FROM [LevelOne] AS [l1] + SELECT [l26].[Name] + FROM [LevelOne] AS [l26] WHERE EXISTS ( SELECT 1 - FROM [LevelTwo] AS [l2] - WHERE [l1].[Id] = [l2].[OneToMany_Optional_Inverse2Id] AND [l2].[Id] = [t].[Id]) + FROM [LevelTwo] AS [l27] + WHERE [l26].[Id] = [l27].[OneToMany_Optional_Inverse2Id] AND [l27].[Id] = [t].[Id]) ) AS [t0] ORDER BY [l].[Id], [t].[Id] """); @@ -1527,19 +1527,19 @@ FROM [LevelOne] AS [l] LEFT JOIN ( SELECT [t].[Id], [t].[OneToMany_Optional_Inverse2Id] FROM ( - SELECT [l0].[Id], [l0].[OneToMany_Optional_Inverse2Id], ROW_NUMBER() OVER(PARTITION BY [l0].[OneToMany_Optional_Inverse2Id] ORDER BY [l0].[Id]) AS [row] - FROM [LevelTwo] AS [l0] - WHERE [l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL + SELECT [l14].[Id], [l14].[OneToMany_Optional_Inverse2Id], ROW_NUMBER() OVER(PARTITION BY [l14].[OneToMany_Optional_Inverse2Id] ORDER BY [l14].[Id]) AS [row] + FROM [LevelTwo] AS [l14] + WHERE [l14].[Name] <> N'Foo' OR [l14].[Name] IS NULL ) AS [t] WHERE [t].[row] <= 1 ) AS [t0] ON [l].[Id] = [t0].[OneToMany_Optional_Inverse2Id] CROSS APPLY ( - SELECT [l1].[Name] - FROM [LevelOne] AS [l1] + SELECT [l19].[Name] + FROM [LevelOne] AS [l19] WHERE EXISTS ( SELECT 1 - FROM [LevelTwo] AS [l2] - WHERE [l1].[Id] = [l2].[OneToMany_Optional_Inverse2Id] AND [l2].[Id] = [t0].[Id]) + FROM [LevelTwo] AS [l20] + WHERE [l19].[Id] = [l20].[OneToMany_Optional_Inverse2Id] AND [l20].[Id] = [t0].[Id]) ) AS [t1] ORDER BY [l].[Id], [t0].[Id] """); @@ -1603,9 +1603,9 @@ FROM [LevelFour] AS [l7] LEFT JOIN [LevelTwo] AS [l13] ON [t0].[Level2_Optional_Id0] = [l13].[Id] LEFT JOIN [LevelThree] AS [l14] ON [l13].[Id] = [l14].[Level2_Required_Id] INNER JOIN ( - SELECT [l15].[Id], [l15].[Date], [l15].[Level1_Optional_Id], [l15].[Level1_Required_Id], [l15].[Name], [l15].[OneToMany_Optional_Inverse2Id], [l15].[OneToMany_Optional_Self_Inverse2Id], [l15].[OneToMany_Required_Inverse2Id], [l15].[OneToMany_Required_Self_Inverse2Id], [l15].[OneToOne_Optional_PK_Inverse2Id], [l15].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l15] - WHERE [l15].[Id] <> 42 + SELECT [l17].[Id], [l17].[Date], [l17].[Level1_Optional_Id], [l17].[Level1_Required_Id], [l17].[Name], [l17].[OneToMany_Optional_Inverse2Id], [l17].[OneToMany_Optional_Self_Inverse2Id], [l17].[OneToMany_Required_Inverse2Id], [l17].[OneToMany_Required_Self_Inverse2Id], [l17].[OneToOne_Optional_PK_Inverse2Id], [l17].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l17] + WHERE [l17].[Id] <> 42 ) AS [t1] ON [t].[Id2] = [t1].[OneToMany_Optional_Self_Inverse2Id] WHERE [l11].[Name] <> N'Foo' OR [l11].[Name] IS NULL ORDER BY [l12].[Id], [l].[Id], [l0].[Id], [l1].[Id], [l2].[Id], [t].[Id], [t].[Id0], [t].[Id1], [t].[Id2], [t0].[Id], [t0].[Id0], [t0].[Id1], [t0].[Id2], [l11].[Id], [l13].[Id], [l14].[Id] @@ -1628,23 +1628,23 @@ ORDER BY [l].[Id] """ @__p_0='1' -SELECT [t0].[Id], [t0].[Name], [t0].[Level1Id], [t0].[Level2Id], [t0].[Id0], [t0].[Date], [t0].[Name0], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t].[Id] +SELECT [t3].[Id], [t3].[Name], [t3].[Level1Id], [t3].[Level2Id], [t3].[Id0], [t3].[Date], [t3].[Name0], [t3].[OneToMany_Optional_Self_Inverse1Id], [t3].[OneToMany_Required_Self_Inverse1Id], [t3].[OneToOne_Optional_Self1Id], [t2].[Id] FROM ( SELECT TOP(@__p_0) [l].[Id] FROM [LevelOne] AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t2] CROSS APPLY ( - SELECT [t1].[Id], [t1].[Name], [t1].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t1].[Level1_Required_Id] AS [Level2Id], [l0].[Id] AS [Id0], [l0].[Date], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id] + SELECT [t1].[Id], [t1].[Name], [t1].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t1].[Level1_Required_Id] AS [Level2Id], [l5].[Id] AS [Id0], [l5].[Date], [l5].[Name] AS [Name0], [l5].[OneToMany_Optional_Self_Inverse1Id], [l5].[OneToMany_Required_Self_Inverse1Id], [l5].[OneToOne_Optional_Self1Id] FROM ( - SELECT TOP(3) [l1].[Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Required_Inverse2Id] - FROM [LevelTwo] AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Required_Inverse2Id] - ORDER BY [l1].[Id] + SELECT TOP(3) [l4].[Id], [l4].[Level1_Required_Id], [l4].[Name], [l4].[OneToMany_Required_Inverse2Id] + FROM [LevelTwo] AS [l4] + WHERE [t2].[Id] = [l4].[OneToMany_Required_Inverse2Id] + ORDER BY [l4].[Id] ) AS [t1] - INNER JOIN [LevelOne] AS [l0] ON [t1].[Level1_Required_Id] = [l0].[Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[Id] + INNER JOIN [LevelOne] AS [l5] ON [t1].[Level1_Required_Id] = [l5].[Id] +) AS [t3] +ORDER BY [t2].[Id], [t3].[Id] """); } @@ -1665,25 +1665,25 @@ OFFSET @__p_0 ROWS FETCH NEXT @__p_0 ROWS ONLY """ @__p_0='1' -SELECT [t0].[Id], [t0].[Name], [t0].[Level1Id], [t0].[Level2Id], [t0].[Id0], [t0].[Date], [t0].[Name0], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t].[Id] +SELECT [t3].[Id], [t3].[Name], [t3].[Level1Id], [t3].[Level2Id], [t3].[Id0], [t3].[Date], [t3].[Name0], [t3].[OneToMany_Optional_Self_Inverse1Id], [t3].[OneToMany_Required_Self_Inverse1Id], [t3].[OneToOne_Optional_Self1Id], [t2].[Id] FROM ( SELECT [l].[Id] FROM [LevelOne] AS [l] ORDER BY [l].[Id] OFFSET @__p_0 ROWS FETCH NEXT @__p_0 ROWS ONLY -) AS [t] +) AS [t2] CROSS APPLY ( - SELECT [t1].[Id], [t1].[Name], [t1].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t1].[Level1_Required_Id] AS [Level2Id], [l0].[Id] AS [Id0], [l0].[Date], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id] + SELECT [t1].[Id], [t1].[Name], [t1].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t1].[Level1_Required_Id] AS [Level2Id], [l5].[Id] AS [Id0], [l5].[Date], [l5].[Name] AS [Name0], [l5].[OneToMany_Optional_Self_Inverse1Id], [l5].[OneToMany_Required_Self_Inverse1Id], [l5].[OneToOne_Optional_Self1Id] FROM ( - SELECT [l1].[Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Required_Inverse2Id] - FROM [LevelTwo] AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Required_Inverse2Id] - ORDER BY [l1].[Id] + SELECT [l4].[Id], [l4].[Level1_Required_Id], [l4].[Name], [l4].[OneToMany_Required_Inverse2Id] + FROM [LevelTwo] AS [l4] + WHERE [t2].[Id] = [l4].[OneToMany_Required_Inverse2Id] + ORDER BY [l4].[Id] OFFSET 1 ROWS FETCH NEXT 3 ROWS ONLY ) AS [t1] - INNER JOIN [LevelOne] AS [l0] ON [t1].[Level1_Required_Id] = [l0].[Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[Id] + INNER JOIN [LevelOne] AS [l5] ON [t1].[Level1_Required_Id] = [l5].[Id] +) AS [t3] +ORDER BY [t2].[Id], [t3].[Id] """); } @@ -1785,9 +1785,9 @@ FROM [LevelOne] AS [l] FROM [LevelOne] AS [l] LEFT JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[Level1_Optional_Id] INNER JOIN ( - SELECT [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l2].[Id] AS [Id0], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name] AS [Name0], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Optional_Self_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToMany_Required_Self_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[OneToOne_Optional_Self3Id] - FROM [LevelTwo] AS [l1] - LEFT JOIN [LevelThree] AS [l2] ON [l1].[Id] = [l2].[Level2_Optional_Id] + SELECT [l2].[Id], [l2].[Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Optional_Self_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToMany_Required_Self_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[OneToOne_Optional_Self2Id], [l3].[Id] AS [Id0], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Name] AS [Name0], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Optional_Self_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToMany_Required_Self_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[OneToOne_Optional_Self3Id] + FROM [LevelTwo] AS [l2] + LEFT JOIN [LevelThree] AS [l3] ON [l2].[Id] = [l3].[Level2_Optional_Id] ) AS [t] ON [l].[Id] = [t].[OneToMany_Optional_Inverse2Id] ORDER BY [l].[Id], [l0].[Id] """); @@ -1818,9 +1818,9 @@ FROM [LevelOne] AS [l] FROM [LevelOne] AS [l] LEFT JOIN [LevelOne] AS [l0] ON [l].[OneToOne_Optional_Self1Id] = [l0].[Id] INNER JOIN ( - SELECT [l1].[Id], [l1].[Date], [l1].[Name], [l1].[OneToMany_Optional_Self_Inverse1Id], [l1].[OneToMany_Required_Self_Inverse1Id], [l1].[OneToOne_Optional_Self1Id], [l2].[Id] AS [Id0], [l2].[Date] AS [Date0], [l2].[Name] AS [Name0], [l2].[OneToMany_Optional_Self_Inverse1Id] AS [OneToMany_Optional_Self_Inverse1Id0], [l2].[OneToMany_Required_Self_Inverse1Id] AS [OneToMany_Required_Self_Inverse1Id0], [l2].[OneToOne_Optional_Self1Id] AS [OneToOne_Optional_Self1Id0] - FROM [LevelOne] AS [l1] - LEFT JOIN [LevelOne] AS [l2] ON [l1].[OneToOne_Optional_Self1Id] = [l2].[Id] + SELECT [l2].[Id], [l2].[Date], [l2].[Name], [l2].[OneToMany_Optional_Self_Inverse1Id], [l2].[OneToMany_Required_Self_Inverse1Id], [l2].[OneToOne_Optional_Self1Id], [l3].[Id] AS [Id0], [l3].[Date] AS [Date0], [l3].[Name] AS [Name0], [l3].[OneToMany_Optional_Self_Inverse1Id] AS [OneToMany_Optional_Self_Inverse1Id0], [l3].[OneToMany_Required_Self_Inverse1Id] AS [OneToMany_Required_Self_Inverse1Id0], [l3].[OneToOne_Optional_Self1Id] AS [OneToOne_Optional_Self1Id0] + FROM [LevelOne] AS [l2] + LEFT JOIN [LevelOne] AS [l3] ON [l2].[OneToOne_Optional_Self1Id] = [l3].[Id] ) AS [t] ON [l].[Id] = [t].[OneToMany_Optional_Self_Inverse1Id] ORDER BY [l].[Id], [l0].[Id] """); @@ -1941,9 +1941,9 @@ FROM [LevelOne] AS [l] FROM [LevelOne] AS [l] LEFT JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[Level1_Optional_Id] INNER JOIN ( - SELECT [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l2].[Id] AS [Id0], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name] AS [Name0], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Optional_Self_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToMany_Required_Self_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[OneToOne_Optional_Self3Id] - FROM [LevelTwo] AS [l1] - LEFT JOIN [LevelThree] AS [l2] ON [l1].[Id] = [l2].[Level2_Optional_Id] + SELECT [l2].[Id], [l2].[Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Optional_Self_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToMany_Required_Self_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[OneToOne_Optional_Self2Id], [l3].[Id] AS [Id0], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Name] AS [Name0], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Optional_Self_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToMany_Required_Self_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[OneToOne_Optional_Self3Id] + FROM [LevelTwo] AS [l2] + LEFT JOIN [LevelThree] AS [l3] ON [l2].[Id] = [l3].[Level2_Optional_Id] ) AS [t] ON [l].[Id] = [t].[OneToMany_Optional_Inverse2Id] ORDER BY [l].[Id], [l0].[Id] """); @@ -2016,7 +2016,7 @@ OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY @__p_0='0' @__p_1='10' -SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [t].[Id], [l0].[Id] +SELECT [l2].[Id], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Optional_Self_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToMany_Required_Self_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[OneToOne_Optional_Self3Id], [t].[Id], [l0].[Id] FROM ( SELECT [l].[Id], [l].[Name] FROM [LevelOne] AS [l] @@ -2024,7 +2024,7 @@ ORDER BY [l].[Name] OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY ) AS [t] LEFT JOIN [LevelTwo] AS [l0] ON [t].[Id] = [l0].[Level1_Required_Id] -INNER JOIN [LevelThree] AS [l1] ON [l0].[Id] = [l1].[OneToMany_Required_Inverse3Id] +INNER JOIN [LevelThree] AS [l2] ON [l0].[Id] = [l2].[OneToMany_Required_Inverse3Id] ORDER BY [t].[Name], [t].[Id], [l0].[Id] """); } @@ -2071,7 +2071,7 @@ OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY @__p_0='0' @__p_1='10' -SELECT [l2].[Id], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Optional_Self_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToMany_Required_Self_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[OneToOne_Optional_Self3Id], [t].[Id], [l0].[Id], [l1].[Id] +SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Optional_Self_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToMany_Required_Self_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[OneToOne_Optional_Self3Id], [t].[Id], [l0].[Id], [l1].[Id] FROM ( SELECT [l].[Id], [l].[Name] FROM [LevelOne] AS [l] @@ -2080,7 +2080,7 @@ OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY ) AS [t] LEFT JOIN [LevelTwo] AS [l0] ON [t].[Id] = [l0].[Level1_Optional_Id] LEFT JOIN [LevelTwo] AS [l1] ON [t].[Id] = [l1].[Level1_Required_Id] -INNER JOIN [LevelThree] AS [l2] ON [l1].[Id] = [l2].[OneToMany_Required_Inverse3Id] +INNER JOIN [LevelThree] AS [l3] ON [l1].[Id] = [l3].[OneToMany_Required_Inverse3Id] ORDER BY [t].[Name], [t].[Id], [l0].[Id], [l1].[Id] """); } @@ -2614,40 +2614,40 @@ public override async Task Include_collection_with_groupby_in_subquery(bool asyn AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t].[Name] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t].[Name] FROM ( SELECT [l].[Name] FROM [LevelOne] AS [l] GROUP BY [l].[Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] -ORDER BY [t].[Name], [t0].[Id] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] +ORDER BY [t].[Name], [t1].[Id] """, // """ -SELECT [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [t].[Name], [t0].[Id] +SELECT [l6].[Id], [l6].[Date], [l6].[Level1_Optional_Id], [l6].[Level1_Required_Id], [l6].[Name], [l6].[OneToMany_Optional_Inverse2Id], [l6].[OneToMany_Optional_Self_Inverse2Id], [l6].[OneToMany_Required_Inverse2Id], [l6].[OneToMany_Required_Self_Inverse2Id], [l6].[OneToOne_Optional_PK_Inverse2Id], [l6].[OneToOne_Optional_Self2Id], [t].[Name], [t1].[Id] FROM ( SELECT [l].[Name] FROM [LevelOne] AS [l] GROUP BY [l].[Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Name] + SELECT [t0].[Id], [t0].[Name] FROM ( - SELECT [l0].[Id], [l0].[Name], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] - FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] -INNER JOIN [LevelTwo] AS [l1] ON [t0].[Id] = [l1].[OneToMany_Optional_Inverse2Id] -ORDER BY [t].[Name], [t0].[Id] + SELECT [l5].[Id], [l5].[Name], ROW_NUMBER() OVER(PARTITION BY [l5].[Name] ORDER BY [l5].[Id]) AS [row] + FROM [LevelOne] AS [l5] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] +INNER JOIN [LevelTwo] AS [l6] ON [t1].[Id] = [l6].[OneToMany_Optional_Inverse2Id] +ORDER BY [t].[Name], [t1].[Id] """); } @@ -2657,7 +2657,7 @@ public override async Task Include_collection_with_groupby_in_subquery_and_filte AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t].[Name] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t].[Name] FROM ( SELECT [l].[Name] FROM [LevelOne] AS [l] @@ -2665,19 +2665,19 @@ WHERE [l].[Id] > 3 GROUP BY [l].[Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [LevelOne] AS [l0] WHERE [l0].[Id] > 3 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] -ORDER BY [t].[Name], [t0].[Id] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] +ORDER BY [t].[Name], [t1].[Id] """, // """ -SELECT [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [t].[Name], [t0].[Id] +SELECT [l6].[Id], [l6].[Date], [l6].[Level1_Optional_Id], [l6].[Level1_Required_Id], [l6].[Name], [l6].[OneToMany_Optional_Inverse2Id], [l6].[OneToMany_Optional_Self_Inverse2Id], [l6].[OneToMany_Required_Inverse2Id], [l6].[OneToMany_Required_Self_Inverse2Id], [l6].[OneToOne_Optional_PK_Inverse2Id], [l6].[OneToOne_Optional_Self2Id], [t].[Name], [t1].[Id] FROM ( SELECT [l].[Name] FROM [LevelOne] AS [l] @@ -2685,16 +2685,16 @@ WHERE [l].[Id] > 3 GROUP BY [l].[Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Name] + SELECT [t0].[Id], [t0].[Name] FROM ( - SELECT [l0].[Id], [l0].[Name], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] - FROM [LevelOne] AS [l0] - WHERE [l0].[Id] > 3 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] -INNER JOIN [LevelTwo] AS [l1] ON [t0].[Id] = [l1].[OneToMany_Optional_Inverse2Id] -ORDER BY [t].[Name], [t0].[Id] + SELECT [l5].[Id], [l5].[Name], ROW_NUMBER() OVER(PARTITION BY [l5].[Name] ORDER BY [l5].[Id]) AS [row] + FROM [LevelOne] AS [l5] + WHERE [l5].[Id] > 3 + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] +INNER JOIN [LevelTwo] AS [l6] ON [t1].[Id] = [l6].[OneToMany_Optional_Inverse2Id] +ORDER BY [t].[Name], [t1].[Id] """); } @@ -2704,7 +2704,7 @@ public override async Task Include_collection_with_groupby_in_subquery_and_filte AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t].[Name] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t].[Name] FROM ( SELECT [l].[Name] FROM [LevelOne] AS [l] @@ -2712,18 +2712,18 @@ GROUP BY [l].[Name] HAVING [l].[Name] <> N'Foo' OR [l].[Name] IS NULL ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] -ORDER BY [t].[Name], [t0].[Id] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] +ORDER BY [t].[Name], [t1].[Id] """, // """ -SELECT [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [t].[Name], [t0].[Id] +SELECT [l6].[Id], [l6].[Date], [l6].[Level1_Optional_Id], [l6].[Level1_Required_Id], [l6].[Name], [l6].[OneToMany_Optional_Inverse2Id], [l6].[OneToMany_Optional_Self_Inverse2Id], [l6].[OneToMany_Required_Inverse2Id], [l6].[OneToMany_Required_Self_Inverse2Id], [l6].[OneToOne_Optional_PK_Inverse2Id], [l6].[OneToOne_Optional_Self2Id], [t].[Name], [t1].[Id] FROM ( SELECT [l].[Name] FROM [LevelOne] AS [l] @@ -2731,15 +2731,15 @@ GROUP BY [l].[Name] HAVING [l].[Name] <> N'Foo' OR [l].[Name] IS NULL ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Name] + SELECT [t0].[Id], [t0].[Name] FROM ( - SELECT [l0].[Id], [l0].[Name], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] - FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] -INNER JOIN [LevelTwo] AS [l1] ON [t0].[Id] = [l1].[OneToMany_Optional_Inverse2Id] -ORDER BY [t].[Name], [t0].[Id] + SELECT [l5].[Id], [l5].[Name], ROW_NUMBER() OVER(PARTITION BY [l5].[Name] ORDER BY [l5].[Id]) AS [row] + FROM [LevelOne] AS [l5] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] +INNER JOIN [LevelTwo] AS [l6] ON [t1].[Id] = [l6].[OneToMany_Optional_Inverse2Id] +ORDER BY [t].[Name], [t1].[Id] """); } @@ -3081,10 +3081,10 @@ ORDER BY [l].[Id] SELECT [t].[Id], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Optional_Self_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToMany_Required_Self_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[OneToOne_Optional_Self3Id], [t].[Id0], [t].[Level3_Optional_Id], [t].[Level3_Required_Id], [t].[Name0], [t].[OneToMany_Optional_Inverse4Id], [t].[OneToMany_Optional_Self_Inverse4Id], [t].[OneToMany_Required_Inverse4Id], [t].[OneToMany_Required_Self_Inverse4Id], [t].[OneToOne_Optional_PK_Inverse4Id], [t].[OneToOne_Optional_Self4Id], [l].[Id] FROM [LevelOne] AS [l] INNER JOIN ( - SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l2].[Id] AS [Id0], [l2].[Level3_Optional_Id], [l2].[Level3_Required_Id], [l2].[Name] AS [Name0], [l2].[OneToMany_Optional_Inverse4Id], [l2].[OneToMany_Optional_Self_Inverse4Id], [l2].[OneToMany_Required_Inverse4Id], [l2].[OneToMany_Required_Self_Inverse4Id], [l2].[OneToOne_Optional_PK_Inverse4Id], [l2].[OneToOne_Optional_Self4Id], [l0].[OneToMany_Optional_Inverse2Id] - FROM [LevelTwo] AS [l0] - LEFT JOIN [LevelThree] AS [l1] ON [l0].[Id] = [l1].[OneToOne_Optional_PK_Inverse3Id] - LEFT JOIN [LevelFour] AS [l2] ON [l1].[Id] = [l2].[Level3_Optional_Id] + SELECT [l7].[Id], [l7].[Level2_Optional_Id], [l7].[Level2_Required_Id], [l7].[Name], [l7].[OneToMany_Optional_Inverse3Id], [l7].[OneToMany_Optional_Self_Inverse3Id], [l7].[OneToMany_Required_Inverse3Id], [l7].[OneToMany_Required_Self_Inverse3Id], [l7].[OneToOne_Optional_PK_Inverse3Id], [l7].[OneToOne_Optional_Self3Id], [l8].[Id] AS [Id0], [l8].[Level3_Optional_Id], [l8].[Level3_Required_Id], [l8].[Name] AS [Name0], [l8].[OneToMany_Optional_Inverse4Id], [l8].[OneToMany_Optional_Self_Inverse4Id], [l8].[OneToMany_Required_Inverse4Id], [l8].[OneToMany_Required_Self_Inverse4Id], [l8].[OneToOne_Optional_PK_Inverse4Id], [l8].[OneToOne_Optional_Self4Id], [l6].[OneToMany_Optional_Inverse2Id] + FROM [LevelTwo] AS [l6] + LEFT JOIN [LevelThree] AS [l7] ON [l6].[Id] = [l7].[OneToOne_Optional_PK_Inverse3Id] + LEFT JOIN [LevelFour] AS [l8] ON [l7].[Id] = [l8].[Level3_Optional_Id] ) AS [t] ON [l].[Id] = [t].[OneToMany_Optional_Inverse2Id] ORDER BY [l].[Id] """); @@ -3113,13 +3113,13 @@ ORDER BY [l].[Id] """, // """ -SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[Id0], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Name0], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Optional_Self_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToMany_Required_Self_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[OneToOne_Optional_Self3Id], [l].[Id] +SELECT [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [l].[Id] FROM [LevelOne] AS [l] INNER JOIN ( - SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id] - FROM [LevelTwo] AS [l0] - LEFT JOIN [LevelThree] AS [l1] ON [l0].[Id] = [l1].[OneToOne_Optional_PK_Inverse3Id] -) AS [t] ON [l].[Id] = [t].[OneToMany_Optional_Inverse2Id] + SELECT [l2].[Id], [l2].[Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Optional_Self_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToMany_Required_Self_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[OneToOne_Optional_Self2Id], [l3].[Id] AS [Id0], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Name] AS [Name0], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Optional_Self_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToMany_Required_Self_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[OneToOne_Optional_Self3Id] + FROM [LevelTwo] AS [l2] + LEFT JOIN [LevelThree] AS [l3] ON [l2].[Id] = [l3].[OneToOne_Optional_PK_Inverse3Id] +) AS [t0] ON [l].[Id] = [t0].[OneToMany_Optional_Inverse2Id] ORDER BY [l].[Id] """); } @@ -3288,23 +3288,23 @@ ORDER BY [l].[Id] """ @__p_0='5' -SELECT [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t].[Id] +SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id], [t0].[Id] FROM ( SELECT TOP(@__p_0) [l].[Id] FROM [LevelOne] AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t0] CROSS APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id] FROM ( - SELECT TOP(4) [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Optional_Inverse2Id] - ORDER BY [l1].[Name] DESC - ) AS [t1] - LEFT JOIN [LevelThree] AS [l0] ON [t1].[Id] = [l0].[Level2_Optional_Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[Name] DESC + SELECT TOP(4) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l0] + WHERE [t0].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + ORDER BY [l0].[Name] DESC + ) AS [t] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[Level2_Optional_Id] +) AS [t1] +ORDER BY [t0].[Id], [t1].[Name] DESC """); } @@ -3327,25 +3327,25 @@ OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY @__p_0='1' @__p_1='5' -SELECT [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t].[Id] +SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id], [t0].[Id] FROM ( SELECT [l].[Id] FROM [LevelOne] AS [l] ORDER BY [l].[Id] DESC OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY -) AS [t] +) AS [t0] CROSS APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id] FROM ( - SELECT [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Optional_Inverse2Id] - ORDER BY [l1].[Name] DESC + SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l0] + WHERE [t0].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + ORDER BY [l0].[Name] DESC OFFSET 1 ROWS FETCH NEXT 4 ROWS ONLY - ) AS [t1] - LEFT JOIN [LevelThree] AS [l0] ON [t1].[Id] = [l0].[Level2_Optional_Id] -) AS [t0] -ORDER BY [t].[Id] DESC, [t0].[Name] DESC + ) AS [t] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[Level2_Optional_Id] +) AS [t1] +ORDER BY [t0].[Id] DESC, [t1].[Name] DESC """); } @@ -3362,22 +3362,22 @@ ORDER BY [l].[Id] """, // """ -SELECT [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t].[Id] +SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id], [t0].[Id] FROM ( SELECT TOP(1) [l].[Id] FROM [LevelOne] AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t0] CROSS APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id] FROM ( - SELECT TOP(40) [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Optional_Inverse2Id] - ) AS [t1] - LEFT JOIN [LevelThree] AS [l0] ON [t1].[Id] = [l0].[Level2_Optional_Id] -) AS [t0] -ORDER BY [t].[Id] + SELECT TOP(40) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l0] + WHERE [t0].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + ) AS [t] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[Level2_Optional_Id] +) AS [t1] +ORDER BY [t0].[Id] """); } @@ -3398,22 +3398,22 @@ ORDER BY [l].[Id] """ @__p_0='30' -SELECT [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t].[Id] +SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id], [t0].[Id] FROM ( SELECT TOP(@__p_0) [l].[Id] FROM [LevelOne] AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t0] CROSS APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id] FROM ( - SELECT TOP(40) [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id] - FROM [LevelTwo] AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Optional_Inverse2Id] - ) AS [t1] - LEFT JOIN [LevelThree] AS [l0] ON [t1].[Id] = [l0].[Level2_Optional_Id] -) AS [t0] -ORDER BY [t].[Id] + SELECT TOP(40) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + FROM [LevelTwo] AS [l0] + WHERE [t0].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + ) AS [t] + LEFT JOIN [LevelThree] AS [l1] ON [t].[Id] = [l1].[Level2_Optional_Id] +) AS [t1] +ORDER BY [t0].[Id] """); } @@ -3430,13 +3430,13 @@ ORDER BY [l].[Id] """, // """ -SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [t].[Id] +SELECT [l2].[Id], [l2].[Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Optional_Self_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToMany_Required_Self_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[OneToOne_Optional_Self2Id], [t].[Id] FROM ( SELECT TOP(1) [l].[Id] FROM [LevelOne] AS [l] WHERE [l].[Id] = 1 ) AS [t] -INNER JOIN [LevelTwo] AS [l0] ON [t].[Id] = [l0].[OneToMany_Optional_Inverse2Id] +INNER JOIN [LevelTwo] AS [l2] ON [t].[Id] = [l2].[OneToMany_Optional_Inverse2Id] ORDER BY [t].[Id] """); } @@ -3454,21 +3454,21 @@ ORDER BY [l].[Date] """, // """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t].[Date] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t].[Date] FROM ( SELECT [l].[Date] FROM [LevelOne] AS [l] GROUP BY [l].[Date] ) AS [t] INNER JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( - SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] - FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + SELECT [l3].[Id], [l3].[Date], [l3].[Name], [l3].[OneToMany_Optional_Self_Inverse1Id], [l3].[OneToMany_Required_Self_Inverse1Id], [l3].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l3].[Date] ORDER BY [l3].[Name]) AS [row] + FROM [LevelOne] AS [l3] + ) AS [t0] + WHERE 1 < [t0].[row] +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -3485,21 +3485,21 @@ ORDER BY [l].[Date] """, // """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t].[Date] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t].[Date] FROM ( SELECT [l].[Date] FROM [LevelOne] AS [l] GROUP BY [l].[Date] ) AS [t] INNER JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( - SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name] DESC) AS [row] - FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 10 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] DESC + SELECT [l3].[Id], [l3].[Date], [l3].[Name], [l3].[OneToMany_Optional_Self_Inverse1Id], [l3].[OneToMany_Required_Self_Inverse1Id], [l3].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l3].[Date] ORDER BY [l3].[Name] DESC) AS [row] + FROM [LevelOne] AS [l3] + ) AS [t0] + WHERE [t0].[row] <= 10 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] DESC """); } @@ -3516,21 +3516,21 @@ ORDER BY [l].[Date] """, // """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t].[Date] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t].[Date] FROM ( SELECT [l].[Date] FROM [LevelOne] AS [l] GROUP BY [l].[Date] ) AS [t] INNER JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( - SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] - FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + SELECT [l3].[Id], [l3].[Date], [l3].[Name], [l3].[OneToMany_Optional_Self_Inverse1Id], [l3].[OneToMany_Required_Self_Inverse1Id], [l3].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l3].[Date] ORDER BY [l3].[Name]) AS [row] + FROM [LevelOne] AS [l3] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -3547,23 +3547,23 @@ ORDER BY [l].[Date] """, // """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t].[Date] +SELECT [t3].[Id], [t3].[Date], [t3].[Name], [t3].[OneToMany_Optional_Self_Inverse1Id], [t3].[OneToMany_Required_Self_Inverse1Id], [t3].[OneToOne_Optional_Self1Id], [t2].[Date] FROM ( SELECT [l].[Date] FROM [LevelOne] AS [l] GROUP BY [l].[Date] -) AS [t] +) AS [t2] CROSS APPLY ( SELECT DISTINCT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] FROM ( - SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id] - FROM [LevelOne] AS [l0] - WHERE [t].[Date] = [l0].[Date] - ORDER BY [l0].[Name] + SELECT [l3].[Id], [l3].[Date], [l3].[Name], [l3].[OneToMany_Optional_Self_Inverse1Id], [l3].[OneToMany_Required_Self_Inverse1Id], [l3].[OneToOne_Optional_Self1Id] + FROM [LevelOne] AS [l3] + WHERE [t2].[Date] = [l3].[Date] + ORDER BY [l3].[Name] OFFSET 1 ROWS FETCH NEXT 5 ROWS ONLY ) AS [t1] -) AS [t0] -ORDER BY [t].[Date] +) AS [t3] +ORDER BY [t2].[Date] """); } @@ -3580,21 +3580,21 @@ ORDER BY [l].[Date] """, // """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t].[Date] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t].[Date] FROM ( SELECT [l].[Date] FROM [LevelOne] AS [l] GROUP BY [l].[Date] ) AS [t] INNER JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( - SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] - FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + SELECT [l3].[Id], [l3].[Date], [l3].[Name], [l3].[OneToMany_Optional_Self_Inverse1Id], [l3].[OneToMany_Required_Self_Inverse1Id], [l3].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l3].[Date] ORDER BY [l3].[Name]) AS [row] + FROM [LevelOne] AS [l3] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -3611,21 +3611,21 @@ ORDER BY [l].[Date] """, // """ -SELECT [t0].[Name], [t].[Date] +SELECT [t1].[Name], [t].[Date] FROM ( SELECT [l].[Date] FROM [LevelOne] AS [l] GROUP BY [l].[Date] ) AS [t] INNER JOIN ( - SELECT [t1].[Name], [t1].[Date] + SELECT [t0].[Name], [t0].[Date] FROM ( - SELECT [l0].[Name], [l0].[Date], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] - FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + SELECT [l3].[Name], [l3].[Date], ROW_NUMBER() OVER(PARTITION BY [l3].[Date] ORDER BY [l3].[Name]) AS [row] + FROM [LevelOne] AS [l3] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -3642,21 +3642,21 @@ ORDER BY [l].[Date] """, // """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t].[Date] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t].[Date] FROM ( SELECT [l].[Date] FROM [LevelOne] AS [l] GROUP BY [l].[Date] ) AS [t] INNER JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( - SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] - FROM [LevelOne] AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name], [t0].[Id] + SELECT [l5].[Id], [l5].[Date], [l5].[Name], [l5].[OneToMany_Optional_Self_Inverse1Id], [l5].[OneToMany_Required_Self_Inverse1Id], [l5].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l5].[Date] ORDER BY [l5].[Name]) AS [row] + FROM [LevelOne] AS [l5] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name], [t1].[Id] """); } @@ -3673,24 +3673,24 @@ ORDER BY [l].[Date] """, // """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[Id0], [t0].[Date0], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t].[Date] +SELECT [t3].[Id], [t3].[Date], [t3].[Name], [t3].[OneToMany_Optional_Self_Inverse1Id], [t3].[OneToMany_Required_Self_Inverse1Id], [t3].[OneToOne_Optional_Self1Id], [t3].[Id0], [t3].[Date0], [t3].[Level1_Optional_Id], [t3].[Level1_Required_Id], [t3].[Name0], [t3].[OneToMany_Optional_Inverse2Id], [t3].[OneToMany_Optional_Self_Inverse2Id], [t3].[OneToMany_Required_Inverse2Id], [t3].[OneToMany_Required_Self_Inverse2Id], [t3].[OneToOne_Optional_PK_Inverse2Id], [t3].[OneToOne_Optional_Self2Id], [t2].[Date] FROM ( SELECT [l].[Date] FROM [LevelOne] AS [l] GROUP BY [l].[Date] -) AS [t] +) AS [t2] CROSS APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [l0].[Id] AS [Id0], [l0].[Date] AS [Date0], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] + SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [l6].[Id] AS [Id0], [l6].[Date] AS [Date0], [l6].[Level1_Optional_Id], [l6].[Level1_Required_Id], [l6].[Name] AS [Name0], [l6].[OneToMany_Optional_Inverse2Id], [l6].[OneToMany_Optional_Self_Inverse2Id], [l6].[OneToMany_Required_Inverse2Id], [l6].[OneToMany_Required_Self_Inverse2Id], [l6].[OneToOne_Optional_PK_Inverse2Id], [l6].[OneToOne_Optional_Self2Id] FROM ( - SELECT [l1].[Id], [l1].[Date], [l1].[Name], [l1].[OneToMany_Optional_Self_Inverse1Id], [l1].[OneToMany_Required_Self_Inverse1Id], [l1].[OneToOne_Optional_Self1Id] - FROM [LevelOne] AS [l1] - WHERE [t].[Date] = [l1].[Date] - ORDER BY [l1].[Name] + SELECT [l5].[Id], [l5].[Date], [l5].[Name], [l5].[OneToMany_Optional_Self_Inverse1Id], [l5].[OneToMany_Required_Self_Inverse1Id], [l5].[OneToOne_Optional_Self1Id] + FROM [LevelOne] AS [l5] + WHERE [t2].[Date] = [l5].[Date] + ORDER BY [l5].[Name] OFFSET 1 ROWS FETCH NEXT 5 ROWS ONLY ) AS [t1] - LEFT JOIN [LevelTwo] AS [l0] ON [t1].[Id] = [l0].[Level1_Optional_Id] -) AS [t0] -ORDER BY [t].[Date], [t0].[Name] + LEFT JOIN [LevelTwo] AS [l6] ON [t1].[Id] = [l6].[Level1_Optional_Id] +) AS [t3] +ORDER BY [t2].[Date], [t3].[Name] """); } @@ -3709,32 +3709,32 @@ ORDER BY [l].[Id] SELECT [t].[Date], [l].[Id] FROM [LevelOne] AS [l] CROSS APPLY ( - SELECT [l0].[Date] - FROM [LevelOne] AS [l0] - WHERE [l0].[Name] = [l].[Name] OR ([l0].[Name] IS NULL AND [l].[Name] IS NULL) - GROUP BY [l0].[Date] + SELECT [l10].[Date] + FROM [LevelOne] AS [l10] + WHERE [l10].[Name] = [l].[Name] OR ([l10].[Name] IS NULL AND [l].[Name] IS NULL) + GROUP BY [l10].[Date] ) AS [t] ORDER BY [l].[Id], [t].[Date] """, // """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [l].[Id], [t].[Date] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [l].[Id], [t].[Date] FROM [LevelOne] AS [l] CROSS APPLY ( - SELECT [l0].[Date] - FROM [LevelOne] AS [l0] - WHERE [l0].[Name] = [l].[Name] OR ([l0].[Name] IS NULL AND [l].[Name] IS NULL) - GROUP BY [l0].[Date] + SELECT [l10].[Date] + FROM [LevelOne] AS [l10] + WHERE [l10].[Name] = [l].[Name] OR ([l10].[Name] IS NULL AND [l].[Name] IS NULL) + GROUP BY [l10].[Date] ) AS [t] INNER JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id] FROM ( - SELECT [l1].[Id], [l1].[Date], [l1].[Name], [l1].[OneToMany_Optional_Self_Inverse1Id], [l1].[OneToMany_Required_Self_Inverse1Id], [l1].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l1].[Name], [l1].[Date] ORDER BY [l1].[Name]) AS [row] - FROM [LevelOne] AS [l1] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON ([l].[Name] = [t0].[Name] OR ([l].[Name] IS NULL AND [t0].[Name] IS NULL)) AND [t].[Date] = [t0].[Date] -ORDER BY [l].[Id], [t].[Date], [t0].[Name], [t0].[Date] + SELECT [l14].[Id], [l14].[Date], [l14].[Name], [l14].[OneToMany_Optional_Self_Inverse1Id], [l14].[OneToMany_Required_Self_Inverse1Id], [l14].[OneToOne_Optional_Self1Id], ROW_NUMBER() OVER(PARTITION BY [l14].[Name], [l14].[Date] ORDER BY [l14].[Name]) AS [row] + FROM [LevelOne] AS [l14] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON ([l].[Name] = [t1].[Name] OR ([l].[Name] IS NULL AND [t1].[Name] IS NULL)) AND [t].[Date] = [t1].[Date] +ORDER BY [l].[Id], [t].[Date], [t1].[Name], [t1].[Date] """); } @@ -3770,11 +3770,11 @@ FROM OPENJSON(@__validIds_0) WITH ([value] nvarchar(max) '$') AS [v] GROUP BY [l].[Date] ) AS [t] INNER JOIN ( - SELECT [l0].[Id], [l0].[Date] - FROM [LevelOne] AS [l0] - WHERE [l0].[Name] IN ( - SELECT [v0].[value] - FROM OPENJSON(@__validIds_0) WITH ([value] nvarchar(max) '$') AS [v0] + SELECT [l3].[Id], [l3].[Date] + FROM [LevelOne] AS [l3] + WHERE [l3].[Name] IN ( + SELECT [v3].[value] + FROM OPENJSON(@__validIds_0) WITH ([value] nvarchar(max) '$') AS [v3] ) ) AS [t0] ON [t].[Date] = [t0].[Date] ORDER BY [t].[Date] @@ -3842,15 +3842,15 @@ WHERE [l0].[Id] < 3 OR [l1].[Id] > 8 """, // """ -SELECT [t].[Id], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Optional_Self_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToMany_Required_Self_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[OneToOne_Optional_Self3Id], [t].[Id0], [t].[Level3_Optional_Id], [t].[Level3_Required_Id], [t].[Name0], [t].[OneToMany_Optional_Inverse4Id], [t].[OneToMany_Optional_Self_Inverse4Id], [t].[OneToMany_Required_Inverse4Id], [t].[OneToMany_Required_Self_Inverse4Id], [t].[OneToOne_Optional_PK_Inverse4Id], [t].[OneToOne_Optional_Self4Id], [l].[Id], [l0].[Id], [l1].[Id] +SELECT [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id], [t1].[Id0], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Optional_Self_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToMany_Required_Self_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t1].[OneToOne_Optional_Self4Id], [l].[Id], [l0].[Id], [l1].[Id] FROM [LevelOne] AS [l] LEFT JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[OneToOne_Optional_PK_Inverse2Id] LEFT JOIN [LevelTwo] AS [l1] ON [l].[Id] = [l1].[Level1_Optional_Id] INNER JOIN ( - SELECT [l2].[Id], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Optional_Self_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToMany_Required_Self_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[OneToOne_Optional_Self3Id], [l3].[Id] AS [Id0], [l3].[Level3_Optional_Id], [l3].[Level3_Required_Id], [l3].[Name] AS [Name0], [l3].[OneToMany_Optional_Inverse4Id], [l3].[OneToMany_Optional_Self_Inverse4Id], [l3].[OneToMany_Required_Inverse4Id], [l3].[OneToMany_Required_Self_Inverse4Id], [l3].[OneToOne_Optional_PK_Inverse4Id], [l3].[OneToOne_Optional_Self4Id] - FROM [LevelThree] AS [l2] - LEFT JOIN [LevelFour] AS [l3] ON [l2].[Id] = [l3].[Level3_Optional_Id] -) AS [t] ON [l1].[Id] = [t].[OneToMany_Required_Inverse3Id] + SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Optional_Self_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToMany_Required_Self_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[OneToOne_Optional_Self3Id], [l4].[Id] AS [Id0], [l4].[Level3_Optional_Id], [l4].[Level3_Required_Id], [l4].[Name] AS [Name0], [l4].[OneToMany_Optional_Inverse4Id], [l4].[OneToMany_Optional_Self_Inverse4Id], [l4].[OneToMany_Required_Inverse4Id], [l4].[OneToMany_Required_Self_Inverse4Id], [l4].[OneToOne_Optional_PK_Inverse4Id], [l4].[OneToOne_Optional_Self4Id] + FROM [LevelThree] AS [l3] + LEFT JOIN [LevelFour] AS [l4] ON [l3].[Id] = [l4].[Level3_Optional_Id] +) AS [t1] ON [l1].[Id] = [t1].[OneToMany_Required_Inverse3Id] WHERE [l0].[Id] < 3 OR [l1].[Id] > 8 ORDER BY [l].[Id], [l0].[Id], [l1].[Id] """); @@ -3873,8 +3873,8 @@ FROM [LevelOne] AS [l] INNER JOIN ( SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id] FROM ( - SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], ROW_NUMBER() OVER(PARTITION BY [l0].[OneToMany_Optional_Inverse2Id] ORDER BY [l0].[Id]) AS [row] - FROM [LevelTwo] AS [l0] + SELECT [l2].[Id], [l2].[Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Optional_Self_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToMany_Required_Self_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[OneToOne_Optional_Self2Id], ROW_NUMBER() OVER(PARTITION BY [l2].[OneToMany_Optional_Inverse2Id] ORDER BY [l2].[Id]) AS [row] + FROM [LevelTwo] AS [l2] ) AS [t] WHERE [t].[row] <= 50 ) AS [t0] ON [l].[Id] = [t0].[OneToMany_Optional_Inverse2Id] @@ -3957,38 +3957,38 @@ FROM [LevelOne] AS [l] """, // """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[ChildCount], [t0].[Level2Name], [t0].[Level2Count], [t0].[IsLevel2There], [t].[Id], [t].[Id0] +SELECT [t3].[Id], [t3].[Date], [t3].[Name], [t3].[OneToMany_Optional_Self_Inverse1Id], [t3].[OneToMany_Required_Self_Inverse1Id], [t3].[OneToOne_Optional_Self1Id], [t3].[ChildCount], [t3].[Level2Name], [t3].[Level2Count], [t3].[IsLevel2There], [t2].[Id], [t2].[Id0] FROM ( SELECT TOP(1) [l].[Id], [l0].[Id] AS [Id0], [l].[Name] FROM [LevelOne] AS [l] LEFT JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[Level1_Optional_Id] WHERE [l].[Id] = 2 ORDER BY [l].[Name] -) AS [t] +) AS [t2] CROSS APPLY ( SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], ( SELECT COUNT(*) - FROM [LevelOne] AS [l2] - WHERE [t1].[Id] = [l2].[OneToMany_Optional_Self_Inverse1Id]) AS [ChildCount], [l1].[Name] AS [Level2Name], ( + FROM [LevelOne] AS [l19] + WHERE [t1].[Id] = [l19].[OneToMany_Optional_Self_Inverse1Id]) AS [ChildCount], [l18].[Name] AS [Level2Name], ( SELECT COUNT(*) - FROM [LevelTwo] AS [l3] - WHERE [t1].[Id] = [l3].[OneToMany_Optional_Inverse2Id]) AS [Level2Count], CASE + FROM [LevelTwo] AS [l20] + WHERE [t1].[Id] = [l20].[OneToMany_Optional_Inverse2Id]) AS [Level2Count], CASE WHEN EXISTS ( SELECT 1 - FROM [LevelTwo] AS [l4] - WHERE [t1].[Id] = [l4].[OneToMany_Optional_Inverse2Id] AND [l4].[Id] = 2) THEN CAST(1 AS bit) + FROM [LevelTwo] AS [l21] + WHERE [t1].[Id] = [l21].[OneToMany_Optional_Inverse2Id] AND [l21].[Id] = 2) THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [IsLevel2There] FROM ( - SELECT [l5].[Id], [l5].[Date], [l5].[Name], [l5].[OneToMany_Optional_Self_Inverse1Id], [l5].[OneToMany_Required_Self_Inverse1Id], [l5].[OneToOne_Optional_Self1Id] - FROM [LevelOne] AS [l5] - WHERE [t].[Id] = [l5].[OneToMany_Optional_Self_Inverse1Id] - ORDER BY [l5].[Name] + SELECT [l17].[Id], [l17].[Date], [l17].[Name], [l17].[OneToMany_Optional_Self_Inverse1Id], [l17].[OneToMany_Required_Self_Inverse1Id], [l17].[OneToOne_Optional_Self1Id] + FROM [LevelOne] AS [l17] + WHERE [t2].[Id] = [l17].[OneToMany_Optional_Self_Inverse1Id] + ORDER BY [l17].[Name] OFFSET 1 ROWS FETCH NEXT 5 ROWS ONLY ) AS [t1] - LEFT JOIN [LevelTwo] AS [l1] ON [t1].[Id] = [l1].[Level1_Optional_Id] -) AS [t0] -ORDER BY [t].[Name], [t].[Id], [t].[Id0], [t0].[Name] + LEFT JOIN [LevelTwo] AS [l18] ON [t1].[Id] = [l18].[Level1_Optional_Id] +) AS [t3] +ORDER BY [t2].[Name], [t2].[Id], [t2].[Id0], [t3].[Name] """); } @@ -4037,9 +4037,9 @@ FROM [LevelOne] AS [l] FROM [LevelOne] AS [l] LEFT JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[Level1_Optional_Id] CROSS APPLY ( - SELECT [l1].[Id] AS [ChildId], [l0].[Name] AS [ParentName] - FROM [LevelThree] AS [l1] - WHERE [l0].[Id] IS NOT NULL AND [l0].[Id] = [l1].[OneToMany_Optional_Inverse3Id] + SELECT [l3].[Id] AS [ChildId], [l0].[Name] AS [ParentName] + FROM [LevelThree] AS [l3] + WHERE [l0].[Id] IS NOT NULL AND [l0].[Id] = [l3].[OneToMany_Optional_Inverse3Id] ) AS [t] ORDER BY [l].[Id], [l0].[Id] """); @@ -4064,10 +4064,10 @@ FROM [LevelOne] AS [l] LEFT JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[Level1_Optional_Id] LEFT JOIN [LevelThree] AS [l1] ON [l0].[Id] = [l1].[Level2_Optional_Id] CROSS APPLY ( - SELECT [l2].[Name] AS [Key], COUNT(*) AS [Count] - FROM [LevelThree] AS [l2] - WHERE [l0].[Id] IS NOT NULL AND [l0].[Id] = [l2].[OneToMany_Optional_Inverse3Id] - GROUP BY [l2].[Name] + SELECT [l6].[Name] AS [Key], COUNT(*) AS [Count] + FROM [LevelThree] AS [l6] + WHERE [l0].[Id] IS NOT NULL AND [l0].[Id] = [l6].[OneToMany_Optional_Inverse3Id] + GROUP BY [l6].[Name] ) AS [t] ORDER BY [l].[Id], [l0].[Id], [l1].[Id] """); @@ -4098,9 +4098,9 @@ FROM [LevelOne] AS [l] FROM [LevelOne] AS [l] LEFT JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[Level1_Optional_Id] INNER JOIN ( - SELECT [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l2].[Id] AS [Id0], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name] AS [Name0], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Optional_Self_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToMany_Required_Self_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[OneToOne_Optional_Self3Id] - FROM [LevelTwo] AS [l1] - LEFT JOIN [LevelThree] AS [l2] ON [l1].[Id] = [l2].[Level2_Optional_Id] + SELECT [l2].[Id], [l2].[Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Optional_Self_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToMany_Required_Self_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[OneToOne_Optional_Self2Id], [l3].[Id] AS [Id0], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Name] AS [Name0], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Optional_Self_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToMany_Required_Self_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[OneToOne_Optional_Self3Id] + FROM [LevelTwo] AS [l2] + LEFT JOIN [LevelThree] AS [l3] ON [l2].[Id] = [l3].[Level2_Optional_Id] ) AS [t] ON [l].[Id] = [t].[OneToMany_Optional_Inverse2Id] ORDER BY [l].[Id], [l0].[Id] """); @@ -4131,9 +4131,9 @@ FROM [LevelOne] AS [l] FROM [LevelOne] AS [l] LEFT JOIN [LevelOne] AS [l0] ON [l].[OneToOne_Optional_Self1Id] = [l0].[Id] INNER JOIN ( - SELECT [l1].[Id], [l1].[Date], [l1].[Name], [l1].[OneToMany_Optional_Self_Inverse1Id], [l1].[OneToMany_Required_Self_Inverse1Id], [l1].[OneToOne_Optional_Self1Id], [l2].[Id] AS [Id0], [l2].[Date] AS [Date0], [l2].[Name] AS [Name0], [l2].[OneToMany_Optional_Self_Inverse1Id] AS [OneToMany_Optional_Self_Inverse1Id0], [l2].[OneToMany_Required_Self_Inverse1Id] AS [OneToMany_Required_Self_Inverse1Id0], [l2].[OneToOne_Optional_Self1Id] AS [OneToOne_Optional_Self1Id0] - FROM [LevelOne] AS [l1] - LEFT JOIN [LevelOne] AS [l2] ON [l1].[OneToOne_Optional_Self1Id] = [l2].[Id] + SELECT [l2].[Id], [l2].[Date], [l2].[Name], [l2].[OneToMany_Optional_Self_Inverse1Id], [l2].[OneToMany_Required_Self_Inverse1Id], [l2].[OneToOne_Optional_Self1Id], [l3].[Id] AS [Id0], [l3].[Date] AS [Date0], [l3].[Name] AS [Name0], [l3].[OneToMany_Optional_Self_Inverse1Id] AS [OneToMany_Optional_Self_Inverse1Id0], [l3].[OneToMany_Required_Self_Inverse1Id] AS [OneToMany_Required_Self_Inverse1Id0], [l3].[OneToOne_Optional_Self1Id] AS [OneToOne_Optional_Self1Id0] + FROM [LevelOne] AS [l2] + LEFT JOIN [LevelOne] AS [l3] ON [l2].[OneToOne_Optional_Self1Id] = [l3].[Id] ) AS [t] ON [l].[Id] = [t].[OneToMany_Optional_Self_Inverse1Id] ORDER BY [l].[Id], [l0].[Id] """); @@ -4358,9 +4358,9 @@ FROM [LevelOne] AS [l] """, // """ -SELECT [l].[Name], [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l].[Id] +SELECT [l].[Name], [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l].[Id] FROM [LevelOne] AS [l] -INNER JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[OneToMany_Required_Inverse2Id] +INNER JOIN [LevelTwo] AS [l1] ON [l].[Id] = [l1].[OneToMany_Required_Inverse2Id] ORDER BY [l].[Name], [l].[Id] """); } @@ -4434,18 +4434,18 @@ ELSE NULL END = N'02' ORDER BY [l].[Id] """, - // - """ -SELECT [l0].[Name], [l].[Id] + // + """ +SELECT [l2].[Name], [l].[Id] FROM [LevelOne] AS [l] -INNER JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] +INNER JOIN [LevelTwo] AS [l2] ON [l].[Id] = [l2].[OneToMany_Optional_Inverse2Id] WHERE CASE WHEN [l].[Id] = 1 THEN N'01' WHEN [l].[Id] = 2 THEN N'02' WHEN [l].[Id] = 3 THEN N'03' ELSE NULL END = N'02' -ORDER BY [l].[Id], [l0].[Id] +ORDER BY [l].[Id], [l2].[Id] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsQuerySqlServerTest.cs index c9467ce49eb..d3829ea641a 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsQuerySqlServerTest.cs @@ -2901,21 +2901,21 @@ public override async Task Include_reference_with_groupby_in_subquery(bool async AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[Id0], [t0].[Date0], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[Id0], [t1].[Date0], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id] FROM ( SELECT [l].[Name] FROM [LevelOne] AS [l] GROUP BY [l].[Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[Id0], [t1].[Date0], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[Id0], [t0].[Date0], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], [l1].[Id] AS [Id0], [l1].[Date] AS [Date0], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [LevelOne] AS [l0] LEFT JOIN [LevelTwo] AS [l1] ON [l0].[Id] = [l1].[Level1_Optional_Id] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] """); } @@ -2925,23 +2925,23 @@ public override async Task Multi_include_with_groupby_in_subquery(bool async) AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[Id0], [t0].[Date0], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t].[Name], [l2].[Id], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Optional_Self_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToMany_Required_Self_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[OneToOne_Optional_Self3Id] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[Id0], [t1].[Date0], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t].[Name], [l2].[Id], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Optional_Self_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToMany_Required_Self_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[OneToOne_Optional_Self3Id] FROM ( SELECT [l].[Name] FROM [LevelOne] AS [l] GROUP BY [l].[Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[Id0], [t1].[Date0], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[Id0], [t0].[Date0], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], [l1].[Id] AS [Id0], [l1].[Date] AS [Date0], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [LevelOne] AS [l0] LEFT JOIN [LevelTwo] AS [l1] ON [l0].[Id] = [l1].[Level1_Optional_Id] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] -LEFT JOIN [LevelThree] AS [l2] ON [t0].[Id0] = [l2].[OneToMany_Optional_Inverse3Id] -ORDER BY [t].[Name], [t0].[Id], [t0].[Id0] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] +LEFT JOIN [LevelThree] AS [l2] ON [t1].[Id0] = [l2].[OneToMany_Optional_Inverse3Id] +ORDER BY [t].[Name], [t1].[Id], [t1].[Id0] """); } @@ -3558,7 +3558,7 @@ public override async Task Member_pushdown_chain_3_levels_deep_entity(bool async AssertSql( """ -SELECT [t0].[c], [t1].[c], [t3].[Id], [t3].[Level3_Optional_Id], [t3].[Level3_Required_Id], [t3].[Name], [t3].[OneToMany_Optional_Inverse4Id], [t3].[OneToMany_Optional_Self_Inverse4Id], [t3].[OneToMany_Required_Inverse4Id], [t3].[OneToMany_Required_Self_Inverse4Id], [t3].[OneToOne_Optional_PK_Inverse4Id], [t3].[OneToOne_Optional_Self4Id] +SELECT [t0].[c], [t2].[c], [t4].[Id], [t4].[Level3_Optional_Id], [t4].[Level3_Required_Id], [t4].[Name], [t4].[OneToMany_Optional_Inverse4Id], [t4].[OneToMany_Optional_Self_Inverse4Id], [t4].[OneToMany_Required_Inverse4Id], [t4].[OneToMany_Required_Self_Inverse4Id], [t4].[OneToOne_Optional_PK_Inverse4Id], [t4].[OneToOne_Optional_Self4Id] FROM [LevelOne] AS [l] LEFT JOIN ( SELECT [t].[c], [t].[Id], [t].[Level1_Optional_Id] @@ -3569,21 +3569,21 @@ FROM [LevelTwo] AS [l0] WHERE [t].[row] <= 1 ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] LEFT JOIN ( - SELECT [t2].[c], [t2].[Id], [t2].[Level2_Required_Id] + SELECT [t1].[c], [t1].[Id], [t1].[Level2_Required_Id] FROM ( SELECT 1 AS [c], [l1].[Id], [l1].[Level2_Required_Id], ROW_NUMBER() OVER(PARTITION BY [l1].[Level2_Required_Id] ORDER BY [l1].[Id]) AS [row] FROM [LevelThree] AS [l1] - ) AS [t2] - WHERE [t2].[row] <= 1 -) AS [t1] ON [t0].[Id] = [t1].[Level2_Required_Id] + ) AS [t1] + WHERE [t1].[row] <= 1 +) AS [t2] ON [t0].[Id] = [t2].[Level2_Required_Id] LEFT JOIN ( - SELECT [t4].[Id], [t4].[Level3_Optional_Id], [t4].[Level3_Required_Id], [t4].[Name], [t4].[OneToMany_Optional_Inverse4Id], [t4].[OneToMany_Optional_Self_Inverse4Id], [t4].[OneToMany_Required_Inverse4Id], [t4].[OneToMany_Required_Self_Inverse4Id], [t4].[OneToOne_Optional_PK_Inverse4Id], [t4].[OneToOne_Optional_Self4Id] + SELECT [t3].[Id], [t3].[Level3_Optional_Id], [t3].[Level3_Required_Id], [t3].[Name], [t3].[OneToMany_Optional_Inverse4Id], [t3].[OneToMany_Optional_Self_Inverse4Id], [t3].[OneToMany_Required_Inverse4Id], [t3].[OneToMany_Required_Self_Inverse4Id], [t3].[OneToOne_Optional_PK_Inverse4Id], [t3].[OneToOne_Optional_Self4Id] FROM ( SELECT [l2].[Id], [l2].[Level3_Optional_Id], [l2].[Level3_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse4Id], [l2].[OneToMany_Optional_Self_Inverse4Id], [l2].[OneToMany_Required_Inverse4Id], [l2].[OneToMany_Required_Self_Inverse4Id], [l2].[OneToOne_Optional_PK_Inverse4Id], [l2].[OneToOne_Optional_Self4Id], ROW_NUMBER() OVER(PARTITION BY [l2].[Level3_Required_Id] ORDER BY [l2].[Id]) AS [row] FROM [LevelFour] AS [l2] - ) AS [t4] - WHERE [t4].[row] <= 1 -) AS [t3] ON [t1].[Id] = [t3].[Level3_Required_Id] + ) AS [t3] + WHERE [t3].[row] <= 1 +) AS [t4] ON [t2].[Id] = [t4].[Level3_Required_Id] ORDER BY [l].[Id] """); } @@ -4752,26 +4752,26 @@ public override async Task Correlated_projection_with_first(bool async) await base.Correlated_projection_with_first(async); AssertSql( -""" + """ SELECT [l].[Id], [t].[Id], [t].[Id0] FROM [LevelOne] AS [l] OUTER APPLY ( - SELECT [l2].[Id], [l0].[Id] AS [Id0] + SELECT [l3].[Id], [l0].[Id] AS [Id0] FROM [LevelThree] AS [l0] - LEFT JOIN [LevelFour] AS [l2] ON [l0].[Id] = [l2].[Level3_Required_Id] + LEFT JOIN [LevelFour] AS [l3] ON [l0].[Id] = [l3].[Level3_Required_Id] WHERE ( SELECT TOP(1) [l1].[Id] FROM [LevelTwo] AS [l1] WHERE [l].[Id] = [l1].[OneToMany_Optional_Inverse2Id] ORDER BY [l1].[Id]) IS NOT NULL AND (( - SELECT TOP(1) [l3].[Id] - FROM [LevelTwo] AS [l3] - WHERE [l].[Id] = [l3].[OneToMany_Optional_Inverse2Id] - ORDER BY [l3].[Id]) = [l0].[OneToMany_Optional_Inverse3Id] OR (( - SELECT TOP(1) [l3].[Id] - FROM [LevelTwo] AS [l3] - WHERE [l].[Id] = [l3].[OneToMany_Optional_Inverse2Id] - ORDER BY [l3].[Id]) IS NULL AND [l0].[OneToMany_Optional_Inverse3Id] IS NULL)) + SELECT TOP(1) [l2].[Id] + FROM [LevelTwo] AS [l2] + WHERE [l].[Id] = [l2].[OneToMany_Optional_Inverse2Id] + ORDER BY [l2].[Id]) = [l0].[OneToMany_Optional_Inverse3Id] OR (( + SELECT TOP(1) [l2].[Id] + FROM [LevelTwo] AS [l2] + WHERE [l].[Id] = [l2].[OneToMany_Optional_Inverse2Id] + ORDER BY [l2].[Id]) IS NULL AND [l0].[OneToMany_Optional_Inverse3Id] IS NULL)) ) AS [t] ORDER BY [l].[Id], [t].[Id0] """); @@ -4811,7 +4811,7 @@ public override async Task Multiple_select_many_in_projection(bool async) await base.Multiple_select_many_in_projection(async); AssertSql( -""" + """ SELECT [l].[Id], [t0].[Id], [t0].[RefId], [t0].[Id0], ( SELECT COUNT(*) FROM [LevelTwo] AS [l3] @@ -4819,15 +4819,15 @@ FROM [LevelTwo] AS [l3] WHERE [l].[Id] = [l3].[OneToMany_Optional_Inverse2Id] AND ([l4].[Name] <> N'' OR [l4].[Name] IS NULL)) FROM [LevelOne] AS [l] OUTER APPLY ( - SELECT [t].[Id0] AS [Id], [l1].[Id] AS [RefId], [t].[Id] AS [Id0] + SELECT [t].[Id0] AS [Id], [l2].[Id] AS [RefId], [t].[Id] AS [Id0] FROM ( - SELECT TOP(12) [l0].[Id], [l2].[Id] AS [Id0] + SELECT TOP(12) [l0].[Id], [l1].[Id] AS [Id0] FROM [LevelTwo] AS [l0] - INNER JOIN [LevelThree] AS [l2] ON [l0].[Id] = [l2].[OneToMany_Optional_Inverse3Id] + INNER JOIN [LevelThree] AS [l1] ON [l0].[Id] = [l1].[OneToMany_Optional_Inverse3Id] WHERE [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] - ORDER BY [l2].[Id] + ORDER BY [l1].[Id] ) AS [t] - LEFT JOIN [LevelFour] AS [l1] ON [t].[Id0] = [l1].[Level3_Optional_Id] + LEFT JOIN [LevelFour] AS [l2] ON [t].[Id0] = [l2].[Level3_Optional_Id] ) AS [t0] ORDER BY [l].[Id], [t0].[Id], [t0].[Id0] """); @@ -4838,19 +4838,19 @@ public override async Task Single_select_many_in_projection_with_take(bool async await base.Single_select_many_in_projection_with_take(async); AssertSql( -""" + """ SELECT [l].[Id], [t0].[Id], [t0].[RefId], [t0].[Id0] FROM [LevelOne] AS [l] OUTER APPLY ( - SELECT [t].[Id0] AS [Id], [l1].[Id] AS [RefId], [t].[Id] AS [Id0] + SELECT [t].[Id0] AS [Id], [l2].[Id] AS [RefId], [t].[Id] AS [Id0] FROM ( - SELECT TOP(12) [l0].[Id], [l2].[Id] AS [Id0] + SELECT TOP(12) [l0].[Id], [l1].[Id] AS [Id0] FROM [LevelTwo] AS [l0] - INNER JOIN [LevelThree] AS [l2] ON [l0].[Id] = [l2].[OneToMany_Optional_Inverse3Id] + INNER JOIN [LevelThree] AS [l1] ON [l0].[Id] = [l1].[OneToMany_Optional_Inverse3Id] WHERE [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] - ORDER BY [l2].[Id] + ORDER BY [l1].[Id] ) AS [t] - LEFT JOIN [LevelFour] AS [l1] ON [t].[Id0] = [l1].[Level3_Optional_Id] + LEFT JOIN [LevelFour] AS [l2] ON [t].[Id0] = [l2].[Level3_Optional_Id] ) AS [t0] ORDER BY [l].[Id], [t0].[Id], [t0].[Id0] """); diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsSharedTypeQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsSharedTypeQuerySqlServerTest.cs index 04cdfbd18f9..e9d07a6c7e8 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsSharedTypeQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsSharedTypeQuerySqlServerTest.cs @@ -205,7 +205,7 @@ public override async Task Nested_group_join_with_take(bool async) """ @__p_0='2' -SELECT [t2].[Level2_Name] +SELECT [t3].[Level2_Name] FROM ( SELECT TOP(@__p_0) [l].[Id], [t0].[Id0] AS [Id00], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Required_Id], [t0].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l] @@ -222,22 +222,22 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] ORDER BY [l].[Id] -) AS [t1] +) AS [t2] LEFT JOIN ( - SELECT [t3].[Level1_Optional_Id], [t3].[Level2_Name] + SELECT [t1].[Level1_Optional_Id], [t1].[Level2_Name] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Optional_Id], [l3].[Level1_Required_Id], [l3].[Level2_Name], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t3] ON [l2].[Id] = CASE - WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] + ) AS [t1] ON [l2].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END - WHERE [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t2] ON CASE - WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id00] -END = [t2].[Level1_Optional_Id] -ORDER BY [t1].[Id] + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL +) AS [t3] ON CASE + WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id00] +END = [t3].[Level1_Optional_Id] +ORDER BY [t2].[Id] """); } @@ -352,7 +352,7 @@ await Assert.ThrowsAsync( SELECT [t2].[l1Name], [t2].[l2Name], [t2].[l3Name] FROM [Level1] AS [l] OUTER APPLY ( - SELECT [t0].[l1Name], [t0].[l2Name], [t0].[l3Name] + SELECT [t1].[l1Name], [t1].[l2Name], [t1].[l3Name] FROM [Level1] AS [l0] LEFT JOIN ( SELECT [l1].[Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Required_Inverse3Id] @@ -364,14 +364,14 @@ WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] WHEN [t].[Level2_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t].[Id] END CROSS APPLY ( - SELECT [l].[Name] AS [l1Name], [t].[Level3_Name] AS [l2Name], [t1].[Level3_Name] AS [l3Name] + SELECT [l].[Name] AS [l1Name], [t].[Level3_Name] AS [l2Name], [t0].[Level3_Name] AS [l3Name] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[Level2_Required_Id], [l3].[Level3_Name], [l3].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l3] WHERE [l3].[Level2_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t1] ON [l2].[OneToOne_Optional_PK_Inverse4Id] = CASE - WHEN [t1].[Level2_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t1].[Id] + ) AS [t0] ON [l2].[OneToOne_Optional_PK_Inverse4Id] = CASE + WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] END WHERE [l2].[Level3_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse4Id] IS NOT NULL AND CASE WHEN [t].[Level2_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t].[Id] @@ -380,7 +380,7 @@ WHEN [t].[Level2_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse3Id END = [l2].[OneToMany_Optional_Inverse4Id] OR (CASE WHEN [t].[Level2_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t].[Id] END IS NULL AND [l2].[OneToMany_Optional_Inverse4Id] IS NULL)) - ) AS [t0] + ) AS [t1] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] ) AS [t2] """); @@ -694,28 +694,28 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] LEFT JOIN ( - SELECT [t3].[Level3_Name] AS [Key], COUNT(*) AS [Count] + SELECT [t2].[Level3_Name] AS [Key], COUNT(*) AS [Count] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l2].[Id] = CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t1] ON [l2].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END LEFT JOIN ( SELECT [l4].[Id], [l4].[Level2_Required_Id], [l4].[Level3_Name], [l4].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l4] WHERE [l4].[Level2_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t3] ON CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t2] ON CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END = CASE - WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] + WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END - WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL - GROUP BY [t3].[Level3_Name] -) AS [t1] ON [l].[Name] = [t1].[Key] -WHERE [t0].[Level2_Name] IS NOT NULL OR [t1].[Count] > 0 + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL + GROUP BY [t2].[Level3_Name] +) AS [t3] ON [l].[Name] = [t3].[Key] +WHERE [t0].[Level2_Name] IS NOT NULL OR [t3].[Count] > 0 """); } @@ -817,7 +817,7 @@ public override async Task Composite_key_join_on_groupby_aggregate_projecting_on AssertSql( """ -SELECT [t1].[Key] +SELECT [t4].[Key] FROM [Level1] AS [l] INNER JOIN ( SELECT [t0].[Key], ( @@ -825,44 +825,44 @@ SELECT COALESCE(SUM(CASE WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] END), 0) FROM ( - SELECT [l1].[Id], CASE - WHEN [t4].[OneToOne_Required_PK_Date] IS NOT NULL AND [t4].[Level1_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t4].[Id] + SELECT [l2].[Id], CASE + WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] END % 3 AS [Key] - FROM [Level1] AS [l1] + FROM [Level1] AS [l2] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l2] - WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t4] ON [l1].[Id] = CASE - WHEN [t4].[OneToOne_Required_PK_Date] IS NOT NULL AND [t4].[Level1_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t4].[Id] + SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l3] + WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL + ) AS [t2] ON [l2].[Id] = CASE + WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] END - WHERE [t4].[OneToOne_Required_PK_Date] IS NOT NULL AND [t4].[Level1_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] + WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL + ) AS [t1] LEFT JOIN ( - SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l3] - WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t3] ON [t2].[Id] = CASE + SELECT [l4].[Id], [l4].[OneToOne_Required_PK_Date], [l4].[Level1_Required_Id], [l4].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l4] + WHERE [l4].[OneToOne_Required_PK_Date] IS NOT NULL AND [l4].[Level1_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse2Id] IS NOT NULL + ) AS [t3] ON [t1].[Id] = CASE WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] END - WHERE [t0].[Key] = [t2].[Key] OR ([t0].[Key] IS NULL AND [t2].[Key] IS NULL)) AS [Sum] + WHERE [t0].[Key] = [t1].[Key] OR ([t0].[Key] IS NULL AND [t1].[Key] IS NULL)) AS [Sum] FROM ( SELECT CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END % 3 AS [Key] FROM [Level1] AS [l0] LEFT JOIN ( - SELECT [l4].[Id], [l4].[OneToOne_Required_PK_Date], [l4].[Level1_Required_Id], [l4].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l4] - WHERE [l4].[OneToOne_Required_PK_Date] IS NOT NULL AND [l4].[Level1_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Required_Id], [l1].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l1] + WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l0].[Id] = CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] GROUP BY [t0].[Key] -) AS [t1] ON [l].[Id] = [t1].[Key] AND CAST(1 AS bit) = CASE - WHEN [t1].[Sum] > 10 THEN CAST(1 AS bit) +) AS [t4] ON [l].[Id] = [t4].[Key] AND CAST(1 AS bit) = CASE + WHEN [t4].[Sum] > 10 THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END """); @@ -952,7 +952,7 @@ public override async Task Including_reference_navigation_and_projecting_collect AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id] +SELECT [l].[Id], [l].[Date], [l].[Name], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id] @@ -965,16 +965,16 @@ FROM [Level1] AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[OneToMany_Required_Inverse2Id] LEFT JOIN ( - SELECT [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] + SELECT [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id] FROM ( SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], ROW_NUMBER() OVER(PARTITION BY [l2].[OneToMany_Required_Inverse2Id] ORDER BY CASE WHEN [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l2].[Id] END DESC) AS [row] FROM [Level1] AS [l2] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] - WHERE [t2].[row] <= 1 -) AS [t1] ON [l].[Id] = [t1].[OneToMany_Required_Inverse2Id] + ) AS [t1] + WHERE [t1].[row] <= 1 +) AS [t2] ON [l].[Id] = [t2].[OneToMany_Required_Inverse2Id] ORDER BY [l].[Id], [t].[Id] """); } @@ -1000,17 +1000,17 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] UNION ALL -SELECT [l3].[Id] +SELECT [l4].[Id] FROM [Level1] AS [l2] LEFT JOIN ( - SELECT [l4].[Id], [l4].[OneToOne_Required_PK_Date], [l4].[Level1_Optional_Id], [l4].[Level1_Required_Id], [l4].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l4] - WHERE [l4].[OneToOne_Required_PK_Date] IS NOT NULL AND [l4].[Level1_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t2] ON [l2].[Id] = CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Optional_Id], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l3] + WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL +) AS [t1] ON [l2].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END -LEFT JOIN [Level1] AS [l3] ON [t2].[Level1_Optional_Id] = [l3].[Id] -WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [l3].[Id] IS NULL +LEFT JOIN [Level1] AS [l4] ON [t1].[Level1_Optional_Id] = [l4].[Id] +WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [l4].[Id] IS NULL """); } @@ -1157,63 +1157,63 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Level1_Required_Id] INNER JOIN ( - SELECT [t3].[Id] AS [Id1], [t3].[Level2_Required_Id], [t3].[OneToMany_Required_Inverse3Id] + SELECT [t2].[Id] AS [Id1], [t2].[Level2_Required_Id], [t2].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l2].[Id] = CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t1] ON [l2].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END LEFT JOIN ( SELECT [l4].[Id], [l4].[Level2_Required_Id], [l4].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l4] WHERE [l4].[Level2_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t3] ON CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t2] ON CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END = CASE - WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] + WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END - WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t1] ON CASE + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL +) AS [t3] ON CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] -END = [t1].[Level2_Required_Id] +END = [t3].[Level2_Required_Id] INNER JOIN ( - SELECT [t7].[Level3_Required_Id], [t7].[Level4_Name] + SELECT [t6].[Level3_Required_Id], [t6].[Level4_Name] FROM [Level1] AS [l5] LEFT JOIN ( SELECT [l6].[Id], [l6].[OneToOne_Required_PK_Date], [l6].[Level1_Required_Id], [l6].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l6] WHERE [l6].[OneToOne_Required_PK_Date] IS NOT NULL AND [l6].[Level1_Required_Id] IS NOT NULL AND [l6].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t5] ON [l5].[Id] = CASE - WHEN [t5].[OneToOne_Required_PK_Date] IS NOT NULL AND [t5].[Level1_Required_Id] IS NOT NULL AND [t5].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t5].[Id] + ) AS [t4] ON [l5].[Id] = CASE + WHEN [t4].[OneToOne_Required_PK_Date] IS NOT NULL AND [t4].[Level1_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t4].[Id] END LEFT JOIN ( SELECT [l7].[Id], [l7].[Level2_Required_Id], [l7].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l7] WHERE [l7].[Level2_Required_Id] IS NOT NULL AND [l7].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t6] ON CASE - WHEN [t5].[OneToOne_Required_PK_Date] IS NOT NULL AND [t5].[Level1_Required_Id] IS NOT NULL AND [t5].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t5].[Id] + ) AS [t5] ON CASE + WHEN [t4].[OneToOne_Required_PK_Date] IS NOT NULL AND [t4].[Level1_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t4].[Id] END = CASE - WHEN [t6].[Level2_Required_Id] IS NOT NULL AND [t6].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t6].[Id] + WHEN [t5].[Level2_Required_Id] IS NOT NULL AND [t5].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t5].[Id] END LEFT JOIN ( SELECT [l8].[Id], [l8].[Level3_Required_Id], [l8].[Level4_Name], [l8].[OneToMany_Required_Inverse4Id] FROM [Level1] AS [l8] WHERE [l8].[Level3_Required_Id] IS NOT NULL AND [l8].[OneToMany_Required_Inverse4Id] IS NOT NULL - ) AS [t7] ON CASE - WHEN [t6].[Level2_Required_Id] IS NOT NULL AND [t6].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t6].[Id] + ) AS [t6] ON CASE + WHEN [t5].[Level2_Required_Id] IS NOT NULL AND [t5].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t5].[Id] END = CASE - WHEN [t7].[Level3_Required_Id] IS NOT NULL AND [t7].[OneToMany_Required_Inverse4Id] IS NOT NULL THEN [t7].[Id] + WHEN [t6].[Level3_Required_Id] IS NOT NULL AND [t6].[OneToMany_Required_Inverse4Id] IS NOT NULL THEN [t6].[Id] END - WHERE [t5].[OneToOne_Required_PK_Date] IS NOT NULL AND [t5].[Level1_Required_Id] IS NOT NULL AND [t5].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t6].[Level2_Required_Id] IS NOT NULL AND [t6].[OneToMany_Required_Inverse3Id] IS NOT NULL AND [t7].[Level3_Required_Id] IS NOT NULL AND [t7].[OneToMany_Required_Inverse4Id] IS NOT NULL -) AS [t4] ON CASE - WHEN [t1].[Level2_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t1].[Id1] -END = [t4].[Level3_Required_Id] + WHERE [t4].[OneToOne_Required_PK_Date] IS NOT NULL AND [t4].[Level1_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t5].[Level2_Required_Id] IS NOT NULL AND [t5].[OneToMany_Required_Inverse3Id] IS NOT NULL AND [t6].[Level3_Required_Id] IS NOT NULL AND [t6].[OneToMany_Required_Inverse4Id] IS NOT NULL +) AS [t7] ON CASE + WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id1] +END = [t7].[Level3_Required_Id] LEFT JOIN [Level1] AS [l9] ON CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] -END >= [l9].[Id] AND ([t4].[Level4_Name] = [l9].[Name] OR ([t4].[Level4_Name] IS NULL AND [l9].[Name] IS NULL)) +END >= [l9].[Id] AND ([t7].[Level4_Name] = [l9].[Name] OR ([t7].[Level4_Name] IS NULL AND [l9].[Name] IS NULL)) """); } @@ -1481,7 +1481,7 @@ public override async Task Projecting_columns_with_same_name_from_different_enti SELECT DISTINCT TOP(@__p_0) [l].[Id] AS [Id1], CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] END AS [Id2], CASE - WHEN [t1].[Level2_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t1].[Id1] + WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id1] END AS [Id3], [l].[Name] AS [Name1], [t0].[Level2_Name] AS [Name2] FROM [Level1] AS [l] INNER JOIN ( @@ -1497,28 +1497,28 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] INNER JOIN ( - SELECT [t3].[Id] AS [Id1], [t3].[Level2_Optional_Id], [t3].[Level2_Required_Id], [t3].[OneToMany_Required_Inverse3Id] + SELECT [t2].[Id] AS [Id1], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l2].[Id] = CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t1] ON [l2].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END LEFT JOIN ( SELECT [l4].[Id], [l4].[Level2_Optional_Id], [l4].[Level2_Required_Id], [l4].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l4] WHERE [l4].[Level2_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t3] ON CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t2] ON CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END = CASE - WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] + WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END - WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t1] ON CASE + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL + ) AS [t3] ON CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] - END = [t1].[Level2_Optional_Id] + END = [t3].[Level2_Optional_Id] ) AS [t4] """); } @@ -1644,7 +1644,7 @@ public override async Task Null_reference_protection_complex_materialization(boo AssertSql( """ -SELECT [t1].[Id00], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id] +SELECT [t3].[Id00], [t3].[OneToOne_Required_PK_Date], [t3].[Level1_Optional_Id], [t3].[Level1_Required_Id], [t3].[Level2_Name], [t3].[OneToMany_Optional_Inverse2Id], [t3].[OneToMany_Required_Inverse2Id], [t3].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id] @@ -1666,19 +1666,19 @@ LEFT JOIN ( SELECT [t2].[Id0] AS [Id00], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l2] LEFT JOIN ( - SELECT [t3].[Id] AS [Id0], [t3].[OneToOne_Required_PK_Date], [t3].[Level1_Optional_Id], [t3].[Level1_Required_Id], [t3].[Level2_Name], [t3].[OneToMany_Optional_Inverse2Id], [t3].[OneToMany_Required_Inverse2Id], [t3].[OneToOne_Optional_PK_Inverse2Id] + SELECT [t1].[Id] AS [Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l3] LEFT JOIN ( SELECT [l4].[Id], [l4].[OneToOne_Required_PK_Date], [l4].[Level1_Optional_Id], [l4].[Level1_Required_Id], [l4].[Level2_Name], [l4].[OneToMany_Optional_Inverse2Id], [l4].[OneToMany_Required_Inverse2Id], [l4].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l4] WHERE [l4].[OneToOne_Required_PK_Date] IS NOT NULL AND [l4].[Level1_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t3] ON [l3].[Id] = CASE - WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] + ) AS [t1] ON [l3].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END - WHERE [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t2] ON [l2].[Id] = [t2].[Level1_Optional_Id] -) AS [t1] ON [t0].[Level2_Required_Id] = CASE - WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id00] +) AS [t3] ON [t0].[Level2_Required_Id] = CASE + WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id00] END WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL """); @@ -1691,7 +1691,7 @@ public override async Task SelectMany_with_nested_navigations_explicit_DefaultIf AssertSql( """ -SELECT [t1].[Id], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t2].[Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] +SELECT [t1].[Id], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t3].[Id0], [t3].[OneToOne_Required_PK_Date], [t3].[Level1_Optional_Id], [t3].[Level1_Required_Id], [t3].[Level2_Name], [t3].[OneToMany_Optional_Inverse2Id], [t3].[OneToMany_Required_Inverse2Id], [t3].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id] @@ -1713,20 +1713,20 @@ WHERE [l2].[Level3_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] END = [t1].[OneToMany_Required_Inverse4Id] LEFT JOIN ( - SELECT [t3].[Id] AS [Id0], [t3].[OneToOne_Required_PK_Date], [t3].[Level1_Optional_Id], [t3].[Level1_Required_Id], [t3].[Level2_Name], [t3].[OneToMany_Optional_Inverse2Id], [t3].[OneToMany_Required_Inverse2Id], [t3].[OneToOne_Optional_PK_Inverse2Id] + SELECT [t2].[Id] AS [Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l3] LEFT JOIN ( SELECT [l4].[Id], [l4].[OneToOne_Required_PK_Date], [l4].[Level1_Optional_Id], [l4].[Level1_Required_Id], [l4].[Level2_Name], [l4].[OneToMany_Optional_Inverse2Id], [l4].[OneToMany_Required_Inverse2Id], [l4].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l4] WHERE [l4].[OneToOne_Required_PK_Date] IS NOT NULL AND [l4].[Level1_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t3] ON [l3].[Id] = CASE - WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] + ) AS [t2] ON [l3].[Id] = CASE + WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] END - WHERE [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t2] ON CASE + WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL +) AS [t3] ON CASE WHEN [t1].[Level3_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse4Id] IS NOT NULL THEN [t1].[Id] END = CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id0] + WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id0] END """); } @@ -1737,7 +1737,7 @@ public override async Task Select_join_with_key_selector_being_a_subquery(bool a AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [t0].[Id0], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id] +SELECT [l].[Id], [l].[Date], [l].[Name], [t1].[Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l] INNER JOIN ( SELECT [t].[Id] AS [Id0], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id] @@ -1750,21 +1750,21 @@ WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t0] ON [l].[Id] = COALESCE(( +) AS [t1] ON [l].[Id] = COALESCE(( SELECT TOP(1) CASE - WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] + WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t1] ON [l2].[Id] = CASE - WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] + ) AS [t0] ON [l2].[Id] = CASE + WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END - WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL + WHERE [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL ORDER BY CASE - WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] + WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END), 0) """); } @@ -1807,7 +1807,7 @@ public override async Task Null_reference_protection_complex(bool async) AssertSql( """ -SELECT [t1].[Level2_Name] +SELECT [t3].[Level2_Name] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id] @@ -1829,19 +1829,19 @@ LEFT JOIN ( SELECT [t2].[Id0] AS [Id00], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l2] LEFT JOIN ( - SELECT [t3].[Id] AS [Id0], [t3].[OneToOne_Required_PK_Date], [t3].[Level1_Optional_Id], [t3].[Level1_Required_Id], [t3].[Level2_Name], [t3].[OneToMany_Required_Inverse2Id] + SELECT [t1].[Id] AS [Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] LEFT JOIN ( SELECT [l4].[Id], [l4].[OneToOne_Required_PK_Date], [l4].[Level1_Optional_Id], [l4].[Level1_Required_Id], [l4].[Level2_Name], [l4].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l4] WHERE [l4].[OneToOne_Required_PK_Date] IS NOT NULL AND [l4].[Level1_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t3] ON [l3].[Id] = CASE - WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] + ) AS [t1] ON [l3].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END - WHERE [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t2] ON [l2].[Id] = [t2].[Level1_Optional_Id] -) AS [t1] ON [t0].[Level2_Required_Id] = CASE - WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id00] +) AS [t3] ON [t0].[Level2_Required_Id] = CASE + WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id00] END WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL """); @@ -1885,7 +1885,7 @@ public override async Task Null_reference_protection_complex_client_eval(bool as AssertSql( """ -SELECT [t1].[Level2_Name] +SELECT [t3].[Level2_Name] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id] @@ -1907,19 +1907,19 @@ LEFT JOIN ( SELECT [t2].[Id0] AS [Id00], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l2] LEFT JOIN ( - SELECT [t3].[Id] AS [Id0], [t3].[OneToOne_Required_PK_Date], [t3].[Level1_Optional_Id], [t3].[Level1_Required_Id], [t3].[Level2_Name], [t3].[OneToMany_Required_Inverse2Id] + SELECT [t1].[Id] AS [Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] LEFT JOIN ( SELECT [l4].[Id], [l4].[OneToOne_Required_PK_Date], [l4].[Level1_Optional_Id], [l4].[Level1_Required_Id], [l4].[Level2_Name], [l4].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l4] WHERE [l4].[OneToOne_Required_PK_Date] IS NOT NULL AND [l4].[Level1_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t3] ON [l3].[Id] = CASE - WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] + ) AS [t1] ON [l3].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END - WHERE [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t2] ON [l2].[Id] = [t2].[Level1_Optional_Id] -) AS [t1] ON [t0].[Level2_Required_Id] = CASE - WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id00] +) AS [t3] ON [t0].[Level2_Required_Id] = CASE + WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id00] END WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL """); @@ -1990,13 +1990,13 @@ LEFT JOIN ( SELECT [t].[Id] AS [Id0], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l0] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l2] - WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l1] + WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l0].[Id] = CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END - INNER JOIN [Level1] AS [l1] ON [t].[Level1_Required_Id] = [l1].[Id] + INNER JOIN [Level1] AS [l2] ON [t].[Level1_Required_Id] = [l2].[Id] WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] """); @@ -2033,17 +2033,17 @@ public override async Task Required_navigation_on_a_subquery_with_complex_projec AssertSql( """ SELECT ( - SELECT TOP(1) [l3].[Name] + SELECT TOP(1) [l4].[Name] FROM [Level1] AS [l1] LEFT JOIN ( - SELECT [l4].[Id], [l4].[OneToOne_Required_PK_Date], [l4].[Level1_Required_Id], [l4].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l4] - WHERE [l4].[OneToOne_Required_PK_Date] IS NOT NULL AND [l4].[Level1_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l2] + WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l1].[Id] = CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END - INNER JOIN [Level1] AS [l2] ON [t0].[Level1_Required_Id] = [l2].[Id] - LEFT JOIN [Level1] AS [l3] ON [t0].[Level1_Required_Id] = [l3].[Id] + INNER JOIN [Level1] AS [l3] ON [t0].[Level1_Required_Id] = [l3].[Id] + LEFT JOIN [Level1] AS [l4] ON [t0].[Level1_Required_Id] = [l4].[Id] WHERE [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL ORDER BY CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] @@ -2069,7 +2069,7 @@ public override async Task SelectMany_with_nested_navigations_explicit_DefaultIf AssertSql( """ -SELECT [t1].[Id], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t2].[Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] +SELECT [t1].[Id], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t3].[Id0], [t3].[OneToOne_Required_PK_Date], [t3].[Level1_Optional_Id], [t3].[Level1_Required_Id], [t3].[Level2_Name], [t3].[OneToMany_Optional_Inverse2Id], [t3].[OneToMany_Required_Inverse2Id], [t3].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id] @@ -2091,20 +2091,20 @@ WHERE [l2].[Level3_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] END = [t1].[OneToMany_Required_Inverse4Id] INNER JOIN ( - SELECT [t3].[Id] AS [Id0], [t3].[OneToOne_Required_PK_Date], [t3].[Level1_Optional_Id], [t3].[Level1_Required_Id], [t3].[Level2_Name], [t3].[OneToMany_Optional_Inverse2Id], [t3].[OneToMany_Required_Inverse2Id], [t3].[OneToOne_Optional_PK_Inverse2Id] + SELECT [t2].[Id] AS [Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l3] LEFT JOIN ( SELECT [l4].[Id], [l4].[OneToOne_Required_PK_Date], [l4].[Level1_Optional_Id], [l4].[Level1_Required_Id], [l4].[Level2_Name], [l4].[OneToMany_Optional_Inverse2Id], [l4].[OneToMany_Required_Inverse2Id], [l4].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l4] WHERE [l4].[OneToOne_Required_PK_Date] IS NOT NULL AND [l4].[Level1_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t3] ON [l3].[Id] = CASE - WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] + ) AS [t2] ON [l3].[Id] = CASE + WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] END - WHERE [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t2] ON CASE + WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL +) AS [t3] ON CASE WHEN [t1].[Level3_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse4Id] IS NOT NULL THEN [t1].[Id] END = CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id0] + WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id0] END """); } @@ -2127,30 +2127,30 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END = 7 AND (( - SELECT TOP(1) [l2].[Name] + SELECT TOP(1) [l3].[Name] FROM [Level1] AS [l1] LEFT JOIN ( - SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l3] - WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l2] + WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l1].[Id] = CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END - LEFT JOIN [Level1] AS [l2] ON [t0].[Level1_Required_Id] = [l2].[Id] + LEFT JOIN [Level1] AS [l3] ON [t0].[Level1_Required_Id] = [l3].[Id] WHERE [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL ORDER BY CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END) = N'L1 10' OR ( - SELECT TOP(1) [l5].[Name] + SELECT TOP(1) [l6].[Name] FROM [Level1] AS [l4] LEFT JOIN ( - SELECT [l6].[Id], [l6].[OneToOne_Required_PK_Date], [l6].[Level1_Required_Id], [l6].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l6] - WHERE [l6].[OneToOne_Required_PK_Date] IS NOT NULL AND [l6].[Level1_Required_Id] IS NOT NULL AND [l6].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l5].[Id], [l5].[OneToOne_Required_PK_Date], [l5].[Level1_Required_Id], [l5].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l5] + WHERE [l5].[OneToOne_Required_PK_Date] IS NOT NULL AND [l5].[Level1_Required_Id] IS NOT NULL AND [l5].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t1] ON [l4].[Id] = CASE WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END - LEFT JOIN [Level1] AS [l5] ON [t1].[Level1_Required_Id] = [l5].[Id] + LEFT JOIN [Level1] AS [l6] ON [t1].[Level1_Required_Id] = [l6].[Id] WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL ORDER BY CASE WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] @@ -2229,7 +2229,7 @@ public override async Task Optional_navigation_propagates_nullability_to_manuall SELECT CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END AS [Id1], CASE - WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id0] END AS [Id2] FROM [Level1] AS [l] LEFT JOIN ( @@ -2238,18 +2238,18 @@ FROM [Level1] AS [l0] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l].[Id] = [t].[Level1_Optional_Id] LEFT JOIN ( - SELECT [t1].[Id] AS [Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Required_Id], [t1].[OneToMany_Required_Inverse2Id] + SELECT [t0].[Id] AS [Id0], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Required_Id], [t0].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l1] LEFT JOIN ( SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l2] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t1] ON [l1].[Id] = CASE - WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] + ) AS [t0] ON [l1].[Id] = CASE + WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END - WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t0] ON [t].[Level1_Required_Id] = CASE - WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] + WHERE [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL +) AS [t1] ON [t].[Level1_Required_Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id0] END """); } @@ -2352,16 +2352,16 @@ public override async Task Required_navigation_on_a_subquery_with_First_in_proje AssertSql( """ SELECT ( - SELECT TOP(1) [l2].[Name] + SELECT TOP(1) [l3].[Name] FROM [Level1] AS [l1] LEFT JOIN ( - SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l3] - WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l2] + WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l1].[Id] = CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END - LEFT JOIN [Level1] AS [l2] ON [t0].[Level1_Required_Id] = [l2].[Id] + LEFT JOIN [Level1] AS [l3] ON [t0].[Level1_Required_Id] = [l3].[Id] WHERE [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL ORDER BY CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] @@ -2394,13 +2394,13 @@ LEFT JOIN ( SELECT [t].[Id] AS [Id0], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l0] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l2] - WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l1] + WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l0].[Id] = CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END - INNER JOIN [Level1] AS [l1] ON [t].[Level1_Required_Id] = [l1].[Id] + INNER JOIN [Level1] AS [l2] ON [t].[Level1_Required_Id] = [l2].[Id] WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] """); @@ -2420,13 +2420,13 @@ LEFT JOIN ( SELECT [t].[Id] AS [Id0], [t].[OneToOne_Required_PK_Date], [t].[Level1_Required_Id], [t].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l0] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l2] - WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Required_Id], [l1].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l1] + WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l0].[Id] = CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END - LEFT JOIN [Level1] AS [l1] ON [t].[Level1_Required_Id] = [l1].[Id] + LEFT JOIN [Level1] AS [l2] ON [t].[Level1_Required_Id] = [l2].[Id] WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Level1_Required_Id] """); @@ -2517,7 +2517,7 @@ public override async Task Optional_navigation_propagates_nullability_to_manuall AssertSql( """ -SELECT [t0].[Level3_Name] AS [Name1], [t1].[Level2_Name] AS [Name2] +SELECT [t0].[Level3_Name] AS [Name1], [t2].[Level2_Name] AS [Name2] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id] @@ -2536,15 +2536,15 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] END LEFT JOIN ( - SELECT [t2].[Id] AS [Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Required_Inverse2Id] + SELECT [t1].[Id] AS [Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Optional_Id], [l3].[Level1_Required_Id], [l3].[Level2_Name], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l2].[Id] = [t2].[Level1_Optional_Id] -) AS [t1] ON [t0].[Level2_Required_Id] = CASE - WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id0] + ) AS [t1] ON [l2].[Id] = [t1].[Level1_Optional_Id] +) AS [t2] ON [t0].[Level2_Required_Id] = CASE + WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id0] END WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL """); @@ -2558,7 +2558,7 @@ public override async Task GroupJoin_on_a_subquery_containing_another_GroupJoin_ """ @__p_0='2' -SELECT [t2].[Level2_Name] +SELECT [t3].[Level2_Name] FROM ( SELECT TOP(@__p_0) [l].[Id] FROM [Level1] AS [l] @@ -2575,20 +2575,20 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] ORDER BY [l].[Id] -) AS [t1] +) AS [t2] LEFT JOIN ( - SELECT [t3].[Level1_Optional_Id], [t3].[Level2_Name] + SELECT [t1].[Level1_Optional_Id], [t1].[Level2_Name] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Optional_Id], [l3].[Level1_Required_Id], [l3].[Level2_Name], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t3] ON [l2].[Id] = CASE - WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] + ) AS [t1] ON [l2].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END - WHERE [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t2] ON [t1].[Id] = [t2].[Level1_Optional_Id] -ORDER BY [t1].[Id] + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL +) AS [t3] ON [t2].[Id] = [t3].[Level1_Optional_Id] +ORDER BY [t2].[Id] """); } @@ -2624,7 +2624,7 @@ public override async Task Join_navigation_non_key_join(bool async) """ SELECT CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] -END AS [Id2], [t].[Level2_Name] AS [Name2], [t0].[Id] AS [Id1], [t0].[Name] AS [Name1] +END AS [Id2], [t].[Level2_Name] AS [Name2], [t1].[Id] AS [Id1], [t1].[Name] AS [Name1] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Required_Inverse2Id] @@ -2634,14 +2634,14 @@ WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END INNER JOIN ( - SELECT [l1].[Id], [l1].[Name], [t1].[Level2_Name] + SELECT [l1].[Id], [l1].[Name], [t0].[Level2_Name] FROM [Level1] AS [l1] LEFT JOIN ( SELECT [l2].[Level1_Optional_Id], [l2].[Level2_Name] FROM [Level1] AS [l2] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t1] ON [l1].[Id] = [t1].[Level1_Optional_Id] -) AS [t0] ON [t].[Level2_Name] = [t0].[Level2_Name] + ) AS [t0] ON [l1].[Id] = [t0].[Level1_Optional_Id] +) AS [t1] ON [t].[Level2_Name] = [t1].[Level2_Name] WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL """); } @@ -2785,7 +2785,7 @@ public override async Task Join_navigation_nested(bool async) """ SELECT CASE WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] -END AS [Id3], [t1].[Id] AS [Id1] +END AS [Id3], [t3].[Id] AS [Id1] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id] @@ -2804,24 +2804,24 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] END INNER JOIN ( - SELECT [l2].[Id], [t3].[Id] AS [Id1], [t3].[Level2_Required_Id], [t3].[OneToMany_Required_Inverse3Id] + SELECT [l2].[Id], [t2].[Id] AS [Id1], [t2].[Level2_Required_Id], [t2].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l2].[Id] = [t2].[Level1_Required_Id] + ) AS [t1] ON [l2].[Id] = [t1].[Level1_Required_Id] LEFT JOIN ( SELECT [l4].[Id], [l4].[Level2_Optional_Id], [l4].[Level2_Required_Id], [l4].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l4] WHERE [l4].[Level2_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t3] ON CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] - END = [t3].[Level2_Optional_Id] -) AS [t1] ON CASE + ) AS [t2] ON CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] + END = [t2].[Level2_Optional_Id] +) AS [t3] ON CASE WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] END = CASE - WHEN [t1].[Level2_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t1].[Id1] + WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id1] END WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL """); @@ -2871,7 +2871,7 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS END INNER JOIN [Level1] AS [l1] ON [t].[Level1_Required_Id] = [l1].[Id] INNER JOIN ( - SELECT [t2].[Level2_Required_Id] + SELECT [t1].[Level2_Required_Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] @@ -2884,13 +2884,13 @@ LEFT JOIN ( SELECT [l4].[Id], [l4].[Level2_Required_Id], [l4].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l4] WHERE [l4].[Level2_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE + ) AS [t1] ON CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END = CASE - WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] + WHEN [t1].[Level2_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t1].[Id] END - WHERE [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t1] ON [l1].[Id] = [t1].[Level2_Required_Id] + WHERE [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t1].[Level2_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse3Id] IS NOT NULL +) AS [t2] ON [l1].[Id] = [t2].[Level2_Required_Id] WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ORDER BY [l1].[Id] """); @@ -3113,16 +3113,16 @@ WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] END AS [Id2] FROM [Level1] AS [l] INNER JOIN ( - SELECT [t].[Id] AS [Id0], [t].[OneToOne_Required_PK_Date], [t].[Level1_Required_Id], [t].[OneToMany_Required_Inverse2Id], [l1].[Id] AS [Id1] + SELECT [t].[Id] AS [Id0], [t].[OneToOne_Required_PK_Date], [t].[Level1_Required_Id], [t].[OneToMany_Required_Inverse2Id], [l2].[Id] AS [Id1] FROM [Level1] AS [l0] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l2] - WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l1] + WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l0].[Id] = CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END - LEFT JOIN [Level1] AS [l1] ON [t].[Level1_Optional_Id] = [l1].[Id] + LEFT JOIN [Level1] AS [l2] ON [t].[Level1_Optional_Id] = [l2].[Id] WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Id1] """); @@ -3298,7 +3298,7 @@ public override async Task Join_navigation_in_inner_selector(bool async) """ SELECT CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] -END AS [Id2], [t0].[Id] AS [Id1] +END AS [Id2], [t1].[Id] AS [Id1] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id] @@ -3308,17 +3308,17 @@ WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END INNER JOIN ( - SELECT [l1].[Id], [t1].[Id] AS [Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Required_Id], [t1].[OneToMany_Required_Inverse2Id] + SELECT [l1].[Id], [t0].[Id] AS [Id0], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Required_Id], [t0].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l1] LEFT JOIN ( SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l2] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t1] ON [l1].[Id] = [t1].[Level1_Optional_Id] -) AS [t0] ON CASE + ) AS [t0] ON [l1].[Id] = [t0].[Level1_Optional_Id] +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END = CASE - WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id0] END WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL """); @@ -3445,7 +3445,7 @@ public override async Task Join_navigation_in_outer_selector_translated_to_extra AssertSql( """ SELECT [l].[Id] AS [Id1], CASE - WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id0] END AS [Id2] FROM [Level1] AS [l] LEFT JOIN ( @@ -3454,20 +3454,20 @@ FROM [Level1] AS [l0] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l].[Id] = [t].[Level1_Optional_Id] INNER JOIN ( - SELECT [t1].[Id] AS [Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Required_Id], [t1].[OneToMany_Required_Inverse2Id] + SELECT [t0].[Id] AS [Id0], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Required_Id], [t0].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l1] LEFT JOIN ( SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l2] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t1] ON [l1].[Id] = CASE - WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] + ) AS [t0] ON [l1].[Id] = CASE + WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END - WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t0] ON CASE + WHERE [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END = CASE - WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id0] END """); } @@ -3747,7 +3747,7 @@ public override async Task Join_navigation_nested2(bool async) """ SELECT CASE WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] -END AS [Id3], [t1].[Id] AS [Id1] +END AS [Id3], [t3].[Id] AS [Id1] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id] @@ -3766,24 +3766,24 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] END INNER JOIN ( - SELECT [l2].[Id], [t3].[Id] AS [Id1], [t3].[Level2_Required_Id], [t3].[OneToMany_Required_Inverse3Id] + SELECT [l2].[Id], [t2].[Id] AS [Id1], [t2].[Level2_Required_Id], [t2].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l2].[Id] = [t2].[Level1_Required_Id] + ) AS [t1] ON [l2].[Id] = [t1].[Level1_Required_Id] LEFT JOIN ( SELECT [l4].[Id], [l4].[Level2_Optional_Id], [l4].[Level2_Required_Id], [l4].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l4] WHERE [l4].[Level2_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t3] ON CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] - END = [t3].[Level2_Optional_Id] -) AS [t1] ON CASE + ) AS [t2] ON CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] + END = [t2].[Level2_Optional_Id] +) AS [t3] ON CASE WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] END = CASE - WHEN [t1].[Level2_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t1].[Id1] + WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id1] END WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL """); @@ -3854,7 +3854,7 @@ public override async Task Join_with_orderby_on_inner_sequence_navigation_non_ke """ SELECT CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] -END AS [Id2], [t].[Level2_Name] AS [Name2], [t0].[Id] AS [Id1], [t0].[Name] AS [Name1] +END AS [Id2], [t].[Level2_Name] AS [Name2], [t1].[Id] AS [Id1], [t1].[Name] AS [Name1] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Required_Inverse2Id] @@ -3864,14 +3864,14 @@ WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END INNER JOIN ( - SELECT [l1].[Id], [l1].[Name], [t1].[Level2_Name] + SELECT [l1].[Id], [l1].[Name], [t0].[Level2_Name] FROM [Level1] AS [l1] LEFT JOIN ( SELECT [l2].[Level1_Optional_Id], [l2].[Level2_Name] FROM [Level1] AS [l2] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t1] ON [l1].[Id] = [t1].[Level1_Optional_Id] -) AS [t0] ON [t].[Level2_Name] = [t0].[Level2_Name] + ) AS [t0] ON [l1].[Id] = [t0].[Level1_Optional_Id] +) AS [t1] ON [t].[Level2_Name] = [t1].[Level2_Name] WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL """); } @@ -3887,16 +3887,16 @@ WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] END AS [Id2] FROM [Level1] AS [l] INNER JOIN ( - SELECT [t].[Id] AS [Id0], [t].[OneToOne_Required_PK_Date], [t].[Level1_Required_Id], [t].[OneToMany_Required_Inverse2Id], [l1].[Id] AS [Id1] + SELECT [t].[Id] AS [Id0], [t].[OneToOne_Required_PK_Date], [t].[Level1_Required_Id], [t].[OneToMany_Required_Inverse2Id], [l2].[Id] AS [Id1] FROM [Level1] AS [l0] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l2] - WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l1] + WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l0].[Id] = CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END - LEFT JOIN [Level1] AS [l1] ON [t].[Level1_Optional_Id] = [l1].[Id] + LEFT JOIN [Level1] AS [l2] ON [t].[Level1_Optional_Id] = [l2].[Id] WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Id1] WHERE EXISTS ( @@ -4825,7 +4825,7 @@ public override async Task GroupJoin_on_right_side_being_a_subquery(bool async) SELECT CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] -END AS [Id], [t0].[Name] +END AS [Id], [t1].[Name] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id] @@ -4841,9 +4841,9 @@ LEFT JOIN ( SELECT [l2].[Level1_Optional_Id], [l2].[Level2_Name] FROM [Level1] AS [l2] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t1] ON [l1].[Id] = [t1].[Level1_Optional_Id] - ORDER BY [t1].[Level2_Name] -) AS [t0] ON [t].[Level1_Optional_Id] = [t0].[Id] + ) AS [t0] ON [l1].[Id] = [t0].[Level1_Optional_Id] + ORDER BY [t0].[Level2_Name] +) AS [t1] ON [t].[Level1_Optional_Id] = [t1].[Id] WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL """); } @@ -4976,7 +4976,7 @@ INNER JOIN [Level1] AS [l2] ON CASE WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] END = ( SELECT TOP(1) CASE - WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id1] + WHEN [t4].[Level2_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t4].[Id1] END FROM [Level1] AS [l3] LEFT JOIN ( @@ -4987,33 +4987,33 @@ WHERE [l4].[OneToOne_Required_PK_Date] IS NOT NULL AND [l4].[Level1_Required_Id] WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END LEFT JOIN ( - SELECT [t4].[Id] AS [Id1], [t4].[Level2_Optional_Id], [t4].[Level2_Required_Id], [t4].[OneToMany_Required_Inverse3Id] + SELECT [t3].[Id] AS [Id1], [t3].[Level2_Optional_Id], [t3].[Level2_Required_Id], [t3].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l5] LEFT JOIN ( SELECT [l6].[Id], [l6].[OneToOne_Required_PK_Date], [l6].[Level1_Required_Id], [l6].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l6] WHERE [l6].[OneToOne_Required_PK_Date] IS NOT NULL AND [l6].[Level1_Required_Id] IS NOT NULL AND [l6].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t3] ON [l5].[Id] = CASE - WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] + ) AS [t2] ON [l5].[Id] = CASE + WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] END LEFT JOIN ( SELECT [l7].[Id], [l7].[Level2_Optional_Id], [l7].[Level2_Required_Id], [l7].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l7] WHERE [l7].[Level2_Required_Id] IS NOT NULL AND [l7].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t4] ON CASE - WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] + ) AS [t3] ON CASE + WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] END = CASE - WHEN [t4].[Level2_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t4].[Id] + WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] END - WHERE [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t4].[Level2_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE + WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL + ) AS [t4] ON CASE WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] - END = [t2].[Level2_Optional_Id] + END = [t4].[Level2_Optional_Id] WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND CASE - WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id1] + WHEN [t4].[Level2_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t4].[Id1] END IS NOT NULL ORDER BY CASE - WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id1] + WHEN [t4].[Level2_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t4].[Id1] END) WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL """); @@ -5030,7 +5030,7 @@ WHEN [t4].[Level3_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse4 END AS [Id4], [t4].[Level4_Name] AS [Name4], [l].[Id] AS [Id1], [l].[Name] AS [Name1] FROM [Level1] AS [l] INNER JOIN ( - SELECT [t1].[Id] AS [Id2], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Required_Inverse4Id], [l5].[Name] AS [Name0] + SELECT [t1].[Id] AS [Id2], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Required_Inverse4Id], [l6].[Name] AS [Name0] FROM [Level1] AS [l0] LEFT JOIN ( SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Required_Id], [l1].[OneToMany_Required_Inverse2Id] @@ -5065,15 +5065,15 @@ WHERE [l4].[Level2_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END LEFT JOIN ( - SELECT [l6].[Id], [l6].[OneToOne_Required_PK_Date], [l6].[Level1_Required_Id], [l6].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l6] - WHERE [l6].[OneToOne_Required_PK_Date] IS NOT NULL AND [l6].[Level1_Required_Id] IS NOT NULL AND [l6].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l5].[Id], [l5].[OneToOne_Required_PK_Date], [l5].[Level1_Required_Id], [l5].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l5] + WHERE [l5].[OneToOne_Required_PK_Date] IS NOT NULL AND [l5].[Level1_Required_Id] IS NOT NULL AND [l5].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t3] ON [t2].[Level2_Required_Id] = CASE WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] END - LEFT JOIN [Level1] AS [l5] ON CASE + LEFT JOIN [Level1] AS [l6] ON CASE WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] - END = [l5].[Id] + END = [l6].[Id] WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL AND [t1].[Level3_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse4Id] IS NOT NULL ) AS [t4] ON [l].[Name] = [t4].[Name0] """); @@ -5219,7 +5219,7 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS END INNER JOIN [Level1] AS [l1] ON [t].[Level1_Required_Id] = [l1].[Id] INNER JOIN ( - SELECT [t2].[Level2_Required_Id] + SELECT [t1].[Level2_Required_Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] @@ -5232,13 +5232,13 @@ LEFT JOIN ( SELECT [l4].[Id], [l4].[Level2_Required_Id], [l4].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l4] WHERE [l4].[Level2_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE + ) AS [t1] ON CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END = CASE - WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] + WHEN [t1].[Level2_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t1].[Id] END - WHERE [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t1] ON [l1].[Id] = [t1].[Level2_Required_Id] + WHERE [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t1].[Level2_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse3Id] IS NOT NULL +) AS [t2] ON [l1].[Id] = [t2].[Level2_Required_Id] WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ORDER BY [l1].[Id] """); @@ -5482,33 +5482,33 @@ public override async Task Multi_include_with_groupby_in_subquery(bool async) AssertSql( """ -SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t].[Name], [t3].[Id], [t3].[Level2_Optional_Id], [t3].[Level2_Required_Id], [t3].[Level3_Name], [t3].[OneToMany_Optional_Inverse3Id], [t3].[OneToMany_Required_Inverse3Id], [t3].[OneToOne_Optional_PK_Inverse3Id] +SELECT [t2].[Id], [t2].[Date], [t2].[Name], [t2].[Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t0].[Name], [t3].[Id], [t3].[Level2_Optional_Id], [t3].[Level2_Required_Id], [t3].[Level3_Name], [t3].[OneToMany_Optional_Inverse3Id], [t3].[OneToMany_Required_Inverse3Id], [t3].[OneToOne_Optional_PK_Inverse3Id] FROM ( SELECT [l].[Name] FROM [Level1] AS [l] GROUP BY [l].[Name] -) AS [t] +) AS [t0] LEFT JOIN ( - SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[Id0], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id] + SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id] FROM ( - SELECT [l0].[Id], [l0].[Date], [l0].[Name], [t2].[Id] AS [Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] + SELECT [l0].[Id], [l0].[Date], [l0].[Name], [t].[Id] AS [Id0], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [Level1] AS [l0] LEFT JOIN ( SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l0].[Id] = [t2].[Level1_Optional_Id] - ) AS [t0] - WHERE [t0].[row] <= 1 -) AS [t1] ON [t].[Name] = [t1].[Name] + ) AS [t] ON [l0].[Id] = [t].[Level1_Optional_Id] + ) AS [t1] + WHERE [t1].[row] <= 1 +) AS [t2] ON [t0].[Name] = [t2].[Name] LEFT JOIN ( SELECT [l2].[Id], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Level3_Name], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id] FROM [Level1] AS [l2] WHERE [l2].[Level2_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse3Id] IS NOT NULL ) AS [t3] ON CASE - WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id0] + WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id0] END = [t3].[OneToMany_Optional_Inverse3Id] -ORDER BY [t].[Name], [t1].[Id], [t1].[Id0] +ORDER BY [t0].[Name], [t2].[Id], [t2].[Id0] """); } @@ -5520,7 +5520,7 @@ public override async Task Join_navigation_deeply_nested_non_key_join(bool async """ SELECT CASE WHEN [t1].[Level3_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse4Id] IS NOT NULL THEN [t1].[Id] -END AS [Id4], [t1].[Level4_Name] AS [Name4], [t2].[Id] AS [Id1], [t2].[Name] AS [Name1] +END AS [Id4], [t1].[Level4_Name] AS [Name4], [t5].[Id] AS [Id1], [t5].[Name] AS [Name1] FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id] @@ -5548,30 +5548,30 @@ WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3 WHEN [t1].[Level3_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse4Id] IS NOT NULL THEN [t1].[Id] END INNER JOIN ( - SELECT [l3].[Id], [l3].[Name], [t5].[Level4_Name] + SELECT [l3].[Id], [l3].[Name], [t4].[Level4_Name] FROM [Level1] AS [l3] LEFT JOIN ( SELECT [l4].[Id], [l4].[OneToOne_Required_PK_Date], [l4].[Level1_Required_Id], [l4].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l4] WHERE [l4].[OneToOne_Required_PK_Date] IS NOT NULL AND [l4].[Level1_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t3] ON [l3].[Id] = [t3].[Level1_Required_Id] + ) AS [t2] ON [l3].[Id] = [t2].[Level1_Required_Id] LEFT JOIN ( SELECT [l5].[Id], [l5].[Level2_Optional_Id], [l5].[Level2_Required_Id], [l5].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l5] WHERE [l5].[Level2_Required_Id] IS NOT NULL AND [l5].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t4] ON CASE - WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] - END = [t4].[Level2_Optional_Id] + ) AS [t3] ON CASE + WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + END = [t3].[Level2_Optional_Id] LEFT JOIN ( SELECT [l6].[Id], [l6].[Level3_Required_Id], [l6].[Level4_Name], [l6].[OneToMany_Required_Inverse4Id] FROM [Level1] AS [l6] WHERE [l6].[Level3_Required_Id] IS NOT NULL AND [l6].[OneToMany_Required_Inverse4Id] IS NOT NULL - ) AS [t5] ON CASE - WHEN [t4].[Level2_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t4].[Id] + ) AS [t4] ON CASE + WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] END = CASE - WHEN [t5].[Level3_Required_Id] IS NOT NULL AND [t5].[OneToMany_Required_Inverse4Id] IS NOT NULL THEN [t5].[Id] + WHEN [t4].[Level3_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse4Id] IS NOT NULL THEN [t4].[Id] END -) AS [t2] ON [t1].[Level4_Name] = [t2].[Level4_Name] +) AS [t5] ON [t1].[Level4_Name] = [t5].[Level4_Name] WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL AND [t1].[Level3_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse4Id] IS NOT NULL """); } @@ -5583,7 +5583,7 @@ public override async Task Join_navigation_in_outer_selector_translated_to_extra AssertSql( """ SELECT [l].[Id] AS [Id1], CASE - WHEN [t1].[Level2_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t1].[Id1] + WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id1] END AS [Id3] FROM [Level1] AS [l] LEFT JOIN ( @@ -5599,29 +5599,29 @@ WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END = [t0].[Level2_Optional_Id] INNER JOIN ( - SELECT [t3].[Id] AS [Id1], [t3].[Level2_Required_Id], [t3].[OneToMany_Required_Inverse3Id] + SELECT [t2].[Id] AS [Id1], [t2].[Level2_Required_Id], [t2].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l2].[Id] = CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t1] ON [l2].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END LEFT JOIN ( SELECT [l4].[Id], [l4].[Level2_Required_Id], [l4].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l4] WHERE [l4].[Level2_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t3] ON CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t2] ON CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END = CASE - WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] + WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END - WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t1] ON CASE + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL +) AS [t3] ON CASE WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] END = CASE - WHEN [t1].[Level2_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t1].[Id1] + WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id1] END """); } @@ -5939,18 +5939,18 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] LEFT JOIN ( - SELECT [t2].[Level1_Optional_Id], [t2].[Level2_Name] + SELECT [t1].[Level1_Optional_Id], [t1].[Level2_Name] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Optional_Id], [l3].[Level1_Required_Id], [l3].[Level2_Name], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l2].[Id] = CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t1] ON [l2].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END - WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t1] ON [l].[Id] = [t1].[Level1_Optional_Id] -WHERE [t0].[Level2_Name] = N'L2 05' OR [t1].[Level2_Name] <> N'L2 42' OR [t1].[Level2_Name] IS NULL + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL +) AS [t2] ON [l].[Id] = [t2].[Level1_Optional_Id] +WHERE [t0].[Level2_Name] = N'L2 05' OR [t2].[Level2_Name] <> N'L2 42' OR [t2].[Level2_Name] IS NULL """); } @@ -6034,25 +6034,25 @@ public override async Task Include_reference_with_groupby_in_subquery(bool async AssertSql( """ -SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id] +SELECT [t2].[Id], [t2].[Date], [t2].[Name], [t2].[Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id] FROM ( SELECT [l].[Name] FROM [Level1] AS [l] GROUP BY [l].[Name] -) AS [t] +) AS [t0] LEFT JOIN ( - SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[Id0], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id] + SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id] FROM ( - SELECT [l0].[Id], [l0].[Date], [l0].[Name], [t2].[Id] AS [Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] + SELECT [l0].[Id], [l0].[Date], [l0].[Name], [t].[Id] AS [Id0], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [Level1] AS [l0] LEFT JOIN ( SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id] FROM [Level1] AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l0].[Id] = [t2].[Level1_Optional_Id] - ) AS [t0] - WHERE [t0].[row] <= 1 -) AS [t1] ON [t].[Name] = [t1].[Name] + ) AS [t] ON [l0].[Id] = [t].[Level1_Optional_Id] + ) AS [t1] + WHERE [t1].[row] <= 1 +) AS [t2] ON [t0].[Name] = [t2].[Name] """); } @@ -6201,8 +6201,8 @@ public override async Task Join_navigations_in_inner_selector_translated_without """ SELECT CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] -END AS [Id2], [t0].[Id] AS [Id1], CASE - WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id1] +END AS [Id2], [t1].[Id] AS [Id1], CASE + WHEN [t5].[Level2_Required_Id] IS NOT NULL AND [t5].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t5].[Id1] END AS [Id3] FROM [Level1] AS [l] LEFT JOIN ( @@ -6213,49 +6213,49 @@ WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END INNER JOIN ( - SELECT [l1].[Id], [t1].[Id] AS [Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Required_Id], [t1].[OneToMany_Required_Inverse2Id] + SELECT [l1].[Id], [t0].[Id] AS [Id0], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Required_Id], [t0].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l1] LEFT JOIN ( SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l2] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t1] ON [l1].[Id] = [t1].[Level1_Optional_Id] -) AS [t0] ON CASE + ) AS [t0] ON [l1].[Id] = [t0].[Level1_Optional_Id] +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END = CASE - WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id0] END INNER JOIN ( - SELECT [t4].[Id] AS [Id1], [t4].[Level2_Required_Id], [t4].[OneToMany_Required_Inverse3Id], [t5].[Id] AS [Id2], [t5].[OneToOne_Required_PK_Date] AS [OneToOne_Required_PK_Date0], [t5].[Level1_Required_Id] AS [Level1_Required_Id0], [t5].[OneToMany_Required_Inverse2Id] AS [OneToMany_Required_Inverse2Id0] + SELECT [t3].[Id] AS [Id1], [t3].[Level2_Required_Id], [t3].[OneToMany_Required_Inverse3Id], [t4].[Id] AS [Id2], [t4].[OneToOne_Required_PK_Date] AS [OneToOne_Required_PK_Date0], [t4].[Level1_Required_Id] AS [Level1_Required_Id0], [t4].[OneToMany_Required_Inverse2Id] AS [OneToMany_Required_Inverse2Id0] FROM [Level1] AS [l3] LEFT JOIN ( SELECT [l4].[Id], [l4].[OneToOne_Required_PK_Date], [l4].[Level1_Required_Id], [l4].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l4] WHERE [l4].[OneToOne_Required_PK_Date] IS NOT NULL AND [l4].[Level1_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t3] ON [l3].[Id] = CASE - WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] + ) AS [t2] ON [l3].[Id] = CASE + WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] END LEFT JOIN ( SELECT [l5].[Id], [l5].[Level2_Optional_Id], [l5].[Level2_Required_Id], [l5].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l5] WHERE [l5].[Level2_Required_Id] IS NOT NULL AND [l5].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t4] ON CASE - WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] + ) AS [t3] ON CASE + WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] END = CASE - WHEN [t4].[Level2_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t4].[Id] + WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] END LEFT JOIN ( SELECT [l6].[Id], [l6].[OneToOne_Required_PK_Date], [l6].[Level1_Required_Id], [l6].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l6] WHERE [l6].[OneToOne_Required_PK_Date] IS NOT NULL AND [l6].[Level1_Required_Id] IS NOT NULL AND [l6].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t5] ON [t4].[Level2_Optional_Id] = CASE - WHEN [t5].[OneToOne_Required_PK_Date] IS NOT NULL AND [t5].[Level1_Required_Id] IS NOT NULL AND [t5].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t5].[Id] + ) AS [t4] ON [t3].[Level2_Optional_Id] = CASE + WHEN [t4].[OneToOne_Required_PK_Date] IS NOT NULL AND [t4].[Level1_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t4].[Id] END - WHERE [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t4].[Level2_Required_Id] IS NOT NULL AND [t4].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t2] ON CASE + WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL +) AS [t5] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END = CASE - WHEN [t2].[OneToOne_Required_PK_Date0] IS NOT NULL AND [t2].[Level1_Required_Id0] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id0] IS NOT NULL THEN [t2].[Id2] + WHEN [t5].[OneToOne_Required_PK_Date0] IS NOT NULL AND [t5].[Level1_Required_Id0] IS NOT NULL AND [t5].[OneToMany_Required_Inverse2Id0] IS NOT NULL THEN [t5].[Id2] END WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL """); @@ -6321,17 +6321,17 @@ WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] I SELECT COUNT(*) FROM [Level1] AS [l3] LEFT JOIN ( - SELECT [t2].[Level1_Optional_Id] + SELECT [t1].[Level1_Optional_Id] FROM [Level1] AS [l4] LEFT JOIN ( SELECT [l5].[Id], [l5].[OneToOne_Required_PK_Date], [l5].[Level1_Optional_Id], [l5].[Level1_Required_Id], [l5].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l5] WHERE [l5].[OneToOne_Required_PK_Date] IS NOT NULL AND [l5].[Level1_Required_Id] IS NOT NULL AND [l5].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l4].[Id] = CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t1] ON [l4].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END - WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t1] ON [l3].[Id] = [t1].[Level1_Optional_Id]) > 7) > 4 AND [l].[Id] < 2 + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL + ) AS [t2] ON [l3].[Id] = [t2].[Level1_Optional_Id]) > 7) > 4 AND [l].[Id] < 2 """); } @@ -6379,16 +6379,16 @@ public override async Task Select_subquery_with_client_eval_and_navigation1(bool AssertSql( """ SELECT ( - SELECT TOP(1) [l2].[Name] + SELECT TOP(1) [l3].[Name] FROM [Level1] AS [l1] LEFT JOIN ( - SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l3] - WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l2] + WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l1].[Id] = CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END - LEFT JOIN [Level1] AS [l2] ON [t0].[Level1_Required_Id] = [l2].[Id] + LEFT JOIN [Level1] AS [l3] ON [t0].[Level1_Required_Id] = [l3].[Id] WHERE [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL ORDER BY CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] @@ -6669,30 +6669,30 @@ public override async Task Select_subquery_with_client_eval_and_navigation2(bool """ SELECT CASE WHEN ( - SELECT TOP(1) [l2].[Name] + SELECT TOP(1) [l3].[Name] FROM [Level1] AS [l1] LEFT JOIN ( - SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l3] - WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l2] + WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l1].[Id] = CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END - LEFT JOIN [Level1] AS [l2] ON [t0].[Level1_Required_Id] = [l2].[Id] + LEFT JOIN [Level1] AS [l3] ON [t0].[Level1_Required_Id] = [l3].[Id] WHERE [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL ORDER BY CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END) = N'L1 02' AND ( - SELECT TOP(1) [l2].[Name] + SELECT TOP(1) [l3].[Name] FROM [Level1] AS [l1] LEFT JOIN ( - SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l3] - WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l2] + WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l1].[Id] = CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] END - LEFT JOIN [Level1] AS [l2] ON [t0].[Level1_Required_Id] = [l2].[Id] + LEFT JOIN [Level1] AS [l3] ON [t0].[Level1_Required_Id] = [l3].[Id] WHERE [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL ORDER BY CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] @@ -6832,18 +6832,18 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] LEFT JOIN ( - SELECT [t2].[Level1_Optional_Id], [t2].[Level2_Name] + SELECT [t1].[Level1_Optional_Id], [t1].[Level2_Name] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Optional_Id], [l3].[Level1_Required_Id], [l3].[Level2_Name], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l2].[Id] = CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t1] ON [l2].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END - WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t1] ON [l].[Id] = [t1].[Level1_Optional_Id] -WHERE [t0].[Level2_Name] = N'L2 05' OR [t1].[Level2_Name] = N'L2 07' + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL +) AS [t2] ON [l].[Id] = [t2].[Level1_Optional_Id] +WHERE [t0].[Level2_Name] = N'L2 05' OR [t2].[Level2_Name] = N'L2 07' """); } @@ -6858,16 +6858,16 @@ WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] END AS [Id2] FROM [Level1] AS [l] INNER JOIN ( - SELECT [t].[Id] AS [Id0], [t].[OneToOne_Required_PK_Date], [t].[Level1_Required_Id], [t].[OneToMany_Required_Inverse2Id], [l1].[Id] AS [Id1] + SELECT [t].[Id] AS [Id0], [t].[OneToOne_Required_PK_Date], [t].[Level1_Required_Id], [t].[OneToMany_Required_Inverse2Id], [l2].[Id] AS [Id1] FROM [Level1] AS [l0] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Required_Id], [l2].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l2] - WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Required_Id], [l1].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l1] + WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l0].[Id] = CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] END - LEFT JOIN [Level1] AS [l1] ON [t].[Level1_Required_Id] = [l1].[Id] + LEFT JOIN [Level1] AS [l2] ON [t].[Level1_Required_Id] = [l2].[Id] WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Id1] """); @@ -7045,32 +7045,32 @@ public override async Task Select_subquery_with_client_eval_and_multi_level_navi AssertSql( """ SELECT ( - SELECT TOP(1) [l3].[Name] + SELECT TOP(1) [l6].[Name] FROM [Level1] AS [l2] LEFT JOIN ( - SELECT [l4].[Id], [l4].[OneToOne_Required_PK_Date], [l4].[Level1_Required_Id], [l4].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l4] - WHERE [l4].[OneToOne_Required_PK_Date] IS NOT NULL AND [l4].[Level1_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l3] + WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t1] ON [l2].[Id] = CASE WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END LEFT JOIN ( - SELECT [l5].[Id], [l5].[Level2_Required_Id], [l5].[OneToMany_Required_Inverse3Id] - FROM [Level1] AS [l5] - WHERE [l5].[Level2_Required_Id] IS NOT NULL AND [l5].[OneToMany_Required_Inverse3Id] IS NOT NULL + SELECT [l4].[Id], [l4].[Level2_Required_Id], [l4].[OneToMany_Required_Inverse3Id] + FROM [Level1] AS [l4] + WHERE [l4].[Level2_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse3Id] IS NOT NULL ) AS [t2] ON CASE WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END = CASE WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END LEFT JOIN ( - SELECT [l6].[Id], [l6].[OneToOne_Required_PK_Date], [l6].[Level1_Required_Id], [l6].[OneToMany_Required_Inverse2Id] - FROM [Level1] AS [l6] - WHERE [l6].[OneToOne_Required_PK_Date] IS NOT NULL AND [l6].[Level1_Required_Id] IS NOT NULL AND [l6].[OneToMany_Required_Inverse2Id] IS NOT NULL + SELECT [l5].[Id], [l5].[OneToOne_Required_PK_Date], [l5].[Level1_Required_Id], [l5].[OneToMany_Required_Inverse2Id] + FROM [Level1] AS [l5] + WHERE [l5].[OneToOne_Required_PK_Date] IS NOT NULL AND [l5].[Level1_Required_Id] IS NOT NULL AND [l5].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t3] ON [t2].[Level2_Required_Id] = CASE WHEN [t3].[OneToOne_Required_PK_Date] IS NOT NULL AND [t3].[Level1_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t3].[Id] END - LEFT JOIN [Level1] AS [l3] ON [t3].[Level1_Required_Id] = [l3].[Id] + LEFT JOIN [Level1] AS [l6] ON [t3].[Level1_Required_Id] = [l6].[Id] WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL ORDER BY CASE WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] @@ -7425,18 +7425,18 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] CROSS JOIN ( - SELECT [t2].[Level1_Required_Id] + SELECT [t1].[Level1_Required_Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l2].[Id] = CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t1] ON [l2].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END - WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t1] -INNER JOIN [Level1] AS [l4] ON [t1].[Level1_Required_Id] = [l4].[Id] + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL +) AS [t2] +INNER JOIN [Level1] AS [l4] ON [t2].[Level1_Required_Id] = [l4].[Id] """); } @@ -7542,17 +7542,17 @@ WHERE [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] I SELECT COUNT(*) FROM [Level1] AS [l3] LEFT JOIN ( - SELECT [t2].[Level1_Optional_Id] + SELECT [t1].[Level1_Optional_Id] FROM [Level1] AS [l4] LEFT JOIN ( SELECT [l5].[Id], [l5].[OneToOne_Required_PK_Date], [l5].[Level1_Optional_Id], [l5].[Level1_Required_Id], [l5].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l5] WHERE [l5].[OneToOne_Required_PK_Date] IS NOT NULL AND [l5].[Level1_Required_Id] IS NOT NULL AND [l5].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l4].[Id] = CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t1] ON [l4].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END - WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t1] ON [l3].[Id] = [t1].[Level1_Optional_Id]) > 7 + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL + ) AS [t2] ON [l3].[Id] = [t2].[Level1_Optional_Id]) > 7 ORDER BY [l0].[Id] ) AS [t3]) > 4 AND [l].[Id] < 2 """); @@ -7954,7 +7954,7 @@ public override async Task GroupJoin_SelectMany_DefaultIfEmpty_with_predicate_us SELECT [l].[Id] AS [Id1], CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] END AS [Id2], CASE - WHEN [t1].[Level2_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t1].[Id1] + WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id1] END AS [Id3] FROM [Level1] AS [l] LEFT JOIN ( @@ -7974,32 +7974,32 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS END IS NULL) ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] LEFT JOIN ( - SELECT [t3].[Id] AS [Id1], [t3].[Level2_Optional_Id], [t3].[Level2_Required_Id], [t3].[OneToMany_Required_Inverse3Id] + SELECT [t2].[Id] AS [Id1], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l2].[Id] = CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t1] ON [l2].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END LEFT JOIN ( SELECT [l4].[Id], [l4].[Level2_Optional_Id], [l4].[Level2_Required_Id], [l4].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l4] WHERE [l4].[Level2_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t3] ON CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t2] ON CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END = CASE - WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] + WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END - WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL AND (CASE - WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL AND (CASE + WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END <> @__prm2_1 OR CASE - WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] + WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END IS NULL) -) AS [t1] ON CASE +) AS [t3] ON CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] -END = [t1].[Level2_Optional_Id] +END = [t3].[Level2_Optional_Id] """); } @@ -8015,7 +8015,7 @@ public override async Task GroupJoin_SelectMany_with_predicate_using_closure_nes SELECT [l].[Id] AS [Id1], CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] END AS [Id2], CASE - WHEN [t1].[Level2_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t1].[Id1] + WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id1] END AS [Id3] FROM [Level1] AS [l] INNER JOIN ( @@ -8035,32 +8035,32 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS END IS NULL) ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] INNER JOIN ( - SELECT [t3].[Id] AS [Id1], [t3].[Level2_Optional_Id], [t3].[Level2_Required_Id], [t3].[OneToMany_Required_Inverse3Id] + SELECT [t2].[Id] AS [Id1], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l2].[Id] = CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t1] ON [l2].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END LEFT JOIN ( SELECT [l4].[Id], [l4].[Level2_Optional_Id], [l4].[Level2_Required_Id], [l4].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l4] WHERE [l4].[Level2_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t3] ON CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t2] ON CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END = CASE - WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] + WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END - WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL AND (CASE - WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL AND (CASE + WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END <> @__prm2_1 OR CASE - WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] + WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END IS NULL) -) AS [t1] ON CASE +) AS [t3] ON CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] -END = [t1].[Level2_Optional_Id] +END = [t3].[Level2_Optional_Id] """); } @@ -8075,7 +8075,7 @@ public override async Task GroupJoin_SelectMany_DefaultIfEmpty_with_predicate_us SELECT [l].[Id] AS [Id1], CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] END AS [Id2], CASE - WHEN [t1].[Level2_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t1].[Id1] + WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id1] END AS [Id3] FROM [Level1] AS [l] LEFT JOIN ( @@ -8095,32 +8095,32 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS END IS NULL) ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] LEFT JOIN ( - SELECT [t3].[Id] AS [Id1], [t3].[Level2_Optional_Id], [t3].[Level2_Required_Id], [t3].[OneToMany_Required_Inverse3Id] + SELECT [t2].[Id] AS [Id1], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l2].[Id] = CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t1] ON [l2].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END LEFT JOIN ( SELECT [l4].[Id], [l4].[Level2_Optional_Id], [l4].[Level2_Required_Id], [l4].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l4] WHERE [l4].[Level2_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t3] ON CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t2] ON CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END = CASE - WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] + WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END - WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL AND (CASE - WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL AND (CASE + WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END <> @__prm_0 OR CASE - WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] + WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END IS NULL) -) AS [t1] ON CASE +) AS [t3] ON CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] -END = [t1].[Level2_Optional_Id] +END = [t3].[Level2_Optional_Id] """); } @@ -8135,7 +8135,7 @@ public override async Task GroupJoin_SelectMany_with_predicate_using_closure_nes SELECT [l].[Id] AS [Id1], CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] END AS [Id2], CASE - WHEN [t1].[Level2_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t1].[Id1] + WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id1] END AS [Id3] FROM [Level1] AS [l] INNER JOIN ( @@ -8155,32 +8155,32 @@ WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS END IS NULL) ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] INNER JOIN ( - SELECT [t3].[Id] AS [Id1], [t3].[Level2_Optional_Id], [t3].[Level2_Required_Id], [t3].[OneToMany_Required_Inverse3Id] + SELECT [t2].[Id] AS [Id1], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[OneToOne_Required_PK_Date], [l3].[Level1_Required_Id], [l3].[OneToMany_Required_Inverse2Id] FROM [Level1] AS [l3] WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [l2].[Id] = CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t1] ON [l2].[Id] = CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END LEFT JOIN ( SELECT [l4].[Id], [l4].[Level2_Optional_Id], [l4].[Level2_Required_Id], [l4].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l4] WHERE [l4].[Level2_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t3] ON CASE - WHEN [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t2].[Id] + ) AS [t2] ON CASE + WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] END = CASE - WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] + WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END - WHERE [t2].[OneToOne_Required_PK_Date] IS NOT NULL AND [t2].[Level1_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL AND (CASE - WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] + WHERE [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL AND (CASE + WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END <> @__prm_0 OR CASE - WHEN [t3].[Level2_Required_Id] IS NOT NULL AND [t3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t3].[Id] + WHEN [t2].[Level2_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t2].[Id] END IS NULL) -) AS [t1] ON CASE +) AS [t3] ON CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id0] -END = [t1].[Level2_Optional_Id] +END = [t3].[Level2_Optional_Id] """); } @@ -8217,7 +8217,7 @@ public override async Task Correlated_projection_with_first(bool async) await base.Correlated_projection_with_first(async); AssertSql( -""" + """ SELECT [l].[Id], [t0].[c], [t0].[Id], [t0].[Id0] FROM [Level1] AS [l] OUTER APPLY ( @@ -8226,9 +8226,9 @@ WHEN [t].[Level3_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse4Id END AS [c], [l0].[Id], [t].[Id] AS [Id0] FROM [Level1] AS [l0] LEFT JOIN ( - SELECT [l2].[Id], [l2].[Level3_Required_Id], [l2].[OneToMany_Required_Inverse4Id] - FROM [Level1] AS [l2] - WHERE [l2].[Level3_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse4Id] IS NOT NULL + SELECT [l3].[Id], [l3].[Level3_Required_Id], [l3].[OneToMany_Required_Inverse4Id] + FROM [Level1] AS [l3] + WHERE [l3].[Level3_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse4Id] IS NOT NULL ) AS [t] ON CASE WHEN [l0].[Level2_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [l0].[Id] END = [t].[Level3_Required_Id] @@ -8242,20 +8242,20 @@ ORDER BY CASE WHEN [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l1].[Id] END) IS NOT NULL AND (( SELECT TOP(1) CASE - WHEN [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l3].[Id] + WHEN [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l2].[Id] END - FROM [Level1] AS [l3] - WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [l].[Id] = [l3].[OneToMany_Optional_Inverse2Id] + FROM [Level1] AS [l2] + WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [l].[Id] = [l2].[OneToMany_Optional_Inverse2Id] ORDER BY CASE - WHEN [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l3].[Id] + WHEN [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l2].[Id] END) = [l0].[OneToMany_Optional_Inverse3Id] OR (( SELECT TOP(1) CASE - WHEN [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l3].[Id] + WHEN [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l2].[Id] END - FROM [Level1] AS [l3] - WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [l].[Id] = [l3].[OneToMany_Optional_Inverse2Id] + FROM [Level1] AS [l2] + WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [l].[Id] = [l2].[OneToMany_Optional_Inverse2Id] ORDER BY CASE - WHEN [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l3].[Id] + WHEN [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l2].[Id] END) IS NULL AND [l0].[OneToMany_Optional_Inverse3Id] IS NULL)) ) AS [t0] ORDER BY [l].[Id], [t0].[Id] @@ -8267,54 +8267,54 @@ public override async Task Max_in_multi_level_nested_subquery(bool async) await base.Max_in_multi_level_nested_subquery(async); AssertSql( -""" + """ @__p_0='2' -SELECT [t].[Id], [t1].[Id], [t1].[Id0], [t1].[Id1], [t1].[Result], [t1].[Id2], [t1].[Id3], [t1].[Id4] +SELECT [t1].[Id], [t2].[Id], [t2].[Id0], [t2].[Id1], [t2].[Result], [t2].[Id2], [t2].[Id3], [t2].[Id4] FROM ( SELECT TOP(@__p_0) [l].[Id] FROM [Level1] AS [l] -) AS [t] +) AS [t1] LEFT JOIN ( SELECT CASE WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END AS [Id], CASE - WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] + WHEN [t].[Level2_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t].[Id] END AS [Id0], CASE - WHEN [t2].[Level3_Required_Id] IS NOT NULL AND [t2].[OneToMany_Required_Inverse4Id] IS NOT NULL THEN [t2].[Id] + WHEN [t0].[Level3_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse4Id] IS NOT NULL THEN [t0].[Id] END AS [Id1], CASE WHEN COALESCE(( SELECT MAX(CASE - WHEN [l2].[Level3_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse4Id] IS NOT NULL THEN [l2].[Id] + WHEN [l3].[Level3_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse4Id] IS NOT NULL THEN [l3].[Id] END) - FROM [Level1] AS [l2] - WHERE [l2].[Level3_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse4Id] IS NOT NULL AND CASE - WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] + FROM [Level1] AS [l3] + WHERE [l3].[Level3_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse4Id] IS NOT NULL AND CASE + WHEN [t].[Level2_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t].[Id] END IS NOT NULL AND (CASE - WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] - END = [l2].[OneToMany_Optional_Inverse4Id] OR (CASE - WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] - END IS NULL AND [l2].[OneToMany_Optional_Inverse4Id] IS NULL))), 0) > 1 THEN CAST(1 AS bit) + WHEN [t].[Level2_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t].[Id] + END = [l3].[OneToMany_Optional_Inverse4Id] OR (CASE + WHEN [t].[Level2_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t].[Id] + END IS NULL AND [l3].[OneToMany_Optional_Inverse4Id] IS NULL))), 0) > 1 THEN CAST(1 AS bit) ELSE CAST(0 AS bit) - END AS [Result], [l0].[Id] AS [Id2], [t0].[Id] AS [Id3], [t2].[Id] AS [Id4], [l0].[OneToMany_Optional_Inverse2Id] + END AS [Result], [l0].[Id] AS [Id2], [t].[Id] AS [Id3], [t0].[Id] AS [Id4], [l0].[OneToMany_Optional_Inverse2Id] FROM [Level1] AS [l0] LEFT JOIN ( SELECT [l1].[Id], [l1].[Level2_Required_Id], [l1].[OneToMany_Required_Inverse3Id] FROM [Level1] AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t0] ON CASE + ) AS [t] ON CASE WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] - END = [t0].[Level2_Required_Id] + END = [t].[Level2_Required_Id] LEFT JOIN ( - SELECT [l3].[Id], [l3].[Level3_Required_Id], [l3].[OneToMany_Required_Inverse4Id] - FROM [Level1] AS [l3] - WHERE [l3].[Level3_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse4Id] IS NOT NULL - ) AS [t2] ON CASE - WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id] - END = [t2].[Level3_Required_Id] + SELECT [l2].[Id], [l2].[Level3_Required_Id], [l2].[OneToMany_Required_Inverse4Id] + FROM [Level1] AS [l2] + WHERE [l2].[Level3_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse4Id] IS NOT NULL + ) AS [t0] ON CASE + WHEN [t].[Level2_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t].[Id] + END = [t0].[Level3_Required_Id] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t1] ON [t].[Id] = [t1].[OneToMany_Optional_Inverse2Id] -ORDER BY [t].[Id], [t1].[Id2], [t1].[Id3] +) AS [t2] ON [t1].[Id] = [t2].[OneToMany_Optional_Inverse2Id] +ORDER BY [t1].[Id], [t2].[Id2], [t2].[Id3] """); } @@ -8323,18 +8323,18 @@ public override async Task Multiple_select_many_in_projection(bool async) await base.Multiple_select_many_in_projection(async); AssertSql( -""" -SELECT [l].[Id], [t2].[Id], [t2].[RefId], [t2].[Id0], [t2].[Id00], [t2].[Id1], ( + """ +SELECT [l].[Id], [t3].[Id], [t3].[RefId], [t3].[Id0], [t3].[Id00], [t3].[Id1], ( SELECT COUNT(*) FROM [Level1] AS [l3] INNER JOIN ( SELECT [l4].[Level3_Name], [l4].[OneToMany_Optional_Inverse3Id] FROM [Level1] AS [l4] WHERE [l4].[Level2_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t3] ON CASE + ) AS [t2] ON CASE WHEN [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l3].[Id] - END = [t3].[OneToMany_Optional_Inverse3Id] - WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [l].[Id] = [l3].[OneToMany_Optional_Inverse2Id] AND ([t3].[Level3_Name] <> N'' OR [t3].[Level3_Name] IS NULL)) + END = [t2].[OneToMany_Optional_Inverse3Id] + WHERE [l3].[OneToOne_Required_PK_Date] IS NOT NULL AND [l3].[Level1_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [l].[Id] = [l3].[OneToMany_Optional_Inverse2Id] AND ([t2].[Level3_Name] <> N'' OR [t2].[Level3_Name] IS NULL)) FROM [Level1] AS [l] OUTER APPLY ( SELECT CASE @@ -8366,8 +8366,8 @@ WHERE [l2].[Level3_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse ) AS [t1] ON CASE WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [t0].[Id0] END = [t1].[Level3_Optional_Id] -) AS [t2] -ORDER BY [l].[Id], [t2].[c], [t2].[Id0], [t2].[Id00] +) AS [t3] +ORDER BY [l].[Id], [t3].[c], [t3].[Id0], [t3].[Id00] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/CompositeKeysQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/CompositeKeysQuerySqlServerTest.cs index 8222f481d22..515e6d1a7dc 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/CompositeKeysQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/CompositeKeysQuerySqlServerTest.cs @@ -96,7 +96,7 @@ public override async Task Projecting_multiple_collections_on_multiple_levels_no AssertSql( """ -SELECT [c].[Name], [c].[Id1], [c].[Id2], [t1].[Name], [t1].[Id1], [t1].[Id2], [t1].[Name0], [t1].[Id10], [t1].[Id20], [t1].[Id100], [t1].[Id200], [t1].[Level3_Optional_Id1], [t1].[Level3_Optional_Id2], [t1].[Level3_Required_Id1], [t1].[Level3_Required_Id2], [t1].[Name00], [t1].[OneToMany_Optional_Inverse4Id1], [t1].[OneToMany_Optional_Inverse4Id2], [t1].[OneToMany_Optional_Self_Inverse4Id1], [t1].[OneToMany_Optional_Self_Inverse4Id2], [t1].[OneToMany_Required_Inverse4Id1], [t1].[OneToMany_Required_Inverse4Id2], [t1].[OneToMany_Required_Self_Inverse4Id1], [t1].[OneToMany_Required_Self_Inverse4Id2], [t1].[OneToOne_Optional_PK_Inverse4Id1], [t1].[OneToOne_Optional_PK_Inverse4Id2], [t1].[OneToOne_Optional_Self4Id1], [t1].[OneToOne_Optional_Self4Id2], [t1].[Id11], [t1].[Id21], [t1].[Level3_Optional_Id10], [t1].[Level3_Optional_Id20], [t1].[Level3_Required_Id10], [t1].[Level3_Required_Id20], [t1].[Name1], [t1].[OneToMany_Optional_Inverse4Id10], [t1].[OneToMany_Optional_Inverse4Id20], [t1].[OneToMany_Optional_Self_Inverse4Id10], [t1].[OneToMany_Optional_Self_Inverse4Id20], [t1].[OneToMany_Required_Inverse4Id10], [t1].[OneToMany_Required_Inverse4Id20], [t1].[OneToMany_Required_Self_Inverse4Id10], [t1].[OneToMany_Required_Self_Inverse4Id20], [t1].[OneToOne_Optional_PK_Inverse4Id10], [t1].[OneToOne_Optional_PK_Inverse4Id20], [t1].[OneToOne_Optional_Self4Id10], [t1].[OneToOne_Optional_Self4Id20], [t1].[Name2], [t1].[Id12], [t1].[Id22], [t1].[Id101], [t1].[Id201], [t1].[Level3_Optional_Id11], [t1].[Level3_Optional_Id21], [t1].[Level3_Required_Id11], [t1].[Level3_Required_Id21], [t1].[Name01], [t1].[OneToMany_Optional_Inverse4Id11], [t1].[OneToMany_Optional_Inverse4Id21], [t1].[OneToMany_Optional_Self_Inverse4Id11], [t1].[OneToMany_Optional_Self_Inverse4Id21], [t1].[OneToMany_Required_Inverse4Id11], [t1].[OneToMany_Required_Inverse4Id21], [t1].[OneToMany_Required_Self_Inverse4Id11], [t1].[OneToMany_Required_Self_Inverse4Id21], [t1].[OneToOne_Optional_PK_Inverse4Id11], [t1].[OneToOne_Optional_PK_Inverse4Id21], [t1].[OneToOne_Optional_Self4Id11], [t1].[OneToOne_Optional_Self4Id21], [t1].[Id110], [t1].[Id210], [t1].[Level3_Optional_Id100], [t1].[Level3_Optional_Id200], [t1].[Level3_Required_Id100], [t1].[Level3_Required_Id200], [t1].[Name10], [t1].[OneToMany_Optional_Inverse4Id100], [t1].[OneToMany_Optional_Inverse4Id200], [t1].[OneToMany_Optional_Self_Inverse4Id100], [t1].[OneToMany_Optional_Self_Inverse4Id200], [t1].[OneToMany_Required_Inverse4Id100], [t1].[OneToMany_Required_Inverse4Id200], [t1].[OneToMany_Required_Self_Inverse4Id100], [t1].[OneToMany_Required_Self_Inverse4Id200], [t1].[OneToOne_Optional_PK_Inverse4Id100], [t1].[OneToOne_Optional_PK_Inverse4Id200], [t1].[OneToOne_Optional_Self4Id100], [t1].[OneToOne_Optional_Self4Id200], [t2].[Name], [t2].[Id1], [t2].[Id2], [t2].[Name0], [t2].[Id10], [t2].[Id20], [t2].[Id100], [t2].[Id200], [t2].[Level3_Optional_Id1], [t2].[Level3_Optional_Id2], [t2].[Level3_Required_Id1], [t2].[Level3_Required_Id2], [t2].[Name00], [t2].[OneToMany_Optional_Inverse4Id1], [t2].[OneToMany_Optional_Inverse4Id2], [t2].[OneToMany_Optional_Self_Inverse4Id1], [t2].[OneToMany_Optional_Self_Inverse4Id2], [t2].[OneToMany_Required_Inverse4Id1], [t2].[OneToMany_Required_Inverse4Id2], [t2].[OneToMany_Required_Self_Inverse4Id1], [t2].[OneToMany_Required_Self_Inverse4Id2], [t2].[OneToOne_Optional_PK_Inverse4Id1], [t2].[OneToOne_Optional_PK_Inverse4Id2], [t2].[OneToOne_Optional_Self4Id1], [t2].[OneToOne_Optional_Self4Id2], [t2].[Id11], [t2].[Id21], [t2].[Level3_Optional_Id10], [t2].[Level3_Optional_Id20], [t2].[Level3_Required_Id10], [t2].[Level3_Required_Id20], [t2].[Name1], [t2].[OneToMany_Optional_Inverse4Id10], [t2].[OneToMany_Optional_Inverse4Id20], [t2].[OneToMany_Optional_Self_Inverse4Id10], [t2].[OneToMany_Optional_Self_Inverse4Id20], [t2].[OneToMany_Required_Inverse4Id10], [t2].[OneToMany_Required_Inverse4Id20], [t2].[OneToMany_Required_Self_Inverse4Id10], [t2].[OneToMany_Required_Self_Inverse4Id20], [t2].[OneToOne_Optional_PK_Inverse4Id10], [t2].[OneToOne_Optional_PK_Inverse4Id20], [t2].[OneToOne_Optional_Self4Id10], [t2].[OneToOne_Optional_Self4Id20], [t2].[Name2], [t2].[Id12], [t2].[Id22], [t2].[Id101], [t2].[Id201], [t2].[Level3_Optional_Id11], [t2].[Level3_Optional_Id21], [t2].[Level3_Required_Id11], [t2].[Level3_Required_Id21], [t2].[Name01], [t2].[OneToMany_Optional_Inverse4Id11], [t2].[OneToMany_Optional_Inverse4Id21], [t2].[OneToMany_Optional_Self_Inverse4Id11], [t2].[OneToMany_Optional_Self_Inverse4Id21], [t2].[OneToMany_Required_Inverse4Id11], [t2].[OneToMany_Required_Inverse4Id21], [t2].[OneToMany_Required_Self_Inverse4Id11], [t2].[OneToMany_Required_Self_Inverse4Id21], [t2].[OneToOne_Optional_PK_Inverse4Id11], [t2].[OneToOne_Optional_PK_Inverse4Id21], [t2].[OneToOne_Optional_Self4Id11], [t2].[OneToOne_Optional_Self4Id21], [t2].[Id110], [t2].[Id210], [t2].[Level3_Optional_Id100], [t2].[Level3_Optional_Id200], [t2].[Level3_Required_Id100], [t2].[Level3_Required_Id200], [t2].[Name10], [t2].[OneToMany_Optional_Inverse4Id100], [t2].[OneToMany_Optional_Inverse4Id200], [t2].[OneToMany_Optional_Self_Inverse4Id100], [t2].[OneToMany_Optional_Self_Inverse4Id200], [t2].[OneToMany_Required_Inverse4Id100], [t2].[OneToMany_Required_Inverse4Id200], [t2].[OneToMany_Required_Self_Inverse4Id100], [t2].[OneToMany_Required_Self_Inverse4Id200], [t2].[OneToOne_Optional_PK_Inverse4Id100], [t2].[OneToOne_Optional_PK_Inverse4Id200], [t2].[OneToOne_Optional_Self4Id100], [t2].[OneToOne_Optional_Self4Id200] +SELECT [c].[Name], [c].[Id1], [c].[Id2], [t1].[Name], [t1].[Id1], [t1].[Id2], [t1].[Name0], [t1].[Id10], [t1].[Id20], [t1].[Id100], [t1].[Id200], [t1].[Level3_Optional_Id1], [t1].[Level3_Optional_Id2], [t1].[Level3_Required_Id1], [t1].[Level3_Required_Id2], [t1].[Name00], [t1].[OneToMany_Optional_Inverse4Id1], [t1].[OneToMany_Optional_Inverse4Id2], [t1].[OneToMany_Optional_Self_Inverse4Id1], [t1].[OneToMany_Optional_Self_Inverse4Id2], [t1].[OneToMany_Required_Inverse4Id1], [t1].[OneToMany_Required_Inverse4Id2], [t1].[OneToMany_Required_Self_Inverse4Id1], [t1].[OneToMany_Required_Self_Inverse4Id2], [t1].[OneToOne_Optional_PK_Inverse4Id1], [t1].[OneToOne_Optional_PK_Inverse4Id2], [t1].[OneToOne_Optional_Self4Id1], [t1].[OneToOne_Optional_Self4Id2], [t1].[Id11], [t1].[Id21], [t1].[Level3_Optional_Id10], [t1].[Level3_Optional_Id20], [t1].[Level3_Required_Id10], [t1].[Level3_Required_Id20], [t1].[Name1], [t1].[OneToMany_Optional_Inverse4Id10], [t1].[OneToMany_Optional_Inverse4Id20], [t1].[OneToMany_Optional_Self_Inverse4Id10], [t1].[OneToMany_Optional_Self_Inverse4Id20], [t1].[OneToMany_Required_Inverse4Id10], [t1].[OneToMany_Required_Inverse4Id20], [t1].[OneToMany_Required_Self_Inverse4Id10], [t1].[OneToMany_Required_Self_Inverse4Id20], [t1].[OneToOne_Optional_PK_Inverse4Id10], [t1].[OneToOne_Optional_PK_Inverse4Id20], [t1].[OneToOne_Optional_Self4Id10], [t1].[OneToOne_Optional_Self4Id20], [t1].[Name2], [t1].[Id12], [t1].[Id22], [t1].[Id101], [t1].[Id201], [t1].[Level3_Optional_Id11], [t1].[Level3_Optional_Id21], [t1].[Level3_Required_Id11], [t1].[Level3_Required_Id21], [t1].[Name01], [t1].[OneToMany_Optional_Inverse4Id11], [t1].[OneToMany_Optional_Inverse4Id21], [t1].[OneToMany_Optional_Self_Inverse4Id11], [t1].[OneToMany_Optional_Self_Inverse4Id21], [t1].[OneToMany_Required_Inverse4Id11], [t1].[OneToMany_Required_Inverse4Id21], [t1].[OneToMany_Required_Self_Inverse4Id11], [t1].[OneToMany_Required_Self_Inverse4Id21], [t1].[OneToOne_Optional_PK_Inverse4Id11], [t1].[OneToOne_Optional_PK_Inverse4Id21], [t1].[OneToOne_Optional_Self4Id11], [t1].[OneToOne_Optional_Self4Id21], [t1].[Id110], [t1].[Id210], [t1].[Level3_Optional_Id100], [t1].[Level3_Optional_Id200], [t1].[Level3_Required_Id100], [t1].[Level3_Required_Id200], [t1].[Name10], [t1].[OneToMany_Optional_Inverse4Id100], [t1].[OneToMany_Optional_Inverse4Id200], [t1].[OneToMany_Optional_Self_Inverse4Id100], [t1].[OneToMany_Optional_Self_Inverse4Id200], [t1].[OneToMany_Required_Inverse4Id100], [t1].[OneToMany_Required_Inverse4Id200], [t1].[OneToMany_Required_Self_Inverse4Id100], [t1].[OneToMany_Required_Self_Inverse4Id200], [t1].[OneToOne_Optional_PK_Inverse4Id100], [t1].[OneToOne_Optional_PK_Inverse4Id200], [t1].[OneToOne_Optional_Self4Id100], [t1].[OneToOne_Optional_Self4Id200], [t4].[Name], [t4].[Id1], [t4].[Id2], [t4].[Name0], [t4].[Id10], [t4].[Id20], [t4].[Id100], [t4].[Id200], [t4].[Level3_Optional_Id1], [t4].[Level3_Optional_Id2], [t4].[Level3_Required_Id1], [t4].[Level3_Required_Id2], [t4].[Name00], [t4].[OneToMany_Optional_Inverse4Id1], [t4].[OneToMany_Optional_Inverse4Id2], [t4].[OneToMany_Optional_Self_Inverse4Id1], [t4].[OneToMany_Optional_Self_Inverse4Id2], [t4].[OneToMany_Required_Inverse4Id1], [t4].[OneToMany_Required_Inverse4Id2], [t4].[OneToMany_Required_Self_Inverse4Id1], [t4].[OneToMany_Required_Self_Inverse4Id2], [t4].[OneToOne_Optional_PK_Inverse4Id1], [t4].[OneToOne_Optional_PK_Inverse4Id2], [t4].[OneToOne_Optional_Self4Id1], [t4].[OneToOne_Optional_Self4Id2], [t4].[Id11], [t4].[Id21], [t4].[Level3_Optional_Id10], [t4].[Level3_Optional_Id20], [t4].[Level3_Required_Id10], [t4].[Level3_Required_Id20], [t4].[Name1], [t4].[OneToMany_Optional_Inverse4Id10], [t4].[OneToMany_Optional_Inverse4Id20], [t4].[OneToMany_Optional_Self_Inverse4Id10], [t4].[OneToMany_Optional_Self_Inverse4Id20], [t4].[OneToMany_Required_Inverse4Id10], [t4].[OneToMany_Required_Inverse4Id20], [t4].[OneToMany_Required_Self_Inverse4Id10], [t4].[OneToMany_Required_Self_Inverse4Id20], [t4].[OneToOne_Optional_PK_Inverse4Id10], [t4].[OneToOne_Optional_PK_Inverse4Id20], [t4].[OneToOne_Optional_Self4Id10], [t4].[OneToOne_Optional_Self4Id20], [t4].[Name2], [t4].[Id12], [t4].[Id22], [t4].[Id101], [t4].[Id201], [t4].[Level3_Optional_Id11], [t4].[Level3_Optional_Id21], [t4].[Level3_Required_Id11], [t4].[Level3_Required_Id21], [t4].[Name01], [t4].[OneToMany_Optional_Inverse4Id11], [t4].[OneToMany_Optional_Inverse4Id21], [t4].[OneToMany_Optional_Self_Inverse4Id11], [t4].[OneToMany_Optional_Self_Inverse4Id21], [t4].[OneToMany_Required_Inverse4Id11], [t4].[OneToMany_Required_Inverse4Id21], [t4].[OneToMany_Required_Self_Inverse4Id11], [t4].[OneToMany_Required_Self_Inverse4Id21], [t4].[OneToOne_Optional_PK_Inverse4Id11], [t4].[OneToOne_Optional_PK_Inverse4Id21], [t4].[OneToOne_Optional_Self4Id11], [t4].[OneToOne_Optional_Self4Id21], [t4].[Id110], [t4].[Id210], [t4].[Level3_Optional_Id100], [t4].[Level3_Optional_Id200], [t4].[Level3_Required_Id100], [t4].[Level3_Required_Id200], [t4].[Name10], [t4].[OneToMany_Optional_Inverse4Id100], [t4].[OneToMany_Optional_Inverse4Id200], [t4].[OneToMany_Optional_Self_Inverse4Id100], [t4].[OneToMany_Optional_Self_Inverse4Id200], [t4].[OneToMany_Required_Inverse4Id100], [t4].[OneToMany_Required_Inverse4Id200], [t4].[OneToMany_Required_Self_Inverse4Id100], [t4].[OneToMany_Required_Self_Inverse4Id200], [t4].[OneToOne_Optional_PK_Inverse4Id100], [t4].[OneToOne_Optional_PK_Inverse4Id200], [t4].[OneToOne_Optional_Self4Id100], [t4].[OneToOne_Optional_Self4Id200] FROM [CompositeOnes] AS [c] LEFT JOIN ( SELECT [c0].[Name], [c0].[Id1], [c0].[Id2], [t].[Name] AS [Name0], [t].[Id1] AS [Id10], [t].[Id2] AS [Id20], [t].[Id10] AS [Id100], [t].[Id20] AS [Id200], [t].[Level3_Optional_Id1], [t].[Level3_Optional_Id2], [t].[Level3_Required_Id1], [t].[Level3_Required_Id2], [t].[Name0] AS [Name00], [t].[OneToMany_Optional_Inverse4Id1], [t].[OneToMany_Optional_Inverse4Id2], [t].[OneToMany_Optional_Self_Inverse4Id1], [t].[OneToMany_Optional_Self_Inverse4Id2], [t].[OneToMany_Required_Inverse4Id1], [t].[OneToMany_Required_Inverse4Id2], [t].[OneToMany_Required_Self_Inverse4Id1], [t].[OneToMany_Required_Self_Inverse4Id2], [t].[OneToOne_Optional_PK_Inverse4Id1], [t].[OneToOne_Optional_PK_Inverse4Id2], [t].[OneToOne_Optional_Self4Id1], [t].[OneToOne_Optional_Self4Id2], [t].[Id11], [t].[Id21], [t].[Level3_Optional_Id10], [t].[Level3_Optional_Id20], [t].[Level3_Required_Id10], [t].[Level3_Required_Id20], [t].[Name1], [t].[OneToMany_Optional_Inverse4Id10], [t].[OneToMany_Optional_Inverse4Id20], [t].[OneToMany_Optional_Self_Inverse4Id10], [t].[OneToMany_Optional_Self_Inverse4Id20], [t].[OneToMany_Required_Inverse4Id10], [t].[OneToMany_Required_Inverse4Id20], [t].[OneToMany_Required_Self_Inverse4Id10], [t].[OneToMany_Required_Self_Inverse4Id20], [t].[OneToOne_Optional_PK_Inverse4Id10], [t].[OneToOne_Optional_PK_Inverse4Id20], [t].[OneToOne_Optional_Self4Id10], [t].[OneToOne_Optional_Self4Id20], [t0].[Name] AS [Name2], [t0].[Id1] AS [Id12], [t0].[Id2] AS [Id22], [t0].[Id10] AS [Id101], [t0].[Id20] AS [Id201], [t0].[Level3_Optional_Id1] AS [Level3_Optional_Id11], [t0].[Level3_Optional_Id2] AS [Level3_Optional_Id21], [t0].[Level3_Required_Id1] AS [Level3_Required_Id11], [t0].[Level3_Required_Id2] AS [Level3_Required_Id21], [t0].[Name0] AS [Name01], [t0].[OneToMany_Optional_Inverse4Id1] AS [OneToMany_Optional_Inverse4Id11], [t0].[OneToMany_Optional_Inverse4Id2] AS [OneToMany_Optional_Inverse4Id21], [t0].[OneToMany_Optional_Self_Inverse4Id1] AS [OneToMany_Optional_Self_Inverse4Id11], [t0].[OneToMany_Optional_Self_Inverse4Id2] AS [OneToMany_Optional_Self_Inverse4Id21], [t0].[OneToMany_Required_Inverse4Id1] AS [OneToMany_Required_Inverse4Id11], [t0].[OneToMany_Required_Inverse4Id2] AS [OneToMany_Required_Inverse4Id21], [t0].[OneToMany_Required_Self_Inverse4Id1] AS [OneToMany_Required_Self_Inverse4Id11], [t0].[OneToMany_Required_Self_Inverse4Id2] AS [OneToMany_Required_Self_Inverse4Id21], [t0].[OneToOne_Optional_PK_Inverse4Id1] AS [OneToOne_Optional_PK_Inverse4Id11], [t0].[OneToOne_Optional_PK_Inverse4Id2] AS [OneToOne_Optional_PK_Inverse4Id21], [t0].[OneToOne_Optional_Self4Id1] AS [OneToOne_Optional_Self4Id11], [t0].[OneToOne_Optional_Self4Id2] AS [OneToOne_Optional_Self4Id21], [t0].[Id11] AS [Id110], [t0].[Id21] AS [Id210], [t0].[Level3_Optional_Id10] AS [Level3_Optional_Id100], [t0].[Level3_Optional_Id20] AS [Level3_Optional_Id200], [t0].[Level3_Required_Id10] AS [Level3_Required_Id100], [t0].[Level3_Required_Id20] AS [Level3_Required_Id200], [t0].[Name1] AS [Name10], [t0].[OneToMany_Optional_Inverse4Id10] AS [OneToMany_Optional_Inverse4Id100], [t0].[OneToMany_Optional_Inverse4Id20] AS [OneToMany_Optional_Inverse4Id200], [t0].[OneToMany_Optional_Self_Inverse4Id10] AS [OneToMany_Optional_Self_Inverse4Id100], [t0].[OneToMany_Optional_Self_Inverse4Id20] AS [OneToMany_Optional_Self_Inverse4Id200], [t0].[OneToMany_Required_Inverse4Id10] AS [OneToMany_Required_Inverse4Id100], [t0].[OneToMany_Required_Inverse4Id20] AS [OneToMany_Required_Inverse4Id200], [t0].[OneToMany_Required_Self_Inverse4Id10] AS [OneToMany_Required_Self_Inverse4Id100], [t0].[OneToMany_Required_Self_Inverse4Id20] AS [OneToMany_Required_Self_Inverse4Id200], [t0].[OneToOne_Optional_PK_Inverse4Id10] AS [OneToOne_Optional_PK_Inverse4Id100], [t0].[OneToOne_Optional_PK_Inverse4Id20] AS [OneToOne_Optional_PK_Inverse4Id200], [t0].[OneToOne_Optional_Self4Id10] AS [OneToOne_Optional_Self4Id100], [t0].[OneToOne_Optional_Self4Id20] AS [OneToOne_Optional_Self4Id200], [c0].[OneToMany_Optional_Inverse2Id1], [c0].[OneToMany_Optional_Inverse2Id2] @@ -115,22 +115,22 @@ FROM [CompositeThrees] AS [c4] ) AS [t0] ON [c0].[Id1] = [t0].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [t0].[OneToMany_Optional_Inverse3Id2] ) AS [t1] ON [c].[Id1] = [t1].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [t1].[OneToMany_Optional_Inverse2Id2] LEFT JOIN ( - SELECT [c7].[Name], [c7].[Id1], [c7].[Id2], [t3].[Name] AS [Name0], [t3].[Id1] AS [Id10], [t3].[Id2] AS [Id20], [t3].[Id10] AS [Id100], [t3].[Id20] AS [Id200], [t3].[Level3_Optional_Id1], [t3].[Level3_Optional_Id2], [t3].[Level3_Required_Id1], [t3].[Level3_Required_Id2], [t3].[Name0] AS [Name00], [t3].[OneToMany_Optional_Inverse4Id1], [t3].[OneToMany_Optional_Inverse4Id2], [t3].[OneToMany_Optional_Self_Inverse4Id1], [t3].[OneToMany_Optional_Self_Inverse4Id2], [t3].[OneToMany_Required_Inverse4Id1], [t3].[OneToMany_Required_Inverse4Id2], [t3].[OneToMany_Required_Self_Inverse4Id1], [t3].[OneToMany_Required_Self_Inverse4Id2], [t3].[OneToOne_Optional_PK_Inverse4Id1], [t3].[OneToOne_Optional_PK_Inverse4Id2], [t3].[OneToOne_Optional_Self4Id1], [t3].[OneToOne_Optional_Self4Id2], [t3].[Id11], [t3].[Id21], [t3].[Level3_Optional_Id10], [t3].[Level3_Optional_Id20], [t3].[Level3_Required_Id10], [t3].[Level3_Required_Id20], [t3].[Name1], [t3].[OneToMany_Optional_Inverse4Id10], [t3].[OneToMany_Optional_Inverse4Id20], [t3].[OneToMany_Optional_Self_Inverse4Id10], [t3].[OneToMany_Optional_Self_Inverse4Id20], [t3].[OneToMany_Required_Inverse4Id10], [t3].[OneToMany_Required_Inverse4Id20], [t3].[OneToMany_Required_Self_Inverse4Id10], [t3].[OneToMany_Required_Self_Inverse4Id20], [t3].[OneToOne_Optional_PK_Inverse4Id10], [t3].[OneToOne_Optional_PK_Inverse4Id20], [t3].[OneToOne_Optional_Self4Id10], [t3].[OneToOne_Optional_Self4Id20], [t4].[Name] AS [Name2], [t4].[Id1] AS [Id12], [t4].[Id2] AS [Id22], [t4].[Id10] AS [Id101], [t4].[Id20] AS [Id201], [t4].[Level3_Optional_Id1] AS [Level3_Optional_Id11], [t4].[Level3_Optional_Id2] AS [Level3_Optional_Id21], [t4].[Level3_Required_Id1] AS [Level3_Required_Id11], [t4].[Level3_Required_Id2] AS [Level3_Required_Id21], [t4].[Name0] AS [Name01], [t4].[OneToMany_Optional_Inverse4Id1] AS [OneToMany_Optional_Inverse4Id11], [t4].[OneToMany_Optional_Inverse4Id2] AS [OneToMany_Optional_Inverse4Id21], [t4].[OneToMany_Optional_Self_Inverse4Id1] AS [OneToMany_Optional_Self_Inverse4Id11], [t4].[OneToMany_Optional_Self_Inverse4Id2] AS [OneToMany_Optional_Self_Inverse4Id21], [t4].[OneToMany_Required_Inverse4Id1] AS [OneToMany_Required_Inverse4Id11], [t4].[OneToMany_Required_Inverse4Id2] AS [OneToMany_Required_Inverse4Id21], [t4].[OneToMany_Required_Self_Inverse4Id1] AS [OneToMany_Required_Self_Inverse4Id11], [t4].[OneToMany_Required_Self_Inverse4Id2] AS [OneToMany_Required_Self_Inverse4Id21], [t4].[OneToOne_Optional_PK_Inverse4Id1] AS [OneToOne_Optional_PK_Inverse4Id11], [t4].[OneToOne_Optional_PK_Inverse4Id2] AS [OneToOne_Optional_PK_Inverse4Id21], [t4].[OneToOne_Optional_Self4Id1] AS [OneToOne_Optional_Self4Id11], [t4].[OneToOne_Optional_Self4Id2] AS [OneToOne_Optional_Self4Id21], [t4].[Id11] AS [Id110], [t4].[Id21] AS [Id210], [t4].[Level3_Optional_Id10] AS [Level3_Optional_Id100], [t4].[Level3_Optional_Id20] AS [Level3_Optional_Id200], [t4].[Level3_Required_Id10] AS [Level3_Required_Id100], [t4].[Level3_Required_Id20] AS [Level3_Required_Id200], [t4].[Name1] AS [Name10], [t4].[OneToMany_Optional_Inverse4Id10] AS [OneToMany_Optional_Inverse4Id100], [t4].[OneToMany_Optional_Inverse4Id20] AS [OneToMany_Optional_Inverse4Id200], [t4].[OneToMany_Optional_Self_Inverse4Id10] AS [OneToMany_Optional_Self_Inverse4Id100], [t4].[OneToMany_Optional_Self_Inverse4Id20] AS [OneToMany_Optional_Self_Inverse4Id200], [t4].[OneToMany_Required_Inverse4Id10] AS [OneToMany_Required_Inverse4Id100], [t4].[OneToMany_Required_Inverse4Id20] AS [OneToMany_Required_Inverse4Id200], [t4].[OneToMany_Required_Self_Inverse4Id10] AS [OneToMany_Required_Self_Inverse4Id100], [t4].[OneToMany_Required_Self_Inverse4Id20] AS [OneToMany_Required_Self_Inverse4Id200], [t4].[OneToOne_Optional_PK_Inverse4Id10] AS [OneToOne_Optional_PK_Inverse4Id100], [t4].[OneToOne_Optional_PK_Inverse4Id20] AS [OneToOne_Optional_PK_Inverse4Id200], [t4].[OneToOne_Optional_Self4Id10] AS [OneToOne_Optional_Self4Id100], [t4].[OneToOne_Optional_Self4Id20] AS [OneToOne_Optional_Self4Id200], [c7].[OneToMany_Required_Inverse2Id1], [c7].[OneToMany_Required_Inverse2Id2] + SELECT [c7].[Name], [c7].[Id1], [c7].[Id2], [t2].[Name] AS [Name0], [t2].[Id1] AS [Id10], [t2].[Id2] AS [Id20], [t2].[Id10] AS [Id100], [t2].[Id20] AS [Id200], [t2].[Level3_Optional_Id1], [t2].[Level3_Optional_Id2], [t2].[Level3_Required_Id1], [t2].[Level3_Required_Id2], [t2].[Name0] AS [Name00], [t2].[OneToMany_Optional_Inverse4Id1], [t2].[OneToMany_Optional_Inverse4Id2], [t2].[OneToMany_Optional_Self_Inverse4Id1], [t2].[OneToMany_Optional_Self_Inverse4Id2], [t2].[OneToMany_Required_Inverse4Id1], [t2].[OneToMany_Required_Inverse4Id2], [t2].[OneToMany_Required_Self_Inverse4Id1], [t2].[OneToMany_Required_Self_Inverse4Id2], [t2].[OneToOne_Optional_PK_Inverse4Id1], [t2].[OneToOne_Optional_PK_Inverse4Id2], [t2].[OneToOne_Optional_Self4Id1], [t2].[OneToOne_Optional_Self4Id2], [t2].[Id11], [t2].[Id21], [t2].[Level3_Optional_Id10], [t2].[Level3_Optional_Id20], [t2].[Level3_Required_Id10], [t2].[Level3_Required_Id20], [t2].[Name1], [t2].[OneToMany_Optional_Inverse4Id10], [t2].[OneToMany_Optional_Inverse4Id20], [t2].[OneToMany_Optional_Self_Inverse4Id10], [t2].[OneToMany_Optional_Self_Inverse4Id20], [t2].[OneToMany_Required_Inverse4Id10], [t2].[OneToMany_Required_Inverse4Id20], [t2].[OneToMany_Required_Self_Inverse4Id10], [t2].[OneToMany_Required_Self_Inverse4Id20], [t2].[OneToOne_Optional_PK_Inverse4Id10], [t2].[OneToOne_Optional_PK_Inverse4Id20], [t2].[OneToOne_Optional_Self4Id10], [t2].[OneToOne_Optional_Self4Id20], [t3].[Name] AS [Name2], [t3].[Id1] AS [Id12], [t3].[Id2] AS [Id22], [t3].[Id10] AS [Id101], [t3].[Id20] AS [Id201], [t3].[Level3_Optional_Id1] AS [Level3_Optional_Id11], [t3].[Level3_Optional_Id2] AS [Level3_Optional_Id21], [t3].[Level3_Required_Id1] AS [Level3_Required_Id11], [t3].[Level3_Required_Id2] AS [Level3_Required_Id21], [t3].[Name0] AS [Name01], [t3].[OneToMany_Optional_Inverse4Id1] AS [OneToMany_Optional_Inverse4Id11], [t3].[OneToMany_Optional_Inverse4Id2] AS [OneToMany_Optional_Inverse4Id21], [t3].[OneToMany_Optional_Self_Inverse4Id1] AS [OneToMany_Optional_Self_Inverse4Id11], [t3].[OneToMany_Optional_Self_Inverse4Id2] AS [OneToMany_Optional_Self_Inverse4Id21], [t3].[OneToMany_Required_Inverse4Id1] AS [OneToMany_Required_Inverse4Id11], [t3].[OneToMany_Required_Inverse4Id2] AS [OneToMany_Required_Inverse4Id21], [t3].[OneToMany_Required_Self_Inverse4Id1] AS [OneToMany_Required_Self_Inverse4Id11], [t3].[OneToMany_Required_Self_Inverse4Id2] AS [OneToMany_Required_Self_Inverse4Id21], [t3].[OneToOne_Optional_PK_Inverse4Id1] AS [OneToOne_Optional_PK_Inverse4Id11], [t3].[OneToOne_Optional_PK_Inverse4Id2] AS [OneToOne_Optional_PK_Inverse4Id21], [t3].[OneToOne_Optional_Self4Id1] AS [OneToOne_Optional_Self4Id11], [t3].[OneToOne_Optional_Self4Id2] AS [OneToOne_Optional_Self4Id21], [t3].[Id11] AS [Id110], [t3].[Id21] AS [Id210], [t3].[Level3_Optional_Id10] AS [Level3_Optional_Id100], [t3].[Level3_Optional_Id20] AS [Level3_Optional_Id200], [t3].[Level3_Required_Id10] AS [Level3_Required_Id100], [t3].[Level3_Required_Id20] AS [Level3_Required_Id200], [t3].[Name1] AS [Name10], [t3].[OneToMany_Optional_Inverse4Id10] AS [OneToMany_Optional_Inverse4Id100], [t3].[OneToMany_Optional_Inverse4Id20] AS [OneToMany_Optional_Inverse4Id200], [t3].[OneToMany_Optional_Self_Inverse4Id10] AS [OneToMany_Optional_Self_Inverse4Id100], [t3].[OneToMany_Optional_Self_Inverse4Id20] AS [OneToMany_Optional_Self_Inverse4Id200], [t3].[OneToMany_Required_Inverse4Id10] AS [OneToMany_Required_Inverse4Id100], [t3].[OneToMany_Required_Inverse4Id20] AS [OneToMany_Required_Inverse4Id200], [t3].[OneToMany_Required_Self_Inverse4Id10] AS [OneToMany_Required_Self_Inverse4Id100], [t3].[OneToMany_Required_Self_Inverse4Id20] AS [OneToMany_Required_Self_Inverse4Id200], [t3].[OneToOne_Optional_PK_Inverse4Id10] AS [OneToOne_Optional_PK_Inverse4Id100], [t3].[OneToOne_Optional_PK_Inverse4Id20] AS [OneToOne_Optional_PK_Inverse4Id200], [t3].[OneToOne_Optional_Self4Id10] AS [OneToOne_Optional_Self4Id100], [t3].[OneToOne_Optional_Self4Id20] AS [OneToOne_Optional_Self4Id200], [c7].[OneToMany_Required_Inverse2Id1], [c7].[OneToMany_Required_Inverse2Id2] FROM [CompositeTwos] AS [c7] LEFT JOIN ( SELECT [c8].[Name], [c8].[Id1], [c8].[Id2], [c9].[Id1] AS [Id10], [c9].[Id2] AS [Id20], [c9].[Level3_Optional_Id1], [c9].[Level3_Optional_Id2], [c9].[Level3_Required_Id1], [c9].[Level3_Required_Id2], [c9].[Name] AS [Name0], [c9].[OneToMany_Optional_Inverse4Id1], [c9].[OneToMany_Optional_Inverse4Id2], [c9].[OneToMany_Optional_Self_Inverse4Id1], [c9].[OneToMany_Optional_Self_Inverse4Id2], [c9].[OneToMany_Required_Inverse4Id1], [c9].[OneToMany_Required_Inverse4Id2], [c9].[OneToMany_Required_Self_Inverse4Id1], [c9].[OneToMany_Required_Self_Inverse4Id2], [c9].[OneToOne_Optional_PK_Inverse4Id1], [c9].[OneToOne_Optional_PK_Inverse4Id2], [c9].[OneToOne_Optional_Self4Id1], [c9].[OneToOne_Optional_Self4Id2], [c10].[Id1] AS [Id11], [c10].[Id2] AS [Id21], [c10].[Level3_Optional_Id1] AS [Level3_Optional_Id10], [c10].[Level3_Optional_Id2] AS [Level3_Optional_Id20], [c10].[Level3_Required_Id1] AS [Level3_Required_Id10], [c10].[Level3_Required_Id2] AS [Level3_Required_Id20], [c10].[Name] AS [Name1], [c10].[OneToMany_Optional_Inverse4Id1] AS [OneToMany_Optional_Inverse4Id10], [c10].[OneToMany_Optional_Inverse4Id2] AS [OneToMany_Optional_Inverse4Id20], [c10].[OneToMany_Optional_Self_Inverse4Id1] AS [OneToMany_Optional_Self_Inverse4Id10], [c10].[OneToMany_Optional_Self_Inverse4Id2] AS [OneToMany_Optional_Self_Inverse4Id20], [c10].[OneToMany_Required_Inverse4Id1] AS [OneToMany_Required_Inverse4Id10], [c10].[OneToMany_Required_Inverse4Id2] AS [OneToMany_Required_Inverse4Id20], [c10].[OneToMany_Required_Self_Inverse4Id1] AS [OneToMany_Required_Self_Inverse4Id10], [c10].[OneToMany_Required_Self_Inverse4Id2] AS [OneToMany_Required_Self_Inverse4Id20], [c10].[OneToOne_Optional_PK_Inverse4Id1] AS [OneToOne_Optional_PK_Inverse4Id10], [c10].[OneToOne_Optional_PK_Inverse4Id2] AS [OneToOne_Optional_PK_Inverse4Id20], [c10].[OneToOne_Optional_Self4Id1] AS [OneToOne_Optional_Self4Id10], [c10].[OneToOne_Optional_Self4Id2] AS [OneToOne_Optional_Self4Id20], [c8].[OneToMany_Optional_Inverse3Id1], [c8].[OneToMany_Optional_Inverse3Id2] FROM [CompositeThrees] AS [c8] LEFT JOIN [CompositeFours] AS [c9] ON [c8].[Id1] = [c9].[OneToMany_Required_Inverse4Id1] AND [c8].[Id2] = [c9].[OneToMany_Required_Inverse4Id2] LEFT JOIN [CompositeFours] AS [c10] ON [c8].[Id1] = [c10].[OneToMany_Optional_Inverse4Id1] AND [c8].[Id2] = [c10].[OneToMany_Optional_Inverse4Id2] - ) AS [t3] ON [c7].[Id1] = [t3].[OneToMany_Optional_Inverse3Id1] AND [c7].[Id2] = [t3].[OneToMany_Optional_Inverse3Id2] + ) AS [t2] ON [c7].[Id1] = [t2].[OneToMany_Optional_Inverse3Id1] AND [c7].[Id2] = [t2].[OneToMany_Optional_Inverse3Id2] LEFT JOIN ( SELECT [c11].[Name], [c11].[Id1], [c11].[Id2], [c12].[Id1] AS [Id10], [c12].[Id2] AS [Id20], [c12].[Level3_Optional_Id1], [c12].[Level3_Optional_Id2], [c12].[Level3_Required_Id1], [c12].[Level3_Required_Id2], [c12].[Name] AS [Name0], [c12].[OneToMany_Optional_Inverse4Id1], [c12].[OneToMany_Optional_Inverse4Id2], [c12].[OneToMany_Optional_Self_Inverse4Id1], [c12].[OneToMany_Optional_Self_Inverse4Id2], [c12].[OneToMany_Required_Inverse4Id1], [c12].[OneToMany_Required_Inverse4Id2], [c12].[OneToMany_Required_Self_Inverse4Id1], [c12].[OneToMany_Required_Self_Inverse4Id2], [c12].[OneToOne_Optional_PK_Inverse4Id1], [c12].[OneToOne_Optional_PK_Inverse4Id2], [c12].[OneToOne_Optional_Self4Id1], [c12].[OneToOne_Optional_Self4Id2], [c13].[Id1] AS [Id11], [c13].[Id2] AS [Id21], [c13].[Level3_Optional_Id1] AS [Level3_Optional_Id10], [c13].[Level3_Optional_Id2] AS [Level3_Optional_Id20], [c13].[Level3_Required_Id1] AS [Level3_Required_Id10], [c13].[Level3_Required_Id2] AS [Level3_Required_Id20], [c13].[Name] AS [Name1], [c13].[OneToMany_Optional_Inverse4Id1] AS [OneToMany_Optional_Inverse4Id10], [c13].[OneToMany_Optional_Inverse4Id2] AS [OneToMany_Optional_Inverse4Id20], [c13].[OneToMany_Optional_Self_Inverse4Id1] AS [OneToMany_Optional_Self_Inverse4Id10], [c13].[OneToMany_Optional_Self_Inverse4Id2] AS [OneToMany_Optional_Self_Inverse4Id20], [c13].[OneToMany_Required_Inverse4Id1] AS [OneToMany_Required_Inverse4Id10], [c13].[OneToMany_Required_Inverse4Id2] AS [OneToMany_Required_Inverse4Id20], [c13].[OneToMany_Required_Self_Inverse4Id1] AS [OneToMany_Required_Self_Inverse4Id10], [c13].[OneToMany_Required_Self_Inverse4Id2] AS [OneToMany_Required_Self_Inverse4Id20], [c13].[OneToOne_Optional_PK_Inverse4Id1] AS [OneToOne_Optional_PK_Inverse4Id10], [c13].[OneToOne_Optional_PK_Inverse4Id2] AS [OneToOne_Optional_PK_Inverse4Id20], [c13].[OneToOne_Optional_Self4Id1] AS [OneToOne_Optional_Self4Id10], [c13].[OneToOne_Optional_Self4Id2] AS [OneToOne_Optional_Self4Id20], [c11].[OneToMany_Optional_Inverse3Id1], [c11].[OneToMany_Optional_Inverse3Id2] FROM [CompositeThrees] AS [c11] LEFT JOIN [CompositeFours] AS [c12] ON [c11].[Id1] = [c12].[OneToMany_Optional_Inverse4Id1] AND [c11].[Id2] = [c12].[OneToMany_Optional_Inverse4Id2] LEFT JOIN [CompositeFours] AS [c13] ON [c11].[Id1] = [c13].[OneToMany_Required_Inverse4Id1] AND [c11].[Id2] = [c13].[OneToMany_Required_Inverse4Id2] - ) AS [t4] ON [c7].[Id1] = [t4].[OneToMany_Optional_Inverse3Id1] AND [c7].[Id2] = [t4].[OneToMany_Optional_Inverse3Id2] -) AS [t2] ON [c].[Id1] = [t2].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [t2].[OneToMany_Required_Inverse2Id2] -ORDER BY [c].[Id1], [c].[Id2], [t1].[Id1], [t1].[Id2], [t1].[Id10], [t1].[Id20], [t1].[Id100], [t1].[Id200], [t1].[Id11], [t1].[Id21], [t1].[Id12], [t1].[Id22], [t1].[Id101], [t1].[Id201], [t1].[Id110], [t1].[Id210], [t2].[Id1], [t2].[Id2], [t2].[Id10], [t2].[Id20], [t2].[Id100], [t2].[Id200], [t2].[Id11], [t2].[Id21], [t2].[Id12], [t2].[Id22], [t2].[Id101], [t2].[Id201], [t2].[Id110] + ) AS [t3] ON [c7].[Id1] = [t3].[OneToMany_Optional_Inverse3Id1] AND [c7].[Id2] = [t3].[OneToMany_Optional_Inverse3Id2] +) AS [t4] ON [c].[Id1] = [t4].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [t4].[OneToMany_Required_Inverse2Id2] +ORDER BY [c].[Id1], [c].[Id2], [t1].[Id1], [t1].[Id2], [t1].[Id10], [t1].[Id20], [t1].[Id100], [t1].[Id200], [t1].[Id11], [t1].[Id21], [t1].[Id12], [t1].[Id22], [t1].[Id101], [t1].[Id201], [t1].[Id110], [t1].[Id210], [t4].[Id1], [t4].[Id2], [t4].[Id10], [t4].[Id20], [t4].[Id100], [t4].[Id200], [t4].[Id11], [t4].[Id21], [t4].[Id12], [t4].[Id22], [t4].[Id101], [t4].[Id201], [t4].[Id110] """); } @@ -140,7 +140,7 @@ public override async Task Projecting_multiple_collections_on_multiple_levels_so AssertSql( """ -SELECT [c].[Id1], [c].[Id2], [t1].[Name], [t1].[Id1], [t1].[Id2], [t1].[Id10], [t1].[Id20], [t1].[Id100], [t1].[Id200], [t1].[Level3_Optional_Id1], [t1].[Level3_Optional_Id2], [t1].[Level3_Required_Id1], [t1].[Level3_Required_Id2], [t1].[Name0], [t1].[OneToMany_Optional_Inverse4Id1], [t1].[OneToMany_Optional_Inverse4Id2], [t1].[OneToMany_Optional_Self_Inverse4Id1], [t1].[OneToMany_Optional_Self_Inverse4Id2], [t1].[OneToMany_Required_Inverse4Id1], [t1].[OneToMany_Required_Inverse4Id2], [t1].[OneToMany_Required_Self_Inverse4Id1], [t1].[OneToMany_Required_Self_Inverse4Id2], [t1].[OneToOne_Optional_PK_Inverse4Id1], [t1].[OneToOne_Optional_PK_Inverse4Id2], [t1].[OneToOne_Optional_Self4Id1], [t1].[OneToOne_Optional_Self4Id2], [t1].[Id11], [t1].[Id21], [t1].[Level3_Optional_Id10], [t1].[Level3_Optional_Id20], [t1].[Level3_Required_Id10], [t1].[Level3_Required_Id20], [t1].[Name00], [t1].[OneToMany_Optional_Inverse4Id10], [t1].[OneToMany_Optional_Inverse4Id20], [t1].[OneToMany_Optional_Self_Inverse4Id10], [t1].[OneToMany_Optional_Self_Inverse4Id20], [t1].[OneToMany_Required_Inverse4Id10], [t1].[OneToMany_Required_Inverse4Id20], [t1].[OneToMany_Required_Self_Inverse4Id10], [t1].[OneToMany_Required_Self_Inverse4Id20], [t1].[OneToOne_Optional_PK_Inverse4Id10], [t1].[OneToOne_Optional_PK_Inverse4Id20], [t1].[OneToOne_Optional_Self4Id10], [t1].[OneToOne_Optional_Self4Id20], [t1].[Name1], [t1].[Id12], [t1].[Id22], [t1].[Id101], [t1].[Id201], [t1].[Level3_Optional_Id11], [t1].[Level3_Optional_Id21], [t1].[Level3_Required_Id11], [t1].[Level3_Required_Id21], [t1].[Name01], [t1].[OneToMany_Optional_Inverse4Id11], [t1].[OneToMany_Optional_Inverse4Id21], [t1].[OneToMany_Optional_Self_Inverse4Id11], [t1].[OneToMany_Optional_Self_Inverse4Id21], [t1].[OneToMany_Required_Inverse4Id11], [t1].[OneToMany_Required_Inverse4Id21], [t1].[OneToMany_Required_Self_Inverse4Id11], [t1].[OneToMany_Required_Self_Inverse4Id21], [t1].[OneToOne_Optional_PK_Inverse4Id11], [t1].[OneToOne_Optional_PK_Inverse4Id21], [t1].[OneToOne_Optional_Self4Id11], [t1].[OneToOne_Optional_Self4Id21], [t1].[Id110], [t1].[Id210], [t1].[Level3_Optional_Id100], [t1].[Level3_Optional_Id200], [t1].[Level3_Required_Id100], [t1].[Level3_Required_Id200], [t1].[Name10], [t1].[OneToMany_Optional_Inverse4Id100], [t1].[OneToMany_Optional_Inverse4Id200], [t1].[OneToMany_Optional_Self_Inverse4Id100], [t1].[OneToMany_Optional_Self_Inverse4Id200], [t1].[OneToMany_Required_Inverse4Id100], [t1].[OneToMany_Required_Inverse4Id200], [t1].[OneToMany_Required_Self_Inverse4Id100], [t1].[OneToMany_Required_Self_Inverse4Id200], [t1].[OneToOne_Optional_PK_Inverse4Id100], [t1].[OneToOne_Optional_PK_Inverse4Id200], [t1].[OneToOne_Optional_Self4Id100], [t1].[OneToOne_Optional_Self4Id200], [t2].[Name], [t2].[Id1], [t2].[Id2], [t2].[Name0], [t2].[Id10], [t2].[Id20], [t2].[Id100], [t2].[Id200], [t2].[Level3_Optional_Id1], [t2].[Level3_Optional_Id2], [t2].[Level3_Required_Id1], [t2].[Level3_Required_Id2], [t2].[Name00], [t2].[OneToMany_Optional_Inverse4Id1], [t2].[OneToMany_Optional_Inverse4Id2], [t2].[OneToMany_Optional_Self_Inverse4Id1], [t2].[OneToMany_Optional_Self_Inverse4Id2], [t2].[OneToMany_Required_Inverse4Id1], [t2].[OneToMany_Required_Inverse4Id2], [t2].[OneToMany_Required_Self_Inverse4Id1], [t2].[OneToMany_Required_Self_Inverse4Id2], [t2].[OneToOne_Optional_PK_Inverse4Id1], [t2].[OneToOne_Optional_PK_Inverse4Id2], [t2].[OneToOne_Optional_Self4Id1], [t2].[OneToOne_Optional_Self4Id2], [t2].[Id11], [t2].[Id21], [t2].[Level3_Optional_Id10], [t2].[Level3_Optional_Id20], [t2].[Level3_Required_Id10], [t2].[Level3_Required_Id20], [t2].[Name1], [t2].[OneToMany_Optional_Inverse4Id10], [t2].[OneToMany_Optional_Inverse4Id20], [t2].[OneToMany_Optional_Self_Inverse4Id10], [t2].[OneToMany_Optional_Self_Inverse4Id20], [t2].[OneToMany_Required_Inverse4Id10], [t2].[OneToMany_Required_Inverse4Id20], [t2].[OneToMany_Required_Self_Inverse4Id10], [t2].[OneToMany_Required_Self_Inverse4Id20], [t2].[OneToOne_Optional_PK_Inverse4Id10], [t2].[OneToOne_Optional_PK_Inverse4Id20], [t2].[OneToOne_Optional_Self4Id10], [t2].[OneToOne_Optional_Self4Id20], [t2].[Name2], [t2].[Id12], [t2].[Id22], [t2].[Id101], [t2].[Id201], [t2].[Level3_Optional_Id11], [t2].[Level3_Optional_Id21], [t2].[Level3_Required_Id11], [t2].[Level3_Required_Id21], [t2].[Name01], [t2].[OneToMany_Optional_Inverse4Id11], [t2].[OneToMany_Optional_Inverse4Id21], [t2].[OneToMany_Optional_Self_Inverse4Id11], [t2].[OneToMany_Optional_Self_Inverse4Id21], [t2].[OneToMany_Required_Inverse4Id11], [t2].[OneToMany_Required_Inverse4Id21], [t2].[OneToMany_Required_Self_Inverse4Id11], [t2].[OneToMany_Required_Self_Inverse4Id21], [t2].[OneToOne_Optional_PK_Inverse4Id11], [t2].[OneToOne_Optional_PK_Inverse4Id21], [t2].[OneToOne_Optional_Self4Id11], [t2].[OneToOne_Optional_Self4Id21], [t2].[Id110], [t2].[Id210], [t2].[Level3_Optional_Id100], [t2].[Level3_Optional_Id200], [t2].[Level3_Required_Id100], [t2].[Level3_Required_Id200], [t2].[Name10], [t2].[OneToMany_Optional_Inverse4Id100], [t2].[OneToMany_Optional_Inverse4Id200], [t2].[OneToMany_Optional_Self_Inverse4Id100], [t2].[OneToMany_Optional_Self_Inverse4Id200], [t2].[OneToMany_Required_Inverse4Id100], [t2].[OneToMany_Required_Inverse4Id200], [t2].[OneToMany_Required_Self_Inverse4Id100], [t2].[OneToMany_Required_Self_Inverse4Id200], [t2].[OneToOne_Optional_PK_Inverse4Id100], [t2].[OneToOne_Optional_PK_Inverse4Id200], [t2].[OneToOne_Optional_Self4Id100], [t2].[OneToOne_Optional_Self4Id200] +SELECT [c].[Id1], [c].[Id2], [t1].[Name], [t1].[Id1], [t1].[Id2], [t1].[Id10], [t1].[Id20], [t1].[Id100], [t1].[Id200], [t1].[Level3_Optional_Id1], [t1].[Level3_Optional_Id2], [t1].[Level3_Required_Id1], [t1].[Level3_Required_Id2], [t1].[Name0], [t1].[OneToMany_Optional_Inverse4Id1], [t1].[OneToMany_Optional_Inverse4Id2], [t1].[OneToMany_Optional_Self_Inverse4Id1], [t1].[OneToMany_Optional_Self_Inverse4Id2], [t1].[OneToMany_Required_Inverse4Id1], [t1].[OneToMany_Required_Inverse4Id2], [t1].[OneToMany_Required_Self_Inverse4Id1], [t1].[OneToMany_Required_Self_Inverse4Id2], [t1].[OneToOne_Optional_PK_Inverse4Id1], [t1].[OneToOne_Optional_PK_Inverse4Id2], [t1].[OneToOne_Optional_Self4Id1], [t1].[OneToOne_Optional_Self4Id2], [t1].[Id11], [t1].[Id21], [t1].[Level3_Optional_Id10], [t1].[Level3_Optional_Id20], [t1].[Level3_Required_Id10], [t1].[Level3_Required_Id20], [t1].[Name00], [t1].[OneToMany_Optional_Inverse4Id10], [t1].[OneToMany_Optional_Inverse4Id20], [t1].[OneToMany_Optional_Self_Inverse4Id10], [t1].[OneToMany_Optional_Self_Inverse4Id20], [t1].[OneToMany_Required_Inverse4Id10], [t1].[OneToMany_Required_Inverse4Id20], [t1].[OneToMany_Required_Self_Inverse4Id10], [t1].[OneToMany_Required_Self_Inverse4Id20], [t1].[OneToOne_Optional_PK_Inverse4Id10], [t1].[OneToOne_Optional_PK_Inverse4Id20], [t1].[OneToOne_Optional_Self4Id10], [t1].[OneToOne_Optional_Self4Id20], [t1].[Name1], [t1].[Id12], [t1].[Id22], [t1].[Id101], [t1].[Id201], [t1].[Level3_Optional_Id11], [t1].[Level3_Optional_Id21], [t1].[Level3_Required_Id11], [t1].[Level3_Required_Id21], [t1].[Name01], [t1].[OneToMany_Optional_Inverse4Id11], [t1].[OneToMany_Optional_Inverse4Id21], [t1].[OneToMany_Optional_Self_Inverse4Id11], [t1].[OneToMany_Optional_Self_Inverse4Id21], [t1].[OneToMany_Required_Inverse4Id11], [t1].[OneToMany_Required_Inverse4Id21], [t1].[OneToMany_Required_Self_Inverse4Id11], [t1].[OneToMany_Required_Self_Inverse4Id21], [t1].[OneToOne_Optional_PK_Inverse4Id11], [t1].[OneToOne_Optional_PK_Inverse4Id21], [t1].[OneToOne_Optional_Self4Id11], [t1].[OneToOne_Optional_Self4Id21], [t1].[Id110], [t1].[Id210], [t1].[Level3_Optional_Id100], [t1].[Level3_Optional_Id200], [t1].[Level3_Required_Id100], [t1].[Level3_Required_Id200], [t1].[Name10], [t1].[OneToMany_Optional_Inverse4Id100], [t1].[OneToMany_Optional_Inverse4Id200], [t1].[OneToMany_Optional_Self_Inverse4Id100], [t1].[OneToMany_Optional_Self_Inverse4Id200], [t1].[OneToMany_Required_Inverse4Id100], [t1].[OneToMany_Required_Inverse4Id200], [t1].[OneToMany_Required_Self_Inverse4Id100], [t1].[OneToMany_Required_Self_Inverse4Id200], [t1].[OneToOne_Optional_PK_Inverse4Id100], [t1].[OneToOne_Optional_PK_Inverse4Id200], [t1].[OneToOne_Optional_Self4Id100], [t1].[OneToOne_Optional_Self4Id200], [t4].[Name], [t4].[Id1], [t4].[Id2], [t4].[Name0], [t4].[Id10], [t4].[Id20], [t4].[Id100], [t4].[Id200], [t4].[Level3_Optional_Id1], [t4].[Level3_Optional_Id2], [t4].[Level3_Required_Id1], [t4].[Level3_Required_Id2], [t4].[Name00], [t4].[OneToMany_Optional_Inverse4Id1], [t4].[OneToMany_Optional_Inverse4Id2], [t4].[OneToMany_Optional_Self_Inverse4Id1], [t4].[OneToMany_Optional_Self_Inverse4Id2], [t4].[OneToMany_Required_Inverse4Id1], [t4].[OneToMany_Required_Inverse4Id2], [t4].[OneToMany_Required_Self_Inverse4Id1], [t4].[OneToMany_Required_Self_Inverse4Id2], [t4].[OneToOne_Optional_PK_Inverse4Id1], [t4].[OneToOne_Optional_PK_Inverse4Id2], [t4].[OneToOne_Optional_Self4Id1], [t4].[OneToOne_Optional_Self4Id2], [t4].[Id11], [t4].[Id21], [t4].[Level3_Optional_Id10], [t4].[Level3_Optional_Id20], [t4].[Level3_Required_Id10], [t4].[Level3_Required_Id20], [t4].[Name1], [t4].[OneToMany_Optional_Inverse4Id10], [t4].[OneToMany_Optional_Inverse4Id20], [t4].[OneToMany_Optional_Self_Inverse4Id10], [t4].[OneToMany_Optional_Self_Inverse4Id20], [t4].[OneToMany_Required_Inverse4Id10], [t4].[OneToMany_Required_Inverse4Id20], [t4].[OneToMany_Required_Self_Inverse4Id10], [t4].[OneToMany_Required_Self_Inverse4Id20], [t4].[OneToOne_Optional_PK_Inverse4Id10], [t4].[OneToOne_Optional_PK_Inverse4Id20], [t4].[OneToOne_Optional_Self4Id10], [t4].[OneToOne_Optional_Self4Id20], [t4].[Name2], [t4].[Id12], [t4].[Id22], [t4].[Id101], [t4].[Id201], [t4].[Level3_Optional_Id11], [t4].[Level3_Optional_Id21], [t4].[Level3_Required_Id11], [t4].[Level3_Required_Id21], [t4].[Name01], [t4].[OneToMany_Optional_Inverse4Id11], [t4].[OneToMany_Optional_Inverse4Id21], [t4].[OneToMany_Optional_Self_Inverse4Id11], [t4].[OneToMany_Optional_Self_Inverse4Id21], [t4].[OneToMany_Required_Inverse4Id11], [t4].[OneToMany_Required_Inverse4Id21], [t4].[OneToMany_Required_Self_Inverse4Id11], [t4].[OneToMany_Required_Self_Inverse4Id21], [t4].[OneToOne_Optional_PK_Inverse4Id11], [t4].[OneToOne_Optional_PK_Inverse4Id21], [t4].[OneToOne_Optional_Self4Id11], [t4].[OneToOne_Optional_Self4Id21], [t4].[Id110], [t4].[Id210], [t4].[Level3_Optional_Id100], [t4].[Level3_Optional_Id200], [t4].[Level3_Required_Id100], [t4].[Level3_Required_Id200], [t4].[Name10], [t4].[OneToMany_Optional_Inverse4Id100], [t4].[OneToMany_Optional_Inverse4Id200], [t4].[OneToMany_Optional_Self_Inverse4Id100], [t4].[OneToMany_Optional_Self_Inverse4Id200], [t4].[OneToMany_Required_Inverse4Id100], [t4].[OneToMany_Required_Inverse4Id200], [t4].[OneToMany_Required_Self_Inverse4Id100], [t4].[OneToMany_Required_Self_Inverse4Id200], [t4].[OneToOne_Optional_PK_Inverse4Id100], [t4].[OneToOne_Optional_PK_Inverse4Id200], [t4].[OneToOne_Optional_Self4Id100], [t4].[OneToOne_Optional_Self4Id200] FROM [CompositeOnes] AS [c] LEFT JOIN ( SELECT [c0].[Name], [c0].[Id1], [c0].[Id2], [t].[Id1] AS [Id10], [t].[Id2] AS [Id20], [t].[Id10] AS [Id100], [t].[Id20] AS [Id200], [t].[Level3_Optional_Id1], [t].[Level3_Optional_Id2], [t].[Level3_Required_Id1], [t].[Level3_Required_Id2], [t].[Name] AS [Name0], [t].[OneToMany_Optional_Inverse4Id1], [t].[OneToMany_Optional_Inverse4Id2], [t].[OneToMany_Optional_Self_Inverse4Id1], [t].[OneToMany_Optional_Self_Inverse4Id2], [t].[OneToMany_Required_Inverse4Id1], [t].[OneToMany_Required_Inverse4Id2], [t].[OneToMany_Required_Self_Inverse4Id1], [t].[OneToMany_Required_Self_Inverse4Id2], [t].[OneToOne_Optional_PK_Inverse4Id1], [t].[OneToOne_Optional_PK_Inverse4Id2], [t].[OneToOne_Optional_Self4Id1], [t].[OneToOne_Optional_Self4Id2], [t].[Id11], [t].[Id21], [t].[Level3_Optional_Id10], [t].[Level3_Optional_Id20], [t].[Level3_Required_Id10], [t].[Level3_Required_Id20], [t].[Name0] AS [Name00], [t].[OneToMany_Optional_Inverse4Id10], [t].[OneToMany_Optional_Inverse4Id20], [t].[OneToMany_Optional_Self_Inverse4Id10], [t].[OneToMany_Optional_Self_Inverse4Id20], [t].[OneToMany_Required_Inverse4Id10], [t].[OneToMany_Required_Inverse4Id20], [t].[OneToMany_Required_Self_Inverse4Id10], [t].[OneToMany_Required_Self_Inverse4Id20], [t].[OneToOne_Optional_PK_Inverse4Id10], [t].[OneToOne_Optional_PK_Inverse4Id20], [t].[OneToOne_Optional_Self4Id10], [t].[OneToOne_Optional_Self4Id20], [t0].[Name] AS [Name1], [t0].[Id1] AS [Id12], [t0].[Id2] AS [Id22], [t0].[Id10] AS [Id101], [t0].[Id20] AS [Id201], [t0].[Level3_Optional_Id1] AS [Level3_Optional_Id11], [t0].[Level3_Optional_Id2] AS [Level3_Optional_Id21], [t0].[Level3_Required_Id1] AS [Level3_Required_Id11], [t0].[Level3_Required_Id2] AS [Level3_Required_Id21], [t0].[Name0] AS [Name01], [t0].[OneToMany_Optional_Inverse4Id1] AS [OneToMany_Optional_Inverse4Id11], [t0].[OneToMany_Optional_Inverse4Id2] AS [OneToMany_Optional_Inverse4Id21], [t0].[OneToMany_Optional_Self_Inverse4Id1] AS [OneToMany_Optional_Self_Inverse4Id11], [t0].[OneToMany_Optional_Self_Inverse4Id2] AS [OneToMany_Optional_Self_Inverse4Id21], [t0].[OneToMany_Required_Inverse4Id1] AS [OneToMany_Required_Inverse4Id11], [t0].[OneToMany_Required_Inverse4Id2] AS [OneToMany_Required_Inverse4Id21], [t0].[OneToMany_Required_Self_Inverse4Id1] AS [OneToMany_Required_Self_Inverse4Id11], [t0].[OneToMany_Required_Self_Inverse4Id2] AS [OneToMany_Required_Self_Inverse4Id21], [t0].[OneToOne_Optional_PK_Inverse4Id1] AS [OneToOne_Optional_PK_Inverse4Id11], [t0].[OneToOne_Optional_PK_Inverse4Id2] AS [OneToOne_Optional_PK_Inverse4Id21], [t0].[OneToOne_Optional_Self4Id1] AS [OneToOne_Optional_Self4Id11], [t0].[OneToOne_Optional_Self4Id2] AS [OneToOne_Optional_Self4Id21], [t0].[Id11] AS [Id110], [t0].[Id21] AS [Id210], [t0].[Level3_Optional_Id10] AS [Level3_Optional_Id100], [t0].[Level3_Optional_Id20] AS [Level3_Optional_Id200], [t0].[Level3_Required_Id10] AS [Level3_Required_Id100], [t0].[Level3_Required_Id20] AS [Level3_Required_Id200], [t0].[Name1] AS [Name10], [t0].[OneToMany_Optional_Inverse4Id10] AS [OneToMany_Optional_Inverse4Id100], [t0].[OneToMany_Optional_Inverse4Id20] AS [OneToMany_Optional_Inverse4Id200], [t0].[OneToMany_Optional_Self_Inverse4Id10] AS [OneToMany_Optional_Self_Inverse4Id100], [t0].[OneToMany_Optional_Self_Inverse4Id20] AS [OneToMany_Optional_Self_Inverse4Id200], [t0].[OneToMany_Required_Inverse4Id10] AS [OneToMany_Required_Inverse4Id100], [t0].[OneToMany_Required_Inverse4Id20] AS [OneToMany_Required_Inverse4Id200], [t0].[OneToMany_Required_Self_Inverse4Id10] AS [OneToMany_Required_Self_Inverse4Id100], [t0].[OneToMany_Required_Self_Inverse4Id20] AS [OneToMany_Required_Self_Inverse4Id200], [t0].[OneToOne_Optional_PK_Inverse4Id10] AS [OneToOne_Optional_PK_Inverse4Id100], [t0].[OneToOne_Optional_PK_Inverse4Id20] AS [OneToOne_Optional_PK_Inverse4Id200], [t0].[OneToOne_Optional_Self4Id10] AS [OneToOne_Optional_Self4Id100], [t0].[OneToOne_Optional_Self4Id20] AS [OneToOne_Optional_Self4Id200], [c0].[OneToMany_Optional_Inverse2Id1], [c0].[OneToMany_Optional_Inverse2Id2] @@ -159,22 +159,22 @@ FROM [CompositeThrees] AS [c4] ) AS [t0] ON [c0].[Id1] = [t0].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [t0].[OneToMany_Optional_Inverse3Id2] ) AS [t1] ON [c].[Id1] = [t1].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [t1].[OneToMany_Optional_Inverse2Id2] LEFT JOIN ( - SELECT [c7].[Name], [c7].[Id1], [c7].[Id2], [t3].[Name] AS [Name0], [t3].[Id1] AS [Id10], [t3].[Id2] AS [Id20], [t3].[Id10] AS [Id100], [t3].[Id20] AS [Id200], [t3].[Level3_Optional_Id1], [t3].[Level3_Optional_Id2], [t3].[Level3_Required_Id1], [t3].[Level3_Required_Id2], [t3].[Name0] AS [Name00], [t3].[OneToMany_Optional_Inverse4Id1], [t3].[OneToMany_Optional_Inverse4Id2], [t3].[OneToMany_Optional_Self_Inverse4Id1], [t3].[OneToMany_Optional_Self_Inverse4Id2], [t3].[OneToMany_Required_Inverse4Id1], [t3].[OneToMany_Required_Inverse4Id2], [t3].[OneToMany_Required_Self_Inverse4Id1], [t3].[OneToMany_Required_Self_Inverse4Id2], [t3].[OneToOne_Optional_PK_Inverse4Id1], [t3].[OneToOne_Optional_PK_Inverse4Id2], [t3].[OneToOne_Optional_Self4Id1], [t3].[OneToOne_Optional_Self4Id2], [t3].[Id11], [t3].[Id21], [t3].[Level3_Optional_Id10], [t3].[Level3_Optional_Id20], [t3].[Level3_Required_Id10], [t3].[Level3_Required_Id20], [t3].[Name1], [t3].[OneToMany_Optional_Inverse4Id10], [t3].[OneToMany_Optional_Inverse4Id20], [t3].[OneToMany_Optional_Self_Inverse4Id10], [t3].[OneToMany_Optional_Self_Inverse4Id20], [t3].[OneToMany_Required_Inverse4Id10], [t3].[OneToMany_Required_Inverse4Id20], [t3].[OneToMany_Required_Self_Inverse4Id10], [t3].[OneToMany_Required_Self_Inverse4Id20], [t3].[OneToOne_Optional_PK_Inverse4Id10], [t3].[OneToOne_Optional_PK_Inverse4Id20], [t3].[OneToOne_Optional_Self4Id10], [t3].[OneToOne_Optional_Self4Id20], [t4].[Name] AS [Name2], [t4].[Id1] AS [Id12], [t4].[Id2] AS [Id22], [t4].[Id10] AS [Id101], [t4].[Id20] AS [Id201], [t4].[Level3_Optional_Id1] AS [Level3_Optional_Id11], [t4].[Level3_Optional_Id2] AS [Level3_Optional_Id21], [t4].[Level3_Required_Id1] AS [Level3_Required_Id11], [t4].[Level3_Required_Id2] AS [Level3_Required_Id21], [t4].[Name0] AS [Name01], [t4].[OneToMany_Optional_Inverse4Id1] AS [OneToMany_Optional_Inverse4Id11], [t4].[OneToMany_Optional_Inverse4Id2] AS [OneToMany_Optional_Inverse4Id21], [t4].[OneToMany_Optional_Self_Inverse4Id1] AS [OneToMany_Optional_Self_Inverse4Id11], [t4].[OneToMany_Optional_Self_Inverse4Id2] AS [OneToMany_Optional_Self_Inverse4Id21], [t4].[OneToMany_Required_Inverse4Id1] AS [OneToMany_Required_Inverse4Id11], [t4].[OneToMany_Required_Inverse4Id2] AS [OneToMany_Required_Inverse4Id21], [t4].[OneToMany_Required_Self_Inverse4Id1] AS [OneToMany_Required_Self_Inverse4Id11], [t4].[OneToMany_Required_Self_Inverse4Id2] AS [OneToMany_Required_Self_Inverse4Id21], [t4].[OneToOne_Optional_PK_Inverse4Id1] AS [OneToOne_Optional_PK_Inverse4Id11], [t4].[OneToOne_Optional_PK_Inverse4Id2] AS [OneToOne_Optional_PK_Inverse4Id21], [t4].[OneToOne_Optional_Self4Id1] AS [OneToOne_Optional_Self4Id11], [t4].[OneToOne_Optional_Self4Id2] AS [OneToOne_Optional_Self4Id21], [t4].[Id11] AS [Id110], [t4].[Id21] AS [Id210], [t4].[Level3_Optional_Id10] AS [Level3_Optional_Id100], [t4].[Level3_Optional_Id20] AS [Level3_Optional_Id200], [t4].[Level3_Required_Id10] AS [Level3_Required_Id100], [t4].[Level3_Required_Id20] AS [Level3_Required_Id200], [t4].[Name1] AS [Name10], [t4].[OneToMany_Optional_Inverse4Id10] AS [OneToMany_Optional_Inverse4Id100], [t4].[OneToMany_Optional_Inverse4Id20] AS [OneToMany_Optional_Inverse4Id200], [t4].[OneToMany_Optional_Self_Inverse4Id10] AS [OneToMany_Optional_Self_Inverse4Id100], [t4].[OneToMany_Optional_Self_Inverse4Id20] AS [OneToMany_Optional_Self_Inverse4Id200], [t4].[OneToMany_Required_Inverse4Id10] AS [OneToMany_Required_Inverse4Id100], [t4].[OneToMany_Required_Inverse4Id20] AS [OneToMany_Required_Inverse4Id200], [t4].[OneToMany_Required_Self_Inverse4Id10] AS [OneToMany_Required_Self_Inverse4Id100], [t4].[OneToMany_Required_Self_Inverse4Id20] AS [OneToMany_Required_Self_Inverse4Id200], [t4].[OneToOne_Optional_PK_Inverse4Id10] AS [OneToOne_Optional_PK_Inverse4Id100], [t4].[OneToOne_Optional_PK_Inverse4Id20] AS [OneToOne_Optional_PK_Inverse4Id200], [t4].[OneToOne_Optional_Self4Id10] AS [OneToOne_Optional_Self4Id100], [t4].[OneToOne_Optional_Self4Id20] AS [OneToOne_Optional_Self4Id200], CAST(LEN([c7].[Name]) AS int) AS [c], [t4].[c] AS [c0], [c7].[OneToMany_Required_Inverse2Id1], [c7].[OneToMany_Required_Inverse2Id2] + SELECT [c7].[Name], [c7].[Id1], [c7].[Id2], [t2].[Name] AS [Name0], [t2].[Id1] AS [Id10], [t2].[Id2] AS [Id20], [t2].[Id10] AS [Id100], [t2].[Id20] AS [Id200], [t2].[Level3_Optional_Id1], [t2].[Level3_Optional_Id2], [t2].[Level3_Required_Id1], [t2].[Level3_Required_Id2], [t2].[Name0] AS [Name00], [t2].[OneToMany_Optional_Inverse4Id1], [t2].[OneToMany_Optional_Inverse4Id2], [t2].[OneToMany_Optional_Self_Inverse4Id1], [t2].[OneToMany_Optional_Self_Inverse4Id2], [t2].[OneToMany_Required_Inverse4Id1], [t2].[OneToMany_Required_Inverse4Id2], [t2].[OneToMany_Required_Self_Inverse4Id1], [t2].[OneToMany_Required_Self_Inverse4Id2], [t2].[OneToOne_Optional_PK_Inverse4Id1], [t2].[OneToOne_Optional_PK_Inverse4Id2], [t2].[OneToOne_Optional_Self4Id1], [t2].[OneToOne_Optional_Self4Id2], [t2].[Id11], [t2].[Id21], [t2].[Level3_Optional_Id10], [t2].[Level3_Optional_Id20], [t2].[Level3_Required_Id10], [t2].[Level3_Required_Id20], [t2].[Name1], [t2].[OneToMany_Optional_Inverse4Id10], [t2].[OneToMany_Optional_Inverse4Id20], [t2].[OneToMany_Optional_Self_Inverse4Id10], [t2].[OneToMany_Optional_Self_Inverse4Id20], [t2].[OneToMany_Required_Inverse4Id10], [t2].[OneToMany_Required_Inverse4Id20], [t2].[OneToMany_Required_Self_Inverse4Id10], [t2].[OneToMany_Required_Self_Inverse4Id20], [t2].[OneToOne_Optional_PK_Inverse4Id10], [t2].[OneToOne_Optional_PK_Inverse4Id20], [t2].[OneToOne_Optional_Self4Id10], [t2].[OneToOne_Optional_Self4Id20], [t3].[Name] AS [Name2], [t3].[Id1] AS [Id12], [t3].[Id2] AS [Id22], [t3].[Id10] AS [Id101], [t3].[Id20] AS [Id201], [t3].[Level3_Optional_Id1] AS [Level3_Optional_Id11], [t3].[Level3_Optional_Id2] AS [Level3_Optional_Id21], [t3].[Level3_Required_Id1] AS [Level3_Required_Id11], [t3].[Level3_Required_Id2] AS [Level3_Required_Id21], [t3].[Name0] AS [Name01], [t3].[OneToMany_Optional_Inverse4Id1] AS [OneToMany_Optional_Inverse4Id11], [t3].[OneToMany_Optional_Inverse4Id2] AS [OneToMany_Optional_Inverse4Id21], [t3].[OneToMany_Optional_Self_Inverse4Id1] AS [OneToMany_Optional_Self_Inverse4Id11], [t3].[OneToMany_Optional_Self_Inverse4Id2] AS [OneToMany_Optional_Self_Inverse4Id21], [t3].[OneToMany_Required_Inverse4Id1] AS [OneToMany_Required_Inverse4Id11], [t3].[OneToMany_Required_Inverse4Id2] AS [OneToMany_Required_Inverse4Id21], [t3].[OneToMany_Required_Self_Inverse4Id1] AS [OneToMany_Required_Self_Inverse4Id11], [t3].[OneToMany_Required_Self_Inverse4Id2] AS [OneToMany_Required_Self_Inverse4Id21], [t3].[OneToOne_Optional_PK_Inverse4Id1] AS [OneToOne_Optional_PK_Inverse4Id11], [t3].[OneToOne_Optional_PK_Inverse4Id2] AS [OneToOne_Optional_PK_Inverse4Id21], [t3].[OneToOne_Optional_Self4Id1] AS [OneToOne_Optional_Self4Id11], [t3].[OneToOne_Optional_Self4Id2] AS [OneToOne_Optional_Self4Id21], [t3].[Id11] AS [Id110], [t3].[Id21] AS [Id210], [t3].[Level3_Optional_Id10] AS [Level3_Optional_Id100], [t3].[Level3_Optional_Id20] AS [Level3_Optional_Id200], [t3].[Level3_Required_Id10] AS [Level3_Required_Id100], [t3].[Level3_Required_Id20] AS [Level3_Required_Id200], [t3].[Name1] AS [Name10], [t3].[OneToMany_Optional_Inverse4Id10] AS [OneToMany_Optional_Inverse4Id100], [t3].[OneToMany_Optional_Inverse4Id20] AS [OneToMany_Optional_Inverse4Id200], [t3].[OneToMany_Optional_Self_Inverse4Id10] AS [OneToMany_Optional_Self_Inverse4Id100], [t3].[OneToMany_Optional_Self_Inverse4Id20] AS [OneToMany_Optional_Self_Inverse4Id200], [t3].[OneToMany_Required_Inverse4Id10] AS [OneToMany_Required_Inverse4Id100], [t3].[OneToMany_Required_Inverse4Id20] AS [OneToMany_Required_Inverse4Id200], [t3].[OneToMany_Required_Self_Inverse4Id10] AS [OneToMany_Required_Self_Inverse4Id100], [t3].[OneToMany_Required_Self_Inverse4Id20] AS [OneToMany_Required_Self_Inverse4Id200], [t3].[OneToOne_Optional_PK_Inverse4Id10] AS [OneToOne_Optional_PK_Inverse4Id100], [t3].[OneToOne_Optional_PK_Inverse4Id20] AS [OneToOne_Optional_PK_Inverse4Id200], [t3].[OneToOne_Optional_Self4Id10] AS [OneToOne_Optional_Self4Id100], [t3].[OneToOne_Optional_Self4Id20] AS [OneToOne_Optional_Self4Id200], CAST(LEN([c7].[Name]) AS int) AS [c], [t3].[c] AS [c0], [c7].[OneToMany_Required_Inverse2Id1], [c7].[OneToMany_Required_Inverse2Id2] FROM [CompositeTwos] AS [c7] LEFT JOIN ( SELECT [c8].[Name], [c8].[Id1], [c8].[Id2], [c9].[Id1] AS [Id10], [c9].[Id2] AS [Id20], [c9].[Level3_Optional_Id1], [c9].[Level3_Optional_Id2], [c9].[Level3_Required_Id1], [c9].[Level3_Required_Id2], [c9].[Name] AS [Name0], [c9].[OneToMany_Optional_Inverse4Id1], [c9].[OneToMany_Optional_Inverse4Id2], [c9].[OneToMany_Optional_Self_Inverse4Id1], [c9].[OneToMany_Optional_Self_Inverse4Id2], [c9].[OneToMany_Required_Inverse4Id1], [c9].[OneToMany_Required_Inverse4Id2], [c9].[OneToMany_Required_Self_Inverse4Id1], [c9].[OneToMany_Required_Self_Inverse4Id2], [c9].[OneToOne_Optional_PK_Inverse4Id1], [c9].[OneToOne_Optional_PK_Inverse4Id2], [c9].[OneToOne_Optional_Self4Id1], [c9].[OneToOne_Optional_Self4Id2], [c10].[Id1] AS [Id11], [c10].[Id2] AS [Id21], [c10].[Level3_Optional_Id1] AS [Level3_Optional_Id10], [c10].[Level3_Optional_Id2] AS [Level3_Optional_Id20], [c10].[Level3_Required_Id1] AS [Level3_Required_Id10], [c10].[Level3_Required_Id2] AS [Level3_Required_Id20], [c10].[Name] AS [Name1], [c10].[OneToMany_Optional_Inverse4Id1] AS [OneToMany_Optional_Inverse4Id10], [c10].[OneToMany_Optional_Inverse4Id2] AS [OneToMany_Optional_Inverse4Id20], [c10].[OneToMany_Optional_Self_Inverse4Id1] AS [OneToMany_Optional_Self_Inverse4Id10], [c10].[OneToMany_Optional_Self_Inverse4Id2] AS [OneToMany_Optional_Self_Inverse4Id20], [c10].[OneToMany_Required_Inverse4Id1] AS [OneToMany_Required_Inverse4Id10], [c10].[OneToMany_Required_Inverse4Id2] AS [OneToMany_Required_Inverse4Id20], [c10].[OneToMany_Required_Self_Inverse4Id1] AS [OneToMany_Required_Self_Inverse4Id10], [c10].[OneToMany_Required_Self_Inverse4Id2] AS [OneToMany_Required_Self_Inverse4Id20], [c10].[OneToOne_Optional_PK_Inverse4Id1] AS [OneToOne_Optional_PK_Inverse4Id10], [c10].[OneToOne_Optional_PK_Inverse4Id2] AS [OneToOne_Optional_PK_Inverse4Id20], [c10].[OneToOne_Optional_Self4Id1] AS [OneToOne_Optional_Self4Id10], [c10].[OneToOne_Optional_Self4Id2] AS [OneToOne_Optional_Self4Id20], [c8].[OneToMany_Optional_Inverse3Id1], [c8].[OneToMany_Optional_Inverse3Id2] FROM [CompositeThrees] AS [c8] LEFT JOIN [CompositeFours] AS [c9] ON [c8].[Id1] = [c9].[OneToMany_Required_Inverse4Id1] AND [c8].[Id2] = [c9].[OneToMany_Required_Inverse4Id2] LEFT JOIN [CompositeFours] AS [c10] ON [c8].[Id1] = [c10].[OneToMany_Optional_Inverse4Id1] AND [c8].[Id2] = [c10].[OneToMany_Optional_Inverse4Id2] - ) AS [t3] ON [c7].[Id1] = [t3].[OneToMany_Optional_Inverse3Id1] AND [c7].[Id2] = [t3].[OneToMany_Optional_Inverse3Id2] + ) AS [t2] ON [c7].[Id1] = [t2].[OneToMany_Optional_Inverse3Id1] AND [c7].[Id2] = [t2].[OneToMany_Optional_Inverse3Id2] LEFT JOIN ( SELECT [c11].[Name], [c11].[Id1], [c11].[Id2], [c12].[Id1] AS [Id10], [c12].[Id2] AS [Id20], [c12].[Level3_Optional_Id1], [c12].[Level3_Optional_Id2], [c12].[Level3_Required_Id1], [c12].[Level3_Required_Id2], [c12].[Name] AS [Name0], [c12].[OneToMany_Optional_Inverse4Id1], [c12].[OneToMany_Optional_Inverse4Id2], [c12].[OneToMany_Optional_Self_Inverse4Id1], [c12].[OneToMany_Optional_Self_Inverse4Id2], [c12].[OneToMany_Required_Inverse4Id1], [c12].[OneToMany_Required_Inverse4Id2], [c12].[OneToMany_Required_Self_Inverse4Id1], [c12].[OneToMany_Required_Self_Inverse4Id2], [c12].[OneToOne_Optional_PK_Inverse4Id1], [c12].[OneToOne_Optional_PK_Inverse4Id2], [c12].[OneToOne_Optional_Self4Id1], [c12].[OneToOne_Optional_Self4Id2], [c13].[Id1] AS [Id11], [c13].[Id2] AS [Id21], [c13].[Level3_Optional_Id1] AS [Level3_Optional_Id10], [c13].[Level3_Optional_Id2] AS [Level3_Optional_Id20], [c13].[Level3_Required_Id1] AS [Level3_Required_Id10], [c13].[Level3_Required_Id2] AS [Level3_Required_Id20], [c13].[Name] AS [Name1], [c13].[OneToMany_Optional_Inverse4Id1] AS [OneToMany_Optional_Inverse4Id10], [c13].[OneToMany_Optional_Inverse4Id2] AS [OneToMany_Optional_Inverse4Id20], [c13].[OneToMany_Optional_Self_Inverse4Id1] AS [OneToMany_Optional_Self_Inverse4Id10], [c13].[OneToMany_Optional_Self_Inverse4Id2] AS [OneToMany_Optional_Self_Inverse4Id20], [c13].[OneToMany_Required_Inverse4Id1] AS [OneToMany_Required_Inverse4Id10], [c13].[OneToMany_Required_Inverse4Id2] AS [OneToMany_Required_Inverse4Id20], [c13].[OneToMany_Required_Self_Inverse4Id1] AS [OneToMany_Required_Self_Inverse4Id10], [c13].[OneToMany_Required_Self_Inverse4Id2] AS [OneToMany_Required_Self_Inverse4Id20], [c13].[OneToOne_Optional_PK_Inverse4Id1] AS [OneToOne_Optional_PK_Inverse4Id10], [c13].[OneToOne_Optional_PK_Inverse4Id2] AS [OneToOne_Optional_PK_Inverse4Id20], [c13].[OneToOne_Optional_Self4Id1] AS [OneToOne_Optional_Self4Id10], [c13].[OneToOne_Optional_Self4Id2] AS [OneToOne_Optional_Self4Id20], [c13].[Id1] + CAST([c13].[Id2] AS nvarchar(max)) AS [c], [c11].[OneToMany_Optional_Inverse3Id1], [c11].[OneToMany_Optional_Inverse3Id2] FROM [CompositeThrees] AS [c11] LEFT JOIN [CompositeFours] AS [c12] ON [c11].[Id1] = [c12].[OneToMany_Optional_Inverse4Id1] AND [c11].[Id2] = [c12].[OneToMany_Optional_Inverse4Id2] LEFT JOIN [CompositeFours] AS [c13] ON [c11].[Id1] = [c13].[OneToMany_Required_Inverse4Id1] AND [c11].[Id2] = [c13].[OneToMany_Required_Inverse4Id2] - ) AS [t4] ON [c7].[Id1] = [t4].[OneToMany_Optional_Inverse3Id1] AND [c7].[Id2] = [t4].[OneToMany_Optional_Inverse3Id2] -) AS [t2] ON [c].[Id1] = [t2].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [t2].[OneToMany_Required_Inverse2Id2] -ORDER BY [c].[Name], [c].[Id1], [c].[Id2], [t1].[Id1], [t1].[Id2], [t1].[Id20] DESC, [t1].[Id10] DESC, [t1].[Id100], [t1].[Id200], [t1].[Id11], [t1].[Id21], [t1].[Id12], [t1].[Id22], [t1].[Id101], [t1].[Id201], [t1].[Id110], [t1].[Id210], [t2].[c], [t2].[Id1], [t2].[Id2], [t2].[Id10], [t2].[Id20], [t2].[Id100], [t2].[Id200], [t2].[Id11], [t2].[Id21], [t2].[Id12], [t2].[Id22], [t2].[Id101], [t2].[Id201], [t2].[c0] DESC, [t2].[Id110] + ) AS [t3] ON [c7].[Id1] = [t3].[OneToMany_Optional_Inverse3Id1] AND [c7].[Id2] = [t3].[OneToMany_Optional_Inverse3Id2] +) AS [t4] ON [c].[Id1] = [t4].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [t4].[OneToMany_Required_Inverse2Id2] +ORDER BY [c].[Name], [c].[Id1], [c].[Id2], [t1].[Id1], [t1].[Id2], [t1].[Id20] DESC, [t1].[Id10] DESC, [t1].[Id100], [t1].[Id200], [t1].[Id11], [t1].[Id21], [t1].[Id12], [t1].[Id22], [t1].[Id101], [t1].[Id201], [t1].[Id110], [t1].[Id210], [t4].[c], [t4].[Id1], [t4].[Id2], [t4].[Id10], [t4].[Id20], [t4].[Id100], [t4].[Id200], [t4].[Id11], [t4].[Id21], [t4].[Id12], [t4].[Id22], [t4].[Id101], [t4].[Id201], [t4].[c0] DESC, [t4].[Id110] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/CompositeKeysSplitQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/CompositeKeysSplitQuerySqlServerTest.cs index 55a33bd3ceb..9b7a353047d 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/CompositeKeysSplitQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/CompositeKeysSplitQuerySqlServerTest.cs @@ -29,18 +29,18 @@ FROM [CompositeOnes] AS [c] """, // """ -SELECT [c0].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2] +SELECT [c8].[Name], [c].[Id1], [c].[Id2], [c8].[Id1], [c8].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Optional_Inverse2Id2] -ORDER BY [c].[Id2], [c].[Id1], [c0].[Id2], [c0].[Id1] +INNER JOIN [CompositeTwos] AS [c8] ON [c].[Id1] = [c8].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c8].[OneToMany_Optional_Inverse2Id2] +ORDER BY [c].[Id2], [c].[Id1], [c8].[Id2], [c8].[Id1] """, // """ -SELECT [c1].[Id1], [c1].[Id2], [c1].[Level2_Optional_Id1], [c1].[Level2_Optional_Id2], [c1].[Level2_Required_Id1], [c1].[Level2_Required_Id2], [c1].[Name], [c1].[OneToMany_Optional_Inverse3Id1], [c1].[OneToMany_Optional_Inverse3Id2], [c1].[OneToMany_Optional_Self_Inverse3Id1], [c1].[OneToMany_Optional_Self_Inverse3Id2], [c1].[OneToMany_Required_Inverse3Id1], [c1].[OneToMany_Required_Inverse3Id2], [c1].[OneToMany_Required_Self_Inverse3Id1], [c1].[OneToMany_Required_Self_Inverse3Id2], [c1].[OneToOne_Optional_PK_Inverse3Id1], [c1].[OneToOne_Optional_PK_Inverse3Id2], [c1].[OneToOne_Optional_Self3Id1], [c1].[OneToOne_Optional_Self3Id2], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2] +SELECT [c11].[Id1], [c11].[Id2], [c11].[Level2_Optional_Id1], [c11].[Level2_Optional_Id2], [c11].[Level2_Required_Id1], [c11].[Level2_Required_Id2], [c11].[Name], [c11].[OneToMany_Optional_Inverse3Id1], [c11].[OneToMany_Optional_Inverse3Id2], [c11].[OneToMany_Optional_Self_Inverse3Id1], [c11].[OneToMany_Optional_Self_Inverse3Id2], [c11].[OneToMany_Required_Inverse3Id1], [c11].[OneToMany_Required_Inverse3Id2], [c11].[OneToMany_Required_Self_Inverse3Id1], [c11].[OneToMany_Required_Self_Inverse3Id2], [c11].[OneToOne_Optional_PK_Inverse3Id1], [c11].[OneToOne_Optional_PK_Inverse3Id2], [c11].[OneToOne_Optional_Self3Id1], [c11].[OneToOne_Optional_Self3Id2], [c].[Id1], [c].[Id2], [c8].[Id1], [c8].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Optional_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Required_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Required_Inverse3Id2] -ORDER BY [c].[Id2], [c].[Id1], [c0].[Id2], [c0].[Id1], [c1].[Id2] DESC +INNER JOIN [CompositeTwos] AS [c8] ON [c].[Id1] = [c8].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c8].[OneToMany_Optional_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c11] ON [c8].[Id1] = [c11].[OneToMany_Required_Inverse3Id1] AND [c8].[Id2] = [c11].[OneToMany_Required_Inverse3Id2] +ORDER BY [c].[Id2], [c].[Id1], [c8].[Id2], [c8].[Id1], [c11].[Id2] DESC """); } @@ -56,103 +56,103 @@ FROM [CompositeOnes] AS [c] """, // """ -SELECT [c0].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2] +SELECT [c62].[Name], [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Optional_Inverse2Id2] -ORDER BY [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2] +INNER JOIN [CompositeTwos] AS [c62] ON [c].[Id1] = [c62].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c62].[OneToMany_Optional_Inverse2Id2] +ORDER BY [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2] """, // """ -SELECT [c1].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +SELECT [c75].[Name], [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2], [c75].[Id1], [c75].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Optional_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Required_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Required_Inverse3Id2] -ORDER BY [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c62] ON [c].[Id1] = [c62].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c62].[OneToMany_Optional_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c75] ON [c62].[Id1] = [c75].[OneToMany_Required_Inverse3Id1] AND [c62].[Id2] = [c75].[OneToMany_Required_Inverse3Id2] +ORDER BY [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2], [c75].[Id1], [c75].[Id2] """, // """ -SELECT [c1].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +SELECT [c87].[Name], [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2], [c87].[Id1], [c87].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Optional_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -ORDER BY [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c62] ON [c].[Id1] = [c62].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c62].[OneToMany_Optional_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c87] ON [c62].[Id1] = [c87].[OneToMany_Optional_Inverse3Id1] AND [c62].[Id2] = [c87].[OneToMany_Optional_Inverse3Id2] +ORDER BY [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2], [c87].[Id1], [c87].[Id2] """, // """ -SELECT [c2].[Id1], [c2].[Id2], [c2].[Level3_Optional_Id1], [c2].[Level3_Optional_Id2], [c2].[Level3_Required_Id1], [c2].[Level3_Required_Id2], [c2].[Name], [c2].[OneToMany_Optional_Inverse4Id1], [c2].[OneToMany_Optional_Inverse4Id2], [c2].[OneToMany_Optional_Self_Inverse4Id1], [c2].[OneToMany_Optional_Self_Inverse4Id2], [c2].[OneToMany_Required_Inverse4Id1], [c2].[OneToMany_Required_Inverse4Id2], [c2].[OneToMany_Required_Self_Inverse4Id1], [c2].[OneToMany_Required_Self_Inverse4Id2], [c2].[OneToOne_Optional_PK_Inverse4Id1], [c2].[OneToOne_Optional_PK_Inverse4Id2], [c2].[OneToOne_Optional_Self4Id1], [c2].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +SELECT [c90].[Id1], [c90].[Id2], [c90].[Level3_Optional_Id1], [c90].[Level3_Optional_Id2], [c90].[Level3_Required_Id1], [c90].[Level3_Required_Id2], [c90].[Name], [c90].[OneToMany_Optional_Inverse4Id1], [c90].[OneToMany_Optional_Inverse4Id2], [c90].[OneToMany_Optional_Self_Inverse4Id1], [c90].[OneToMany_Optional_Self_Inverse4Id2], [c90].[OneToMany_Required_Inverse4Id1], [c90].[OneToMany_Required_Inverse4Id2], [c90].[OneToMany_Required_Self_Inverse4Id1], [c90].[OneToMany_Required_Self_Inverse4Id2], [c90].[OneToOne_Optional_PK_Inverse4Id1], [c90].[OneToOne_Optional_PK_Inverse4Id2], [c90].[OneToOne_Optional_Self4Id1], [c90].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2], [c87].[Id1], [c87].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Optional_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -INNER JOIN [CompositeFours] AS [c2] ON [c1].[Id1] = [c2].[OneToMany_Required_Inverse4Id1] AND [c1].[Id2] = [c2].[OneToMany_Required_Inverse4Id2] -ORDER BY [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c62] ON [c].[Id1] = [c62].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c62].[OneToMany_Optional_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c87] ON [c62].[Id1] = [c87].[OneToMany_Optional_Inverse3Id1] AND [c62].[Id2] = [c87].[OneToMany_Optional_Inverse3Id2] +INNER JOIN [CompositeFours] AS [c90] ON [c87].[Id1] = [c90].[OneToMany_Required_Inverse4Id1] AND [c87].[Id2] = [c90].[OneToMany_Required_Inverse4Id2] +ORDER BY [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2], [c87].[Id1], [c87].[Id2] """, // """ -SELECT [c2].[Id1], [c2].[Id2], [c2].[Level3_Optional_Id1], [c2].[Level3_Optional_Id2], [c2].[Level3_Required_Id1], [c2].[Level3_Required_Id2], [c2].[Name], [c2].[OneToMany_Optional_Inverse4Id1], [c2].[OneToMany_Optional_Inverse4Id2], [c2].[OneToMany_Optional_Self_Inverse4Id1], [c2].[OneToMany_Optional_Self_Inverse4Id2], [c2].[OneToMany_Required_Inverse4Id1], [c2].[OneToMany_Required_Inverse4Id2], [c2].[OneToMany_Required_Self_Inverse4Id1], [c2].[OneToMany_Required_Self_Inverse4Id2], [c2].[OneToOne_Optional_PK_Inverse4Id1], [c2].[OneToOne_Optional_PK_Inverse4Id2], [c2].[OneToOne_Optional_Self4Id1], [c2].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +SELECT [c92].[Id1], [c92].[Id2], [c92].[Level3_Optional_Id1], [c92].[Level3_Optional_Id2], [c92].[Level3_Required_Id1], [c92].[Level3_Required_Id2], [c92].[Name], [c92].[OneToMany_Optional_Inverse4Id1], [c92].[OneToMany_Optional_Inverse4Id2], [c92].[OneToMany_Optional_Self_Inverse4Id1], [c92].[OneToMany_Optional_Self_Inverse4Id2], [c92].[OneToMany_Required_Inverse4Id1], [c92].[OneToMany_Required_Inverse4Id2], [c92].[OneToMany_Required_Self_Inverse4Id1], [c92].[OneToMany_Required_Self_Inverse4Id2], [c92].[OneToOne_Optional_PK_Inverse4Id1], [c92].[OneToOne_Optional_PK_Inverse4Id2], [c92].[OneToOne_Optional_Self4Id1], [c92].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2], [c87].[Id1], [c87].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Optional_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -INNER JOIN [CompositeFours] AS [c2] ON [c1].[Id1] = [c2].[OneToMany_Optional_Inverse4Id1] AND [c1].[Id2] = [c2].[OneToMany_Optional_Inverse4Id2] -ORDER BY [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c62] ON [c].[Id1] = [c62].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c62].[OneToMany_Optional_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c87] ON [c62].[Id1] = [c87].[OneToMany_Optional_Inverse3Id1] AND [c62].[Id2] = [c87].[OneToMany_Optional_Inverse3Id2] +INNER JOIN [CompositeFours] AS [c92] ON [c87].[Id1] = [c92].[OneToMany_Optional_Inverse4Id1] AND [c87].[Id2] = [c92].[OneToMany_Optional_Inverse4Id2] +ORDER BY [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2], [c87].[Id1], [c87].[Id2] """, // """ -SELECT [c0].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2] +SELECT [c124].[Name], [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] -ORDER BY [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2] +INNER JOIN [CompositeTwos] AS [c124] ON [c].[Id1] = [c124].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c124].[OneToMany_Required_Inverse2Id2] +ORDER BY [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2] """, // """ -SELECT [c1].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +SELECT [c137].[Name], [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c137].[Id1], [c137].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -ORDER BY [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c124] ON [c].[Id1] = [c124].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c124].[OneToMany_Required_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c137] ON [c124].[Id1] = [c137].[OneToMany_Optional_Inverse3Id1] AND [c124].[Id2] = [c137].[OneToMany_Optional_Inverse3Id2] +ORDER BY [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c137].[Id1], [c137].[Id2] """, // """ -SELECT [c2].[Id1], [c2].[Id2], [c2].[Level3_Optional_Id1], [c2].[Level3_Optional_Id2], [c2].[Level3_Required_Id1], [c2].[Level3_Required_Id2], [c2].[Name], [c2].[OneToMany_Optional_Inverse4Id1], [c2].[OneToMany_Optional_Inverse4Id2], [c2].[OneToMany_Optional_Self_Inverse4Id1], [c2].[OneToMany_Optional_Self_Inverse4Id2], [c2].[OneToMany_Required_Inverse4Id1], [c2].[OneToMany_Required_Inverse4Id2], [c2].[OneToMany_Required_Self_Inverse4Id1], [c2].[OneToMany_Required_Self_Inverse4Id2], [c2].[OneToOne_Optional_PK_Inverse4Id1], [c2].[OneToOne_Optional_PK_Inverse4Id2], [c2].[OneToOne_Optional_Self4Id1], [c2].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +SELECT [c140].[Id1], [c140].[Id2], [c140].[Level3_Optional_Id1], [c140].[Level3_Optional_Id2], [c140].[Level3_Required_Id1], [c140].[Level3_Required_Id2], [c140].[Name], [c140].[OneToMany_Optional_Inverse4Id1], [c140].[OneToMany_Optional_Inverse4Id2], [c140].[OneToMany_Optional_Self_Inverse4Id1], [c140].[OneToMany_Optional_Self_Inverse4Id2], [c140].[OneToMany_Required_Inverse4Id1], [c140].[OneToMany_Required_Inverse4Id2], [c140].[OneToMany_Required_Self_Inverse4Id1], [c140].[OneToMany_Required_Self_Inverse4Id2], [c140].[OneToOne_Optional_PK_Inverse4Id1], [c140].[OneToOne_Optional_PK_Inverse4Id2], [c140].[OneToOne_Optional_Self4Id1], [c140].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c137].[Id1], [c137].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -INNER JOIN [CompositeFours] AS [c2] ON [c1].[Id1] = [c2].[OneToMany_Required_Inverse4Id1] AND [c1].[Id2] = [c2].[OneToMany_Required_Inverse4Id2] -ORDER BY [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c124] ON [c].[Id1] = [c124].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c124].[OneToMany_Required_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c137] ON [c124].[Id1] = [c137].[OneToMany_Optional_Inverse3Id1] AND [c124].[Id2] = [c137].[OneToMany_Optional_Inverse3Id2] +INNER JOIN [CompositeFours] AS [c140] ON [c137].[Id1] = [c140].[OneToMany_Required_Inverse4Id1] AND [c137].[Id2] = [c140].[OneToMany_Required_Inverse4Id2] +ORDER BY [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c137].[Id1], [c137].[Id2] """, // """ -SELECT [c2].[Id1], [c2].[Id2], [c2].[Level3_Optional_Id1], [c2].[Level3_Optional_Id2], [c2].[Level3_Required_Id1], [c2].[Level3_Required_Id2], [c2].[Name], [c2].[OneToMany_Optional_Inverse4Id1], [c2].[OneToMany_Optional_Inverse4Id2], [c2].[OneToMany_Optional_Self_Inverse4Id1], [c2].[OneToMany_Optional_Self_Inverse4Id2], [c2].[OneToMany_Required_Inverse4Id1], [c2].[OneToMany_Required_Inverse4Id2], [c2].[OneToMany_Required_Self_Inverse4Id1], [c2].[OneToMany_Required_Self_Inverse4Id2], [c2].[OneToOne_Optional_PK_Inverse4Id1], [c2].[OneToOne_Optional_PK_Inverse4Id2], [c2].[OneToOne_Optional_Self4Id1], [c2].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +SELECT [c142].[Id1], [c142].[Id2], [c142].[Level3_Optional_Id1], [c142].[Level3_Optional_Id2], [c142].[Level3_Required_Id1], [c142].[Level3_Required_Id2], [c142].[Name], [c142].[OneToMany_Optional_Inverse4Id1], [c142].[OneToMany_Optional_Inverse4Id2], [c142].[OneToMany_Optional_Self_Inverse4Id1], [c142].[OneToMany_Optional_Self_Inverse4Id2], [c142].[OneToMany_Required_Inverse4Id1], [c142].[OneToMany_Required_Inverse4Id2], [c142].[OneToMany_Required_Self_Inverse4Id1], [c142].[OneToMany_Required_Self_Inverse4Id2], [c142].[OneToOne_Optional_PK_Inverse4Id1], [c142].[OneToOne_Optional_PK_Inverse4Id2], [c142].[OneToOne_Optional_Self4Id1], [c142].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c137].[Id1], [c137].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -INNER JOIN [CompositeFours] AS [c2] ON [c1].[Id1] = [c2].[OneToMany_Optional_Inverse4Id1] AND [c1].[Id2] = [c2].[OneToMany_Optional_Inverse4Id2] -ORDER BY [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c124] ON [c].[Id1] = [c124].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c124].[OneToMany_Required_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c137] ON [c124].[Id1] = [c137].[OneToMany_Optional_Inverse3Id1] AND [c124].[Id2] = [c137].[OneToMany_Optional_Inverse3Id2] +INNER JOIN [CompositeFours] AS [c142] ON [c137].[Id1] = [c142].[OneToMany_Optional_Inverse4Id1] AND [c137].[Id2] = [c142].[OneToMany_Optional_Inverse4Id2] +ORDER BY [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c137].[Id1], [c137].[Id2] """, // """ -SELECT [c1].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +SELECT [c149].[Name], [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c149].[Id1], [c149].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -ORDER BY [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c124] ON [c].[Id1] = [c124].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c124].[OneToMany_Required_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c149] ON [c124].[Id1] = [c149].[OneToMany_Optional_Inverse3Id1] AND [c124].[Id2] = [c149].[OneToMany_Optional_Inverse3Id2] +ORDER BY [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c149].[Id1], [c149].[Id2] """, // """ -SELECT [c2].[Id1], [c2].[Id2], [c2].[Level3_Optional_Id1], [c2].[Level3_Optional_Id2], [c2].[Level3_Required_Id1], [c2].[Level3_Required_Id2], [c2].[Name], [c2].[OneToMany_Optional_Inverse4Id1], [c2].[OneToMany_Optional_Inverse4Id2], [c2].[OneToMany_Optional_Self_Inverse4Id1], [c2].[OneToMany_Optional_Self_Inverse4Id2], [c2].[OneToMany_Required_Inverse4Id1], [c2].[OneToMany_Required_Inverse4Id2], [c2].[OneToMany_Required_Self_Inverse4Id1], [c2].[OneToMany_Required_Self_Inverse4Id2], [c2].[OneToOne_Optional_PK_Inverse4Id1], [c2].[OneToOne_Optional_PK_Inverse4Id2], [c2].[OneToOne_Optional_Self4Id1], [c2].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +SELECT [c152].[Id1], [c152].[Id2], [c152].[Level3_Optional_Id1], [c152].[Level3_Optional_Id2], [c152].[Level3_Required_Id1], [c152].[Level3_Required_Id2], [c152].[Name], [c152].[OneToMany_Optional_Inverse4Id1], [c152].[OneToMany_Optional_Inverse4Id2], [c152].[OneToMany_Optional_Self_Inverse4Id1], [c152].[OneToMany_Optional_Self_Inverse4Id2], [c152].[OneToMany_Required_Inverse4Id1], [c152].[OneToMany_Required_Inverse4Id2], [c152].[OneToMany_Required_Self_Inverse4Id1], [c152].[OneToMany_Required_Self_Inverse4Id2], [c152].[OneToOne_Optional_PK_Inverse4Id1], [c152].[OneToOne_Optional_PK_Inverse4Id2], [c152].[OneToOne_Optional_Self4Id1], [c152].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c149].[Id1], [c149].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -INNER JOIN [CompositeFours] AS [c2] ON [c1].[Id1] = [c2].[OneToMany_Optional_Inverse4Id1] AND [c1].[Id2] = [c2].[OneToMany_Optional_Inverse4Id2] -ORDER BY [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c124] ON [c].[Id1] = [c124].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c124].[OneToMany_Required_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c149] ON [c124].[Id1] = [c149].[OneToMany_Optional_Inverse3Id1] AND [c124].[Id2] = [c149].[OneToMany_Optional_Inverse3Id2] +INNER JOIN [CompositeFours] AS [c152] ON [c149].[Id1] = [c152].[OneToMany_Optional_Inverse4Id1] AND [c149].[Id2] = [c152].[OneToMany_Optional_Inverse4Id2] +ORDER BY [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c149].[Id1], [c149].[Id2] """, // """ -SELECT [c2].[Id1], [c2].[Id2], [c2].[Level3_Optional_Id1], [c2].[Level3_Optional_Id2], [c2].[Level3_Required_Id1], [c2].[Level3_Required_Id2], [c2].[Name], [c2].[OneToMany_Optional_Inverse4Id1], [c2].[OneToMany_Optional_Inverse4Id2], [c2].[OneToMany_Optional_Self_Inverse4Id1], [c2].[OneToMany_Optional_Self_Inverse4Id2], [c2].[OneToMany_Required_Inverse4Id1], [c2].[OneToMany_Required_Inverse4Id2], [c2].[OneToMany_Required_Self_Inverse4Id1], [c2].[OneToMany_Required_Self_Inverse4Id2], [c2].[OneToOne_Optional_PK_Inverse4Id1], [c2].[OneToOne_Optional_PK_Inverse4Id2], [c2].[OneToOne_Optional_Self4Id1], [c2].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +SELECT [c154].[Id1], [c154].[Id2], [c154].[Level3_Optional_Id1], [c154].[Level3_Optional_Id2], [c154].[Level3_Required_Id1], [c154].[Level3_Required_Id2], [c154].[Name], [c154].[OneToMany_Optional_Inverse4Id1], [c154].[OneToMany_Optional_Inverse4Id2], [c154].[OneToMany_Optional_Self_Inverse4Id1], [c154].[OneToMany_Optional_Self_Inverse4Id2], [c154].[OneToMany_Required_Inverse4Id1], [c154].[OneToMany_Required_Inverse4Id2], [c154].[OneToMany_Required_Self_Inverse4Id1], [c154].[OneToMany_Required_Self_Inverse4Id2], [c154].[OneToOne_Optional_PK_Inverse4Id1], [c154].[OneToOne_Optional_PK_Inverse4Id2], [c154].[OneToOne_Optional_Self4Id1], [c154].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c149].[Id1], [c149].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -INNER JOIN [CompositeFours] AS [c2] ON [c1].[Id1] = [c2].[OneToMany_Required_Inverse4Id1] AND [c1].[Id2] = [c2].[OneToMany_Required_Inverse4Id2] -ORDER BY [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c124] ON [c].[Id1] = [c124].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c124].[OneToMany_Required_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c149] ON [c124].[Id1] = [c149].[OneToMany_Optional_Inverse3Id1] AND [c124].[Id2] = [c149].[OneToMany_Optional_Inverse3Id2] +INNER JOIN [CompositeFours] AS [c154] ON [c149].[Id1] = [c154].[OneToMany_Required_Inverse4Id1] AND [c149].[Id2] = [c154].[OneToMany_Required_Inverse4Id2] +ORDER BY [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c149].[Id1], [c149].[Id2] """); } @@ -167,104 +167,104 @@ FROM [CompositeOnes] AS [c] ORDER BY [c].[Name], [c].[Id1], [c].[Id2] """, // -""" -SELECT [c0].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2] + """ +SELECT [c62].[Name], [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Optional_Inverse2Id2] -ORDER BY [c].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2] +INNER JOIN [CompositeTwos] AS [c62] ON [c].[Id1] = [c62].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c62].[OneToMany_Optional_Inverse2Id2] +ORDER BY [c].[Name], [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2] """, // -""" -SELECT [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] + """ +SELECT [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2], [c75].[Id1], [c75].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Optional_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Required_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Required_Inverse3Id2] -ORDER BY [c].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id2] DESC, [c1].[Id1] DESC +INNER JOIN [CompositeTwos] AS [c62] ON [c].[Id1] = [c62].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c62].[OneToMany_Optional_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c75] ON [c62].[Id1] = [c75].[OneToMany_Required_Inverse3Id1] AND [c62].[Id2] = [c75].[OneToMany_Required_Inverse3Id2] +ORDER BY [c].[Name], [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2], [c75].[Id2] DESC, [c75].[Id1] DESC """, // -""" -SELECT [c1].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] + """ +SELECT [c87].[Name], [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2], [c87].[Id1], [c87].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Optional_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -ORDER BY [c].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c62] ON [c].[Id1] = [c62].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c62].[OneToMany_Optional_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c87] ON [c62].[Id1] = [c87].[OneToMany_Optional_Inverse3Id1] AND [c62].[Id2] = [c87].[OneToMany_Optional_Inverse3Id2] +ORDER BY [c].[Name], [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2], [c87].[Id1], [c87].[Id2] """, // -""" -SELECT [c2].[Id1], [c2].[Id2], [c2].[Level3_Optional_Id1], [c2].[Level3_Optional_Id2], [c2].[Level3_Required_Id1], [c2].[Level3_Required_Id2], [c2].[Name], [c2].[OneToMany_Optional_Inverse4Id1], [c2].[OneToMany_Optional_Inverse4Id2], [c2].[OneToMany_Optional_Self_Inverse4Id1], [c2].[OneToMany_Optional_Self_Inverse4Id2], [c2].[OneToMany_Required_Inverse4Id1], [c2].[OneToMany_Required_Inverse4Id2], [c2].[OneToMany_Required_Self_Inverse4Id1], [c2].[OneToMany_Required_Self_Inverse4Id2], [c2].[OneToOne_Optional_PK_Inverse4Id1], [c2].[OneToOne_Optional_PK_Inverse4Id2], [c2].[OneToOne_Optional_Self4Id1], [c2].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] + """ +SELECT [c90].[Id1], [c90].[Id2], [c90].[Level3_Optional_Id1], [c90].[Level3_Optional_Id2], [c90].[Level3_Required_Id1], [c90].[Level3_Required_Id2], [c90].[Name], [c90].[OneToMany_Optional_Inverse4Id1], [c90].[OneToMany_Optional_Inverse4Id2], [c90].[OneToMany_Optional_Self_Inverse4Id1], [c90].[OneToMany_Optional_Self_Inverse4Id2], [c90].[OneToMany_Required_Inverse4Id1], [c90].[OneToMany_Required_Inverse4Id2], [c90].[OneToMany_Required_Self_Inverse4Id1], [c90].[OneToMany_Required_Self_Inverse4Id2], [c90].[OneToOne_Optional_PK_Inverse4Id1], [c90].[OneToOne_Optional_PK_Inverse4Id2], [c90].[OneToOne_Optional_Self4Id1], [c90].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2], [c87].[Id1], [c87].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Optional_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -INNER JOIN [CompositeFours] AS [c2] ON [c1].[Id1] = [c2].[OneToMany_Required_Inverse4Id1] AND [c1].[Id2] = [c2].[OneToMany_Required_Inverse4Id2] -ORDER BY [c].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c62] ON [c].[Id1] = [c62].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c62].[OneToMany_Optional_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c87] ON [c62].[Id1] = [c87].[OneToMany_Optional_Inverse3Id1] AND [c62].[Id2] = [c87].[OneToMany_Optional_Inverse3Id2] +INNER JOIN [CompositeFours] AS [c90] ON [c87].[Id1] = [c90].[OneToMany_Required_Inverse4Id1] AND [c87].[Id2] = [c90].[OneToMany_Required_Inverse4Id2] +ORDER BY [c].[Name], [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2], [c87].[Id1], [c87].[Id2] """, // -""" -SELECT [c2].[Id1], [c2].[Id2], [c2].[Level3_Optional_Id1], [c2].[Level3_Optional_Id2], [c2].[Level3_Required_Id1], [c2].[Level3_Required_Id2], [c2].[Name], [c2].[OneToMany_Optional_Inverse4Id1], [c2].[OneToMany_Optional_Inverse4Id2], [c2].[OneToMany_Optional_Self_Inverse4Id1], [c2].[OneToMany_Optional_Self_Inverse4Id2], [c2].[OneToMany_Required_Inverse4Id1], [c2].[OneToMany_Required_Inverse4Id2], [c2].[OneToMany_Required_Self_Inverse4Id1], [c2].[OneToMany_Required_Self_Inverse4Id2], [c2].[OneToOne_Optional_PK_Inverse4Id1], [c2].[OneToOne_Optional_PK_Inverse4Id2], [c2].[OneToOne_Optional_Self4Id1], [c2].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] + """ +SELECT [c92].[Id1], [c92].[Id2], [c92].[Level3_Optional_Id1], [c92].[Level3_Optional_Id2], [c92].[Level3_Required_Id1], [c92].[Level3_Required_Id2], [c92].[Name], [c92].[OneToMany_Optional_Inverse4Id1], [c92].[OneToMany_Optional_Inverse4Id2], [c92].[OneToMany_Optional_Self_Inverse4Id1], [c92].[OneToMany_Optional_Self_Inverse4Id2], [c92].[OneToMany_Required_Inverse4Id1], [c92].[OneToMany_Required_Inverse4Id2], [c92].[OneToMany_Required_Self_Inverse4Id1], [c92].[OneToMany_Required_Self_Inverse4Id2], [c92].[OneToOne_Optional_PK_Inverse4Id1], [c92].[OneToOne_Optional_PK_Inverse4Id2], [c92].[OneToOne_Optional_Self4Id1], [c92].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2], [c87].[Id1], [c87].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Optional_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -INNER JOIN [CompositeFours] AS [c2] ON [c1].[Id1] = [c2].[OneToMany_Optional_Inverse4Id1] AND [c1].[Id2] = [c2].[OneToMany_Optional_Inverse4Id2] -ORDER BY [c].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c62] ON [c].[Id1] = [c62].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c62].[OneToMany_Optional_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c87] ON [c62].[Id1] = [c87].[OneToMany_Optional_Inverse3Id1] AND [c62].[Id2] = [c87].[OneToMany_Optional_Inverse3Id2] +INNER JOIN [CompositeFours] AS [c92] ON [c87].[Id1] = [c92].[OneToMany_Optional_Inverse4Id1] AND [c87].[Id2] = [c92].[OneToMany_Optional_Inverse4Id2] +ORDER BY [c].[Name], [c].[Id1], [c].[Id2], [c62].[Id1], [c62].[Id2], [c87].[Id1], [c87].[Id2] """, // -""" -SELECT [c0].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2] + """ +SELECT [c124].[Name], [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] -ORDER BY [c].[Name], [c].[Id1], [c].[Id2], CAST(LEN([c0].[Name]) AS int), [c0].[Id1], [c0].[Id2] +INNER JOIN [CompositeTwos] AS [c124] ON [c].[Id1] = [c124].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c124].[OneToMany_Required_Inverse2Id2] +ORDER BY [c].[Name], [c].[Id1], [c].[Id2], CAST(LEN([c124].[Name]) AS int), [c124].[Id1], [c124].[Id2] """, // -""" -SELECT [c1].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] + """ +SELECT [c137].[Name], [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c137].[Id1], [c137].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -ORDER BY [c].[Name], [c].[Id1], [c].[Id2], CAST(LEN([c0].[Name]) AS int), [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c124] ON [c].[Id1] = [c124].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c124].[OneToMany_Required_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c137] ON [c124].[Id1] = [c137].[OneToMany_Optional_Inverse3Id1] AND [c124].[Id2] = [c137].[OneToMany_Optional_Inverse3Id2] +ORDER BY [c].[Name], [c].[Id1], [c].[Id2], CAST(LEN([c124].[Name]) AS int), [c124].[Id1], [c124].[Id2], [c137].[Id1], [c137].[Id2] """, // -""" -SELECT [c2].[Id1], [c2].[Id2], [c2].[Level3_Optional_Id1], [c2].[Level3_Optional_Id2], [c2].[Level3_Required_Id1], [c2].[Level3_Required_Id2], [c2].[Name], [c2].[OneToMany_Optional_Inverse4Id1], [c2].[OneToMany_Optional_Inverse4Id2], [c2].[OneToMany_Optional_Self_Inverse4Id1], [c2].[OneToMany_Optional_Self_Inverse4Id2], [c2].[OneToMany_Required_Inverse4Id1], [c2].[OneToMany_Required_Inverse4Id2], [c2].[OneToMany_Required_Self_Inverse4Id1], [c2].[OneToMany_Required_Self_Inverse4Id2], [c2].[OneToOne_Optional_PK_Inverse4Id1], [c2].[OneToOne_Optional_PK_Inverse4Id2], [c2].[OneToOne_Optional_Self4Id1], [c2].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] + """ +SELECT [c140].[Id1], [c140].[Id2], [c140].[Level3_Optional_Id1], [c140].[Level3_Optional_Id2], [c140].[Level3_Required_Id1], [c140].[Level3_Required_Id2], [c140].[Name], [c140].[OneToMany_Optional_Inverse4Id1], [c140].[OneToMany_Optional_Inverse4Id2], [c140].[OneToMany_Optional_Self_Inverse4Id1], [c140].[OneToMany_Optional_Self_Inverse4Id2], [c140].[OneToMany_Required_Inverse4Id1], [c140].[OneToMany_Required_Inverse4Id2], [c140].[OneToMany_Required_Self_Inverse4Id1], [c140].[OneToMany_Required_Self_Inverse4Id2], [c140].[OneToOne_Optional_PK_Inverse4Id1], [c140].[OneToOne_Optional_PK_Inverse4Id2], [c140].[OneToOne_Optional_Self4Id1], [c140].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c137].[Id1], [c137].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -INNER JOIN [CompositeFours] AS [c2] ON [c1].[Id1] = [c2].[OneToMany_Required_Inverse4Id1] AND [c1].[Id2] = [c2].[OneToMany_Required_Inverse4Id2] -ORDER BY [c].[Name], [c].[Id1], [c].[Id2], CAST(LEN([c0].[Name]) AS int), [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c124] ON [c].[Id1] = [c124].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c124].[OneToMany_Required_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c137] ON [c124].[Id1] = [c137].[OneToMany_Optional_Inverse3Id1] AND [c124].[Id2] = [c137].[OneToMany_Optional_Inverse3Id2] +INNER JOIN [CompositeFours] AS [c140] ON [c137].[Id1] = [c140].[OneToMany_Required_Inverse4Id1] AND [c137].[Id2] = [c140].[OneToMany_Required_Inverse4Id2] +ORDER BY [c].[Name], [c].[Id1], [c].[Id2], CAST(LEN([c124].[Name]) AS int), [c124].[Id1], [c124].[Id2], [c137].[Id1], [c137].[Id2] """, // -""" -SELECT [c2].[Id1], [c2].[Id2], [c2].[Level3_Optional_Id1], [c2].[Level3_Optional_Id2], [c2].[Level3_Required_Id1], [c2].[Level3_Required_Id2], [c2].[Name], [c2].[OneToMany_Optional_Inverse4Id1], [c2].[OneToMany_Optional_Inverse4Id2], [c2].[OneToMany_Optional_Self_Inverse4Id1], [c2].[OneToMany_Optional_Self_Inverse4Id2], [c2].[OneToMany_Required_Inverse4Id1], [c2].[OneToMany_Required_Inverse4Id2], [c2].[OneToMany_Required_Self_Inverse4Id1], [c2].[OneToMany_Required_Self_Inverse4Id2], [c2].[OneToOne_Optional_PK_Inverse4Id1], [c2].[OneToOne_Optional_PK_Inverse4Id2], [c2].[OneToOne_Optional_Self4Id1], [c2].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] + """ +SELECT [c142].[Id1], [c142].[Id2], [c142].[Level3_Optional_Id1], [c142].[Level3_Optional_Id2], [c142].[Level3_Required_Id1], [c142].[Level3_Required_Id2], [c142].[Name], [c142].[OneToMany_Optional_Inverse4Id1], [c142].[OneToMany_Optional_Inverse4Id2], [c142].[OneToMany_Optional_Self_Inverse4Id1], [c142].[OneToMany_Optional_Self_Inverse4Id2], [c142].[OneToMany_Required_Inverse4Id1], [c142].[OneToMany_Required_Inverse4Id2], [c142].[OneToMany_Required_Self_Inverse4Id1], [c142].[OneToMany_Required_Self_Inverse4Id2], [c142].[OneToOne_Optional_PK_Inverse4Id1], [c142].[OneToOne_Optional_PK_Inverse4Id2], [c142].[OneToOne_Optional_Self4Id1], [c142].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c137].[Id1], [c137].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -INNER JOIN [CompositeFours] AS [c2] ON [c1].[Id1] = [c2].[OneToMany_Optional_Inverse4Id1] AND [c1].[Id2] = [c2].[OneToMany_Optional_Inverse4Id2] -ORDER BY [c].[Name], [c].[Id1], [c].[Id2], CAST(LEN([c0].[Name]) AS int), [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c124] ON [c].[Id1] = [c124].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c124].[OneToMany_Required_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c137] ON [c124].[Id1] = [c137].[OneToMany_Optional_Inverse3Id1] AND [c124].[Id2] = [c137].[OneToMany_Optional_Inverse3Id2] +INNER JOIN [CompositeFours] AS [c142] ON [c137].[Id1] = [c142].[OneToMany_Optional_Inverse4Id1] AND [c137].[Id2] = [c142].[OneToMany_Optional_Inverse4Id2] +ORDER BY [c].[Name], [c].[Id1], [c].[Id2], CAST(LEN([c124].[Name]) AS int), [c124].[Id1], [c124].[Id2], [c137].[Id1], [c137].[Id2] """, // -""" -SELECT [c1].[Name], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] + """ +SELECT [c149].[Name], [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c149].[Id1], [c149].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -ORDER BY [c].[Name], [c].[Id1], [c].[Id2], CAST(LEN([c0].[Name]) AS int), [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c124] ON [c].[Id1] = [c124].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c124].[OneToMany_Required_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c149] ON [c124].[Id1] = [c149].[OneToMany_Optional_Inverse3Id1] AND [c124].[Id2] = [c149].[OneToMany_Optional_Inverse3Id2] +ORDER BY [c].[Name], [c].[Id1], [c].[Id2], CAST(LEN([c124].[Name]) AS int), [c124].[Id1], [c124].[Id2], [c149].[Id1], [c149].[Id2] """, // -""" -SELECT [c2].[Id1], [c2].[Id2], [c2].[Level3_Optional_Id1], [c2].[Level3_Optional_Id2], [c2].[Level3_Required_Id1], [c2].[Level3_Required_Id2], [c2].[Name], [c2].[OneToMany_Optional_Inverse4Id1], [c2].[OneToMany_Optional_Inverse4Id2], [c2].[OneToMany_Optional_Self_Inverse4Id1], [c2].[OneToMany_Optional_Self_Inverse4Id2], [c2].[OneToMany_Required_Inverse4Id1], [c2].[OneToMany_Required_Inverse4Id2], [c2].[OneToMany_Required_Self_Inverse4Id1], [c2].[OneToMany_Required_Self_Inverse4Id2], [c2].[OneToOne_Optional_PK_Inverse4Id1], [c2].[OneToOne_Optional_PK_Inverse4Id2], [c2].[OneToOne_Optional_Self4Id1], [c2].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] + """ +SELECT [c152].[Id1], [c152].[Id2], [c152].[Level3_Optional_Id1], [c152].[Level3_Optional_Id2], [c152].[Level3_Required_Id1], [c152].[Level3_Required_Id2], [c152].[Name], [c152].[OneToMany_Optional_Inverse4Id1], [c152].[OneToMany_Optional_Inverse4Id2], [c152].[OneToMany_Optional_Self_Inverse4Id1], [c152].[OneToMany_Optional_Self_Inverse4Id2], [c152].[OneToMany_Required_Inverse4Id1], [c152].[OneToMany_Required_Inverse4Id2], [c152].[OneToMany_Required_Self_Inverse4Id1], [c152].[OneToMany_Required_Self_Inverse4Id2], [c152].[OneToOne_Optional_PK_Inverse4Id1], [c152].[OneToOne_Optional_PK_Inverse4Id2], [c152].[OneToOne_Optional_Self4Id1], [c152].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c149].[Id1], [c149].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -INNER JOIN [CompositeFours] AS [c2] ON [c1].[Id1] = [c2].[OneToMany_Optional_Inverse4Id1] AND [c1].[Id2] = [c2].[OneToMany_Optional_Inverse4Id2] -ORDER BY [c].[Name], [c].[Id1], [c].[Id2], CAST(LEN([c0].[Name]) AS int), [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] +INNER JOIN [CompositeTwos] AS [c124] ON [c].[Id1] = [c124].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c124].[OneToMany_Required_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c149] ON [c124].[Id1] = [c149].[OneToMany_Optional_Inverse3Id1] AND [c124].[Id2] = [c149].[OneToMany_Optional_Inverse3Id2] +INNER JOIN [CompositeFours] AS [c152] ON [c149].[Id1] = [c152].[OneToMany_Optional_Inverse4Id1] AND [c149].[Id2] = [c152].[OneToMany_Optional_Inverse4Id2] +ORDER BY [c].[Name], [c].[Id1], [c].[Id2], CAST(LEN([c124].[Name]) AS int), [c124].[Id1], [c124].[Id2], [c149].[Id1], [c149].[Id2] """, // -""" -SELECT [c2].[Id1], [c2].[Id2], [c2].[Level3_Optional_Id1], [c2].[Level3_Optional_Id2], [c2].[Level3_Required_Id1], [c2].[Level3_Required_Id2], [c2].[Name], [c2].[OneToMany_Optional_Inverse4Id1], [c2].[OneToMany_Optional_Inverse4Id2], [c2].[OneToMany_Optional_Self_Inverse4Id1], [c2].[OneToMany_Optional_Self_Inverse4Id2], [c2].[OneToMany_Required_Inverse4Id1], [c2].[OneToMany_Required_Inverse4Id2], [c2].[OneToMany_Required_Self_Inverse4Id1], [c2].[OneToMany_Required_Self_Inverse4Id2], [c2].[OneToOne_Optional_PK_Inverse4Id1], [c2].[OneToOne_Optional_PK_Inverse4Id2], [c2].[OneToOne_Optional_Self4Id1], [c2].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2] + """ +SELECT [c154].[Id1], [c154].[Id2], [c154].[Level3_Optional_Id1], [c154].[Level3_Optional_Id2], [c154].[Level3_Required_Id1], [c154].[Level3_Required_Id2], [c154].[Name], [c154].[OneToMany_Optional_Inverse4Id1], [c154].[OneToMany_Optional_Inverse4Id2], [c154].[OneToMany_Optional_Self_Inverse4Id1], [c154].[OneToMany_Optional_Self_Inverse4Id2], [c154].[OneToMany_Required_Inverse4Id1], [c154].[OneToMany_Required_Inverse4Id2], [c154].[OneToMany_Required_Self_Inverse4Id1], [c154].[OneToMany_Required_Self_Inverse4Id2], [c154].[OneToOne_Optional_PK_Inverse4Id1], [c154].[OneToOne_Optional_PK_Inverse4Id2], [c154].[OneToOne_Optional_Self4Id1], [c154].[OneToOne_Optional_Self4Id2], [c].[Id1], [c].[Id2], [c124].[Id1], [c124].[Id2], [c149].[Id1], [c149].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] -INNER JOIN [CompositeThrees] AS [c1] ON [c0].[Id1] = [c1].[OneToMany_Optional_Inverse3Id1] AND [c0].[Id2] = [c1].[OneToMany_Optional_Inverse3Id2] -INNER JOIN [CompositeFours] AS [c2] ON [c1].[Id1] = [c2].[OneToMany_Required_Inverse4Id1] AND [c1].[Id2] = [c2].[OneToMany_Required_Inverse4Id2] -ORDER BY [c].[Name], [c].[Id1], [c].[Id2], CAST(LEN([c0].[Name]) AS int), [c0].[Id1], [c0].[Id2], [c1].[Id1], [c1].[Id2], [c2].[Id1] + CAST([c2].[Id2] AS nvarchar(max)) DESC +INNER JOIN [CompositeTwos] AS [c124] ON [c].[Id1] = [c124].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c124].[OneToMany_Required_Inverse2Id2] +INNER JOIN [CompositeThrees] AS [c149] ON [c124].[Id1] = [c149].[OneToMany_Optional_Inverse3Id1] AND [c124].[Id2] = [c149].[OneToMany_Optional_Inverse3Id2] +INNER JOIN [CompositeFours] AS [c154] ON [c149].[Id1] = [c154].[OneToMany_Required_Inverse4Id1] AND [c149].[Id2] = [c154].[OneToMany_Required_Inverse4Id2] +ORDER BY [c].[Name], [c].[Id1], [c].[Id2], CAST(LEN([c124].[Name]) AS int), [c124].[Id1], [c124].[Id2], [c149].[Id1], [c149].[Id2], [c154].[Id1] + CAST([c154].[Id2] AS nvarchar(max)) DESC """); } @@ -280,16 +280,16 @@ FROM [CompositeOnes] AS [c] """, // """ -SELECT [c0].[Id1], [c0].[Id2], [c0].[Date], [c0].[Level1_Optional_Id1], [c0].[Level1_Optional_Id2], [c0].[Level1_Required_Id1], [c0].[Level1_Required_Id2], [c0].[Name], [c0].[OneToMany_Optional_Inverse2Id1], [c0].[OneToMany_Optional_Inverse2Id2], [c0].[OneToMany_Optional_Self_Inverse2Id1], [c0].[OneToMany_Optional_Self_Inverse2Id2], [c0].[OneToMany_Required_Inverse2Id1], [c0].[OneToMany_Required_Inverse2Id2], [c0].[OneToMany_Required_Self_Inverse2Id1], [c0].[OneToMany_Required_Self_Inverse2Id2], [c0].[OneToOne_Optional_PK_Inverse2Id1], [c0].[OneToOne_Optional_PK_Inverse2Id2], [c0].[OneToOne_Optional_Self2Id1], [c0].[OneToOne_Optional_Self2Id2], [c].[Id1], [c].[Id2] +SELECT [c2].[Id1], [c2].[Id2], [c2].[Date], [c2].[Level1_Optional_Id1], [c2].[Level1_Optional_Id2], [c2].[Level1_Required_Id1], [c2].[Level1_Required_Id2], [c2].[Name], [c2].[OneToMany_Optional_Inverse2Id1], [c2].[OneToMany_Optional_Inverse2Id2], [c2].[OneToMany_Optional_Self_Inverse2Id1], [c2].[OneToMany_Optional_Self_Inverse2Id2], [c2].[OneToMany_Required_Inverse2Id1], [c2].[OneToMany_Required_Inverse2Id2], [c2].[OneToMany_Required_Self_Inverse2Id1], [c2].[OneToMany_Required_Self_Inverse2Id2], [c2].[OneToOne_Optional_PK_Inverse2Id1], [c2].[OneToOne_Optional_PK_Inverse2Id2], [c2].[OneToOne_Optional_Self2Id1], [c2].[OneToOne_Optional_Self2Id2], [c].[Id1], [c].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Optional_Inverse2Id2] +INNER JOIN [CompositeTwos] AS [c2] ON [c].[Id1] = [c2].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c2].[OneToMany_Optional_Inverse2Id2] ORDER BY [c].[Id2], [c].[Id1] """, // """ -SELECT [c0].[Id1], [c0].[Id2], [c0].[Date], [c0].[Level1_Optional_Id1], [c0].[Level1_Optional_Id2], [c0].[Level1_Required_Id1], [c0].[Level1_Required_Id2], [c0].[Name], [c0].[OneToMany_Optional_Inverse2Id1], [c0].[OneToMany_Optional_Inverse2Id2], [c0].[OneToMany_Optional_Self_Inverse2Id1], [c0].[OneToMany_Optional_Self_Inverse2Id2], [c0].[OneToMany_Required_Inverse2Id1], [c0].[OneToMany_Required_Inverse2Id2], [c0].[OneToMany_Required_Self_Inverse2Id1], [c0].[OneToMany_Required_Self_Inverse2Id2], [c0].[OneToOne_Optional_PK_Inverse2Id1], [c0].[OneToOne_Optional_PK_Inverse2Id2], [c0].[OneToOne_Optional_Self2Id1], [c0].[OneToOne_Optional_Self2Id2], [c].[Id1], [c].[Id2] +SELECT [c4].[Id1], [c4].[Id2], [c4].[Date], [c4].[Level1_Optional_Id1], [c4].[Level1_Optional_Id2], [c4].[Level1_Required_Id1], [c4].[Level1_Required_Id2], [c4].[Name], [c4].[OneToMany_Optional_Inverse2Id1], [c4].[OneToMany_Optional_Inverse2Id2], [c4].[OneToMany_Optional_Self_Inverse2Id1], [c4].[OneToMany_Optional_Self_Inverse2Id2], [c4].[OneToMany_Required_Inverse2Id1], [c4].[OneToMany_Required_Inverse2Id2], [c4].[OneToMany_Required_Self_Inverse2Id1], [c4].[OneToMany_Required_Self_Inverse2Id2], [c4].[OneToOne_Optional_PK_Inverse2Id1], [c4].[OneToOne_Optional_PK_Inverse2Id2], [c4].[OneToOne_Optional_Self2Id1], [c4].[OneToOne_Optional_Self2Id2], [c].[Id1], [c].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] +INNER JOIN [CompositeTwos] AS [c4] ON [c].[Id1] = [c4].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c4].[OneToMany_Required_Inverse2Id2] ORDER BY [c].[Id2], [c].[Id1] """); } @@ -306,16 +306,16 @@ FROM [CompositeOnes] AS [c] """, // """ -SELECT [c0].[Id1], [c0].[Id2], [c0].[Date], [c0].[Level1_Optional_Id1], [c0].[Level1_Optional_Id2], [c0].[Level1_Required_Id1], [c0].[Level1_Required_Id2], [c0].[Name], [c0].[OneToMany_Optional_Inverse2Id1], [c0].[OneToMany_Optional_Inverse2Id2], [c0].[OneToMany_Optional_Self_Inverse2Id1], [c0].[OneToMany_Optional_Self_Inverse2Id2], [c0].[OneToMany_Required_Inverse2Id1], [c0].[OneToMany_Required_Inverse2Id2], [c0].[OneToMany_Required_Self_Inverse2Id1], [c0].[OneToMany_Required_Self_Inverse2Id2], [c0].[OneToOne_Optional_PK_Inverse2Id1], [c0].[OneToOne_Optional_PK_Inverse2Id2], [c0].[OneToOne_Optional_Self2Id1], [c0].[OneToOne_Optional_Self2Id2], [c].[Id1], [c].[Id2] +SELECT [c2].[Id1], [c2].[Id2], [c2].[Date], [c2].[Level1_Optional_Id1], [c2].[Level1_Optional_Id2], [c2].[Level1_Required_Id1], [c2].[Level1_Required_Id2], [c2].[Name], [c2].[OneToMany_Optional_Inverse2Id1], [c2].[OneToMany_Optional_Inverse2Id2], [c2].[OneToMany_Optional_Self_Inverse2Id1], [c2].[OneToMany_Optional_Self_Inverse2Id2], [c2].[OneToMany_Required_Inverse2Id1], [c2].[OneToMany_Required_Inverse2Id2], [c2].[OneToMany_Required_Self_Inverse2Id1], [c2].[OneToMany_Required_Self_Inverse2Id2], [c2].[OneToOne_Optional_PK_Inverse2Id1], [c2].[OneToOne_Optional_PK_Inverse2Id2], [c2].[OneToOne_Optional_Self2Id1], [c2].[OneToOne_Optional_Self2Id2], [c].[Id1], [c].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Optional_Inverse2Id2] +INNER JOIN [CompositeTwos] AS [c2] ON [c].[Id1] = [c2].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c2].[OneToMany_Optional_Inverse2Id2] ORDER BY [c].[Id2], [c].[Id1] DESC """, // """ -SELECT [c0].[Id1], [c0].[Id2], [c0].[Date], [c0].[Level1_Optional_Id1], [c0].[Level1_Optional_Id2], [c0].[Level1_Required_Id1], [c0].[Level1_Required_Id2], [c0].[Name], [c0].[OneToMany_Optional_Inverse2Id1], [c0].[OneToMany_Optional_Inverse2Id2], [c0].[OneToMany_Optional_Self_Inverse2Id1], [c0].[OneToMany_Optional_Self_Inverse2Id2], [c0].[OneToMany_Required_Inverse2Id1], [c0].[OneToMany_Required_Inverse2Id2], [c0].[OneToMany_Required_Self_Inverse2Id1], [c0].[OneToMany_Required_Self_Inverse2Id2], [c0].[OneToOne_Optional_PK_Inverse2Id1], [c0].[OneToOne_Optional_PK_Inverse2Id2], [c0].[OneToOne_Optional_Self2Id1], [c0].[OneToOne_Optional_Self2Id2], [c].[Id1], [c].[Id2] +SELECT [c4].[Id1], [c4].[Id2], [c4].[Date], [c4].[Level1_Optional_Id1], [c4].[Level1_Optional_Id2], [c4].[Level1_Required_Id1], [c4].[Level1_Required_Id2], [c4].[Name], [c4].[OneToMany_Optional_Inverse2Id1], [c4].[OneToMany_Optional_Inverse2Id2], [c4].[OneToMany_Optional_Self_Inverse2Id1], [c4].[OneToMany_Optional_Self_Inverse2Id2], [c4].[OneToMany_Required_Inverse2Id1], [c4].[OneToMany_Required_Inverse2Id2], [c4].[OneToMany_Required_Self_Inverse2Id1], [c4].[OneToMany_Required_Self_Inverse2Id2], [c4].[OneToOne_Optional_PK_Inverse2Id1], [c4].[OneToOne_Optional_PK_Inverse2Id2], [c4].[OneToOne_Optional_Self2Id1], [c4].[OneToOne_Optional_Self2Id2], [c].[Id1], [c].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] +INNER JOIN [CompositeTwos] AS [c4] ON [c].[Id1] = [c4].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c4].[OneToMany_Required_Inverse2Id2] ORDER BY [c].[Id2], [c].[Id1] DESC """); } @@ -332,17 +332,17 @@ FROM [CompositeOnes] AS [c] """, // """ -SELECT [c0].[Id1], [c0].[Id2], [c0].[Date], [c0].[Level1_Optional_Id1], [c0].[Level1_Optional_Id2], [c0].[Level1_Required_Id1], [c0].[Level1_Required_Id2], [c0].[Name], [c0].[OneToMany_Optional_Inverse2Id1], [c0].[OneToMany_Optional_Inverse2Id2], [c0].[OneToMany_Optional_Self_Inverse2Id1], [c0].[OneToMany_Optional_Self_Inverse2Id2], [c0].[OneToMany_Required_Inverse2Id1], [c0].[OneToMany_Required_Inverse2Id2], [c0].[OneToMany_Required_Self_Inverse2Id1], [c0].[OneToMany_Required_Self_Inverse2Id2], [c0].[OneToOne_Optional_PK_Inverse2Id1], [c0].[OneToOne_Optional_PK_Inverse2Id2], [c0].[OneToOne_Optional_Self2Id1], [c0].[OneToOne_Optional_Self2Id2], [c].[Id1], [c].[Id2] +SELECT [c2].[Id1], [c2].[Id2], [c2].[Date], [c2].[Level1_Optional_Id1], [c2].[Level1_Optional_Id2], [c2].[Level1_Required_Id1], [c2].[Level1_Required_Id2], [c2].[Name], [c2].[OneToMany_Optional_Inverse2Id1], [c2].[OneToMany_Optional_Inverse2Id2], [c2].[OneToMany_Optional_Self_Inverse2Id1], [c2].[OneToMany_Optional_Self_Inverse2Id2], [c2].[OneToMany_Required_Inverse2Id1], [c2].[OneToMany_Required_Inverse2Id2], [c2].[OneToMany_Required_Self_Inverse2Id1], [c2].[OneToMany_Required_Self_Inverse2Id2], [c2].[OneToOne_Optional_PK_Inverse2Id1], [c2].[OneToOne_Optional_PK_Inverse2Id2], [c2].[OneToOne_Optional_Self2Id1], [c2].[OneToOne_Optional_Self2Id2], [c].[Id1], [c].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Optional_Inverse2Id2] -ORDER BY [c].[Id1], [c].[Id2], [c0].[Id2] +INNER JOIN [CompositeTwos] AS [c2] ON [c].[Id1] = [c2].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c2].[OneToMany_Optional_Inverse2Id2] +ORDER BY [c].[Id1], [c].[Id2], [c2].[Id2] """, // """ -SELECT [c0].[Id1], [c0].[Id2], [c0].[Date], [c0].[Level1_Optional_Id1], [c0].[Level1_Optional_Id2], [c0].[Level1_Required_Id1], [c0].[Level1_Required_Id2], [c0].[Name], [c0].[OneToMany_Optional_Inverse2Id1], [c0].[OneToMany_Optional_Inverse2Id2], [c0].[OneToMany_Optional_Self_Inverse2Id1], [c0].[OneToMany_Optional_Self_Inverse2Id2], [c0].[OneToMany_Required_Inverse2Id1], [c0].[OneToMany_Required_Inverse2Id2], [c0].[OneToMany_Required_Self_Inverse2Id1], [c0].[OneToMany_Required_Self_Inverse2Id2], [c0].[OneToOne_Optional_PK_Inverse2Id1], [c0].[OneToOne_Optional_PK_Inverse2Id2], [c0].[OneToOne_Optional_Self2Id1], [c0].[OneToOne_Optional_Self2Id2], [c].[Id1], [c].[Id2] +SELECT [c4].[Id1], [c4].[Id2], [c4].[Date], [c4].[Level1_Optional_Id1], [c4].[Level1_Optional_Id2], [c4].[Level1_Required_Id1], [c4].[Level1_Required_Id2], [c4].[Name], [c4].[OneToMany_Optional_Inverse2Id1], [c4].[OneToMany_Optional_Inverse2Id2], [c4].[OneToMany_Optional_Self_Inverse2Id1], [c4].[OneToMany_Optional_Self_Inverse2Id2], [c4].[OneToMany_Required_Inverse2Id1], [c4].[OneToMany_Required_Inverse2Id2], [c4].[OneToMany_Required_Self_Inverse2Id1], [c4].[OneToMany_Required_Self_Inverse2Id2], [c4].[OneToOne_Optional_PK_Inverse2Id1], [c4].[OneToOne_Optional_PK_Inverse2Id2], [c4].[OneToOne_Optional_Self2Id1], [c4].[OneToOne_Optional_Self2Id2], [c].[Id1], [c].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] -ORDER BY [c].[Id1], [c].[Id2], [c0].[Name] DESC +INNER JOIN [CompositeTwos] AS [c4] ON [c].[Id1] = [c4].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c4].[OneToMany_Required_Inverse2Id2] +ORDER BY [c].[Id1], [c].[Id2], [c4].[Name] DESC """); } @@ -358,17 +358,17 @@ FROM [CompositeOnes] AS [c] """, // """ -SELECT [c0].[Id1], [c0].[Id2], [c0].[Date], [c0].[Level1_Optional_Id1], [c0].[Level1_Optional_Id2], [c0].[Level1_Required_Id1], [c0].[Level1_Required_Id2], [c0].[Name], [c0].[OneToMany_Optional_Inverse2Id1], [c0].[OneToMany_Optional_Inverse2Id2], [c0].[OneToMany_Optional_Self_Inverse2Id1], [c0].[OneToMany_Optional_Self_Inverse2Id2], [c0].[OneToMany_Required_Inverse2Id1], [c0].[OneToMany_Required_Inverse2Id2], [c0].[OneToMany_Required_Self_Inverse2Id1], [c0].[OneToMany_Required_Self_Inverse2Id2], [c0].[OneToOne_Optional_PK_Inverse2Id1], [c0].[OneToOne_Optional_PK_Inverse2Id2], [c0].[OneToOne_Optional_Self2Id1], [c0].[OneToOne_Optional_Self2Id2], [c].[Id1], [c].[Id2] +SELECT [c2].[Id1], [c2].[Id2], [c2].[Date], [c2].[Level1_Optional_Id1], [c2].[Level1_Optional_Id2], [c2].[Level1_Required_Id1], [c2].[Level1_Required_Id2], [c2].[Name], [c2].[OneToMany_Optional_Inverse2Id1], [c2].[OneToMany_Optional_Inverse2Id2], [c2].[OneToMany_Optional_Self_Inverse2Id1], [c2].[OneToMany_Optional_Self_Inverse2Id2], [c2].[OneToMany_Required_Inverse2Id1], [c2].[OneToMany_Required_Inverse2Id2], [c2].[OneToMany_Required_Self_Inverse2Id1], [c2].[OneToMany_Required_Self_Inverse2Id2], [c2].[OneToOne_Optional_PK_Inverse2Id1], [c2].[OneToOne_Optional_PK_Inverse2Id2], [c2].[OneToOne_Optional_Self2Id1], [c2].[OneToOne_Optional_Self2Id2], [c].[Id1], [c].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Optional_Inverse2Id2] -ORDER BY [c].[Id2], [c].[Id1], [c0].[Id2] +INNER JOIN [CompositeTwos] AS [c2] ON [c].[Id1] = [c2].[OneToMany_Optional_Inverse2Id1] AND [c].[Id2] = [c2].[OneToMany_Optional_Inverse2Id2] +ORDER BY [c].[Id2], [c].[Id1], [c2].[Id2] """, // """ -SELECT [c0].[Id1], [c0].[Id2], [c0].[Date], [c0].[Level1_Optional_Id1], [c0].[Level1_Optional_Id2], [c0].[Level1_Required_Id1], [c0].[Level1_Required_Id2], [c0].[Name], [c0].[OneToMany_Optional_Inverse2Id1], [c0].[OneToMany_Optional_Inverse2Id2], [c0].[OneToMany_Optional_Self_Inverse2Id1], [c0].[OneToMany_Optional_Self_Inverse2Id2], [c0].[OneToMany_Required_Inverse2Id1], [c0].[OneToMany_Required_Inverse2Id2], [c0].[OneToMany_Required_Self_Inverse2Id1], [c0].[OneToMany_Required_Self_Inverse2Id2], [c0].[OneToOne_Optional_PK_Inverse2Id1], [c0].[OneToOne_Optional_PK_Inverse2Id2], [c0].[OneToOne_Optional_Self2Id1], [c0].[OneToOne_Optional_Self2Id2], [c].[Id1], [c].[Id2] +SELECT [c4].[Id1], [c4].[Id2], [c4].[Date], [c4].[Level1_Optional_Id1], [c4].[Level1_Optional_Id2], [c4].[Level1_Required_Id1], [c4].[Level1_Required_Id2], [c4].[Name], [c4].[OneToMany_Optional_Inverse2Id1], [c4].[OneToMany_Optional_Inverse2Id2], [c4].[OneToMany_Optional_Self_Inverse2Id1], [c4].[OneToMany_Optional_Self_Inverse2Id2], [c4].[OneToMany_Required_Inverse2Id1], [c4].[OneToMany_Required_Inverse2Id2], [c4].[OneToMany_Required_Self_Inverse2Id1], [c4].[OneToMany_Required_Self_Inverse2Id2], [c4].[OneToOne_Optional_PK_Inverse2Id1], [c4].[OneToOne_Optional_PK_Inverse2Id2], [c4].[OneToOne_Optional_Self2Id1], [c4].[OneToOne_Optional_Self2Id2], [c].[Id1], [c].[Id2] FROM [CompositeOnes] AS [c] -INNER JOIN [CompositeTwos] AS [c0] ON [c].[Id1] = [c0].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c0].[OneToMany_Required_Inverse2Id2] -ORDER BY [c].[Id2], [c].[Id1], [c0].[Name] DESC +INNER JOIN [CompositeTwos] AS [c4] ON [c].[Id1] = [c4].[OneToMany_Required_Inverse2Id1] AND [c].[Id2] = [c4].[OneToMany_Required_Inverse2Id2] +ORDER BY [c].[Id2], [c].[Id1], [c4].[Name] DESC """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Ef6GroupBySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Ef6GroupBySqlServerTest.cs index a5a7269e4b1..5b6c8552d5e 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Ef6GroupBySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Ef6GroupBySqlServerTest.cs @@ -495,91 +495,61 @@ FROM [OrderForLinq] AS [o] public override async Task Whats_new_2021_sample_3(bool async) { -#if DEBUG - // GroupBy debug assert. Issue #26104. - Assert.StartsWith( - "Missing alias in the list", - (await Assert.ThrowsAsync( - () => base.Whats_new_2021_sample_3(async))).Message); - - AssertSql(); -#else await base.Whats_new_2021_sample_3(async); AssertSql( """ SELECT ( - SELECT TOP(1) [p1].[LastName] - FROM [Person] AS [p1] - WHERE [p1].[MiddleInitial] = N'Q' AND [p1].[Age] = 20 AND ([p].[LastName] = [p1].[LastName] OR ([p].[LastName] IS NULL AND [p1].[LastName] IS NULL))) + SELECT TOP(1) [p0].[LastName] + FROM [Person] AS [p0] + WHERE [p0].[MiddleInitial] = N'Q' AND [p0].[Age] = 20 AND ([p].[LastName] = [p0].[LastName] OR ([p].[LastName] IS NULL AND [p0].[LastName] IS NULL))) FROM [Person] AS [p] WHERE [p].[MiddleInitial] = N'Q' AND [p].[Age] = 20 GROUP BY [p].[LastName] ORDER BY CAST(LEN(( - SELECT TOP(1) [p1].[LastName] - FROM [Person] AS [p1] - WHERE [p1].[MiddleInitial] = N'Q' AND [p1].[Age] = 20 AND ([p].[LastName] = [p1].[LastName] OR ([p].[LastName] IS NULL AND [p1].[LastName] IS NULL)))) AS int) + SELECT TOP(1) [p0].[LastName] + FROM [Person] AS [p0] + WHERE [p0].[MiddleInitial] = N'Q' AND [p0].[Age] = 20 AND ([p].[LastName] = [p0].[LastName] OR ([p].[LastName] IS NULL AND [p0].[LastName] IS NULL)))) AS int) """); -#endif } public override async Task Whats_new_2021_sample_5(bool async) { -#if DEBUG - // GroupBy debug assert. Issue #26104. - Assert.StartsWith( - "Missing alias in the list", - (await Assert.ThrowsAsync( - () => base.Whats_new_2021_sample_5(async))).Message); - - AssertSql(); -#else await base.Whats_new_2021_sample_5(async); AssertSql( """ SELECT ( - SELECT TOP(1) [p1].[LastName] - FROM [Person] AS [p1] - WHERE [p].[FirstName] = [p1].[FirstName] OR ([p].[FirstName] IS NULL AND [p1].[FirstName] IS NULL)) + SELECT TOP(1) [p0].[LastName] + FROM [Person] AS [p0] + WHERE [p].[FirstName] = [p0].[FirstName] OR ([p].[FirstName] IS NULL AND [p0].[FirstName] IS NULL)) FROM [Person] AS [p] GROUP BY [p].[FirstName] ORDER BY ( - SELECT TOP(1) [p1].[LastName] - FROM [Person] AS [p1] - WHERE [p].[FirstName] = [p1].[FirstName] OR ([p].[FirstName] IS NULL AND [p1].[FirstName] IS NULL)) + SELECT TOP(1) [p0].[LastName] + FROM [Person] AS [p0] + WHERE [p].[FirstName] = [p0].[FirstName] OR ([p].[FirstName] IS NULL AND [p0].[FirstName] IS NULL)) """); -#endif } public override async Task Whats_new_2021_sample_6(bool async) { -#if DEBUG - // GroupBy debug assert. Issue #26104. - Assert.StartsWith( - "Missing alias in the list", - (await Assert.ThrowsAsync( - () => base.Whats_new_2021_sample_6(async))).Message); - - AssertSql(); -#else await base.Whats_new_2021_sample_6(async); AssertSql( """ SELECT ( - SELECT TOP(1) [p1].[MiddleInitial] - FROM [Person] AS [p1] - WHERE [p1].[Age] = 20 AND [p].[Id] = [p1].[Id]) + SELECT TOP(1) [p0].[MiddleInitial] + FROM [Person] AS [p0] + WHERE [p0].[Age] = 20 AND [p].[Id] = [p0].[Id]) FROM [Person] AS [p] WHERE [p].[Age] = 20 GROUP BY [p].[Id] ORDER BY ( - SELECT TOP(1) [p1].[MiddleInitial] - FROM [Person] AS [p1] - WHERE [p1].[Age] = 20 AND [p].[Id] = [p1].[Id]) + SELECT TOP(1) [p0].[MiddleInitial] + FROM [Person] AS [p0] + WHERE [p0].[Age] = 20 AND [p].[Id] = [p0].[Id]) """); -#endif } public override async Task Whats_new_2021_sample_14(bool async) @@ -595,7 +565,7 @@ public override async Task Whats_new_2021_sample_15(bool async) AssertSql( """ -SELECT [t0].[Id], [t0].[Age], [t0].[FirstName], [t0].[LastName], [t0].[MiddleInitial] +SELECT [t1].[Id], [t1].[Age], [t1].[FirstName], [t1].[LastName], [t1].[MiddleInitial] FROM ( SELECT [f].[Id], [f].[Size] FROM [Person] AS [p] @@ -603,14 +573,14 @@ FROM [Person] AS [p] GROUP BY [f].[Id], [f].[Size] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Age], [t1].[FirstName], [t1].[LastName], [t1].[MiddleInitial], [t1].[Id0], [t1].[Size] + SELECT [t0].[Id], [t0].[Age], [t0].[FirstName], [t0].[LastName], [t0].[MiddleInitial], [t0].[Id0], [t0].[Size] FROM ( SELECT [p0].[Id], [p0].[Age], [p0].[FirstName], [p0].[LastName], [p0].[MiddleInitial], [f0].[Id] AS [Id0], [f0].[Size], ROW_NUMBER() OVER(PARTITION BY [f0].[Id], [f0].[Size] ORDER BY [p0].[Id] DESC) AS [row] FROM [Person] AS [p0] LEFT JOIN [Feet] AS [f0] ON [p0].[Id] = [f0].[Id] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON ([t].[Id] = [t0].[Id0] OR ([t].[Id] IS NULL AND [t0].[Id0] IS NULL)) AND ([t].[Size] = [t0].[Size] OR ([t].[Size] IS NULL AND [t0].[Size] IS NULL)) + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON ([t].[Id] = [t1].[Id0] OR ([t].[Id] IS NULL AND [t1].[Id0] IS NULL)) AND ([t].[Size] = [t1].[Size] OR ([t].[Size] IS NULL AND [t1].[Size] IS NULL)) """); } @@ -743,7 +713,7 @@ public override async Task Whats_new_2021_sample_2(bool async) AssertSql( """ -SELECT [t0].[FirstName], [t0].[FullName], [t0].[c] +SELECT [t1].[FirstName], [t1].[FullName], [t1].[c] FROM ( SELECT TOP(1) [p].[FirstName] FROM [Person] AS [p] @@ -751,13 +721,13 @@ GROUP BY [p].[FirstName] ORDER BY [p].[FirstName] ) AS [t] LEFT JOIN ( - SELECT [t1].[FirstName], [t1].[FullName], [t1].[c] + SELECT [t0].[FirstName], [t0].[FullName], [t0].[c] FROM ( SELECT [p0].[FirstName], COALESCE([p0].[FirstName], N'') + N' ' + COALESCE([p0].[MiddleInitial], N'') + N' ' + COALESCE([p0].[LastName], N'') AS [FullName], 1 AS [c], ROW_NUMBER() OVER(PARTITION BY [p0].[FirstName] ORDER BY [p0].[Id]) AS [row] FROM [Person] AS [p0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[FirstName] = [t0].[FirstName] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[FirstName] = [t1].[FirstName] ORDER BY [t].[FirstName] """); } @@ -768,22 +738,22 @@ public override async Task Whats_new_2021_sample_1(bool async) AssertSql( """ -SELECT [t0].[Id], [t0].[Age], [t0].[FirstName], [t0].[LastName], [t0].[MiddleInitial], [t].[FirstName], [s].[Id], [s].[Age], [s].[PersonId], [s].[Style] +SELECT [t1].[Id], [t1].[Age], [t1].[FirstName], [t1].[LastName], [t1].[MiddleInitial], [t].[FirstName], [s].[Id], [s].[Age], [s].[PersonId], [s].[Style] FROM ( SELECT [p].[FirstName] FROM [Person] AS [p] GROUP BY [p].[FirstName] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Age], [t1].[FirstName], [t1].[LastName], [t1].[MiddleInitial] + SELECT [t0].[Id], [t0].[Age], [t0].[FirstName], [t0].[LastName], [t0].[MiddleInitial] FROM ( SELECT [p0].[Id], [p0].[Age], [p0].[FirstName], [p0].[LastName], [p0].[MiddleInitial], ROW_NUMBER() OVER(PARTITION BY [p0].[FirstName] ORDER BY [p0].[FirstName], [p0].[LastName]) AS [row] FROM [Person] AS [p0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[FirstName] = [t0].[FirstName] -LEFT JOIN [Shoes] AS [s] ON [t0].[Id] = [s].[PersonId] -ORDER BY [t].[FirstName], [t0].[Id] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[FirstName] = [t1].[FirstName] +LEFT JOIN [Shoes] AS [s] ON [t1].[Id] = [s].[PersonId] +ORDER BY [t].[FirstName], [t1].[Id] """); } @@ -918,29 +888,29 @@ public override async Task Whats_new_2021_sample_11(bool async) AssertSql( """ -SELECT [t].[LastName], [t].[c], [t0].[Id], [t2].[Id], [t2].[Age], [t2].[FirstName], [t2].[LastName], [t2].[MiddleInitial], [t0].[Age], [t0].[FirstName], [t0].[LastName], [t0].[MiddleInitial] +SELECT [t].[LastName], [t].[c], [t1].[Id], [t3].[Id], [t3].[Age], [t3].[FirstName], [t3].[LastName], [t3].[MiddleInitial], [t1].[Age], [t1].[FirstName], [t1].[LastName], [t1].[MiddleInitial] FROM ( SELECT [p].[LastName], COUNT(*) AS [c] FROM [Person] AS [p] GROUP BY [p].[LastName] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Age], [t1].[FirstName], [t1].[LastName], [t1].[MiddleInitial] + SELECT [t0].[Id], [t0].[Age], [t0].[FirstName], [t0].[LastName], [t0].[MiddleInitial] FROM ( SELECT [p0].[Id], [p0].[Age], [p0].[FirstName], [p0].[LastName], [p0].[MiddleInitial], ROW_NUMBER() OVER(PARTITION BY [p0].[LastName] ORDER BY [p0].[Id]) AS [row] FROM [Person] AS [p0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[LastName] = [t0].[LastName] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[LastName] = [t1].[LastName] LEFT JOIN ( - SELECT [t3].[Id], [t3].[Age], [t3].[FirstName], [t3].[LastName], [t3].[MiddleInitial] + SELECT [t2].[Id], [t2].[Age], [t2].[FirstName], [t2].[LastName], [t2].[MiddleInitial] FROM ( SELECT [p1].[Id], [p1].[Age], [p1].[FirstName], [p1].[LastName], [p1].[MiddleInitial], ROW_NUMBER() OVER(PARTITION BY [p1].[LastName] ORDER BY [p1].[Id]) AS [row] FROM [Person] AS [p1] - ) AS [t3] - WHERE [t3].[row] <= 2 -) AS [t2] ON [t].[LastName] = [t2].[LastName] -ORDER BY [t].[LastName] DESC, [t0].[Id], [t2].[LastName], [t2].[Id] + ) AS [t2] + WHERE [t2].[row] <= 2 +) AS [t3] ON [t].[LastName] = [t3].[LastName] +ORDER BY [t].[LastName] DESC, [t1].[Id], [t3].[LastName], [t3].[Id] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/EntitySplittingQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/EntitySplittingQuerySqlServerTest.cs index 9d93c5a6890..6542ca2a3be 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/EntitySplittingQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/EntitySplittingQuerySqlServerTest.cs @@ -54,9 +54,9 @@ public override async Task Can_query_entity_which_is_split_selecting_only_part_2 AssertSql( """ -SELECT [e].[Id], [s0].[IntValue3], [s0].[StringValue3] +SELECT [e].[Id], [s].[IntValue3], [s].[StringValue3] FROM [EntityOne] AS [e] -INNER JOIN [SplitEntityOnePart2] AS [s0] ON [e].[Id] = [s0].[Id] +INNER JOIN [SplitEntityOnePart2] AS [s] ON [e].[Id] = [s].[Id] """); } @@ -179,9 +179,9 @@ public override async Task Custom_projection_trim_when_multiple_tables(bool asyn AssertSql( """ -SELECT [e].[IntValue1], [s0].[IntValue3], [e0].[Id], [e0].[Name] +SELECT [e].[IntValue1], [s].[IntValue3], [e0].[Id], [e0].[Name] FROM [EntityOne] AS [e] -INNER JOIN [SplitEntityOnePart2] AS [s0] ON [e].[Id] = [s0].[Id] +INNER JOIN [SplitEntityOnePart2] AS [s] ON [e].[Id] = [s].[Id] LEFT JOIN [EntityThree] AS [e0] ON [e].[EntityThreeId] = [e0].[Id] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs index 36e23122706..1e9d92a1bea 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs @@ -4515,12 +4515,12 @@ public override async Task Correlated_collections_multiple_nested_complex_collec AssertSql( """ -SELECT [g].[FullName], [g].[Nickname], [g].[SquadId], [t].[Id], [g1].[Nickname], [g1].[SquadId], [t0].[FullName], [t0].[Nickname], [t0].[SquadId], [t0].[Id], [t0].[Nickname0], [t0].[SquadId0], [t0].[Id0], [t0].[Name], [t0].[IsAutomatic], [t0].[Id1], [t0].[Nickname00], [t0].[HasSoulPatch], [t0].[SquadId00], [t2].[Id], [t2].[AmmunitionType], [t2].[IsAutomatic], [t2].[Name], [t2].[OwnerFullName], [t2].[SynergyWithId], [t2].[Nickname], [t2].[SquadId] +SELECT [g].[FullName], [g].[Nickname], [g].[SquadId], [t].[Id], [g1].[Nickname], [g1].[SquadId], [t1].[FullName], [t1].[Nickname], [t1].[SquadId], [t1].[Id], [t1].[Nickname0], [t1].[SquadId0], [t1].[Id0], [t1].[Name], [t1].[IsAutomatic], [t1].[Id1], [t1].[Nickname00], [t1].[HasSoulPatch], [t1].[SquadId00], [t2].[Id], [t2].[AmmunitionType], [t2].[IsAutomatic], [t2].[Name], [t2].[OwnerFullName], [t2].[SynergyWithId], [t2].[Nickname], [t2].[SquadId] FROM [Gears] AS [g] LEFT JOIN [Tags] AS [t] ON [g].[Nickname] = [t].[GearNickName] AND [g].[SquadId] = [t].[GearSquadId] LEFT JOIN [Gears] AS [g1] ON [t].[GearNickName] = [g1].[Nickname] AND [t].[GearSquadId] = [g1].[SquadId] LEFT JOIN ( - SELECT [g2].[FullName], [g2].[Nickname], [g2].[SquadId], [t1].[Id], [t1].[Nickname] AS [Nickname0], [t1].[SquadId] AS [SquadId0], [t1].[Id0], [t1].[Name], [t1].[IsAutomatic], [t1].[Id1], [t1].[Nickname0] AS [Nickname00], [t1].[HasSoulPatch], [t1].[SquadId0] AS [SquadId00], [g2].[Rank], [t1].[IsAutomatic0], [g2].[LeaderNickname], [g2].[LeaderSquadId] + SELECT [g2].[FullName], [g2].[Nickname], [g2].[SquadId], [t0].[Id], [t0].[Nickname] AS [Nickname0], [t0].[SquadId] AS [SquadId0], [t0].[Id0], [t0].[Name], [t0].[IsAutomatic], [t0].[Id1], [t0].[Nickname0] AS [Nickname00], [t0].[HasSoulPatch], [t0].[SquadId0] AS [SquadId00], [g2].[Rank], [t0].[IsAutomatic0], [g2].[LeaderNickname], [g2].[LeaderSquadId] FROM [Gears] AS [g2] LEFT JOIN ( SELECT [w].[Id], [g3].[Nickname], [g3].[SquadId], [s].[Id] AS [Id0], [w0].[Name], [w0].[IsAutomatic], [w0].[Id] AS [Id1], [g4].[Nickname] AS [Nickname0], [g4].[HasSoulPatch], [g4].[SquadId] AS [SquadId0], [w].[IsAutomatic] AS [IsAutomatic0], [w].[OwnerFullName] @@ -4530,9 +4530,9 @@ FROM [Weapons] AS [w] LEFT JOIN [Weapons] AS [w0] ON [g3].[FullName] = [w0].[OwnerFullName] LEFT JOIN [Gears] AS [g4] ON [s].[Id] = [g4].[SquadId] WHERE [w].[Name] <> N'Bar' OR [w].[Name] IS NULL - ) AS [t1] ON [g2].[FullName] = [t1].[OwnerFullName] + ) AS [t0] ON [g2].[FullName] = [t0].[OwnerFullName] WHERE [g2].[FullName] <> N'Foo' -) AS [t0] ON [g].[Nickname] = [t0].[LeaderNickname] AND [g].[SquadId] = [t0].[LeaderSquadId] +) AS [t1] ON [g].[Nickname] = [t1].[LeaderNickname] AND [g].[SquadId] = [t1].[LeaderSquadId] LEFT JOIN ( SELECT [w1].[Id], [w1].[AmmunitionType], [w1].[IsAutomatic], [w1].[Name], [w1].[OwnerFullName], [w1].[SynergyWithId], [g5].[Nickname], [g5].[SquadId] FROM [Weapons] AS [w1] @@ -4542,7 +4542,7 @@ FROM [Weapons] AS [w1] SELECT 1 FROM [Gears] AS [g0] WHERE [g].[Nickname] = [g0].[LeaderNickname] AND [g].[SquadId] = [g0].[LeaderSquadId]) -ORDER BY [g].[HasSoulPatch] DESC, [t].[Note], [g].[Nickname], [g].[SquadId], [t].[Id], [g1].[Nickname], [g1].[SquadId], [t0].[Rank], [t0].[Nickname], [t0].[SquadId], [t0].[IsAutomatic0], [t0].[Id], [t0].[Nickname0], [t0].[SquadId0], [t0].[Id0], [t0].[Id1], [t0].[Nickname00], [t0].[SquadId00], [t2].[IsAutomatic], [t2].[Nickname] DESC, [t2].[Id] +ORDER BY [g].[HasSoulPatch] DESC, [t].[Note], [g].[Nickname], [g].[SquadId], [t].[Id], [g1].[Nickname], [g1].[SquadId], [t1].[Rank], [t1].[Nickname], [t1].[SquadId], [t1].[IsAutomatic0], [t1].[Id], [t1].[Nickname0], [t1].[SquadId0], [t1].[Id0], [t1].[Id1], [t1].[Nickname00], [t1].[SquadId00], [t2].[IsAutomatic], [t2].[Nickname] DESC, [t2].[Id] """); } @@ -4783,21 +4783,21 @@ public override async Task Correlated_collections_deeply_nested_left_join(bool a AssertSql( """ -SELECT [t].[Id], [g].[Nickname], [g].[SquadId], [s].[Id], [t0].[Nickname], [t0].[SquadId], [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[SynergyWithId] +SELECT [t].[Id], [g].[Nickname], [g].[SquadId], [s].[Id], [t1].[Nickname], [t1].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] FROM [Tags] AS [t] LEFT JOIN [Gears] AS [g] ON [t].[GearNickName] = [g].[Nickname] LEFT JOIN [Squads] AS [s] ON [g].[SquadId] = [s].[Id] LEFT JOIN ( - SELECT [g0].[Nickname], [g0].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] + SELECT [g0].[Nickname], [g0].[SquadId], [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[SynergyWithId] FROM [Gears] AS [g0] LEFT JOIN ( SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] WHERE [w].[IsAutomatic] = CAST(1 AS bit) - ) AS [t1] ON [g0].[FullName] = [t1].[OwnerFullName] + ) AS [t0] ON [g0].[FullName] = [t0].[OwnerFullName] WHERE [g0].[HasSoulPatch] = CAST(1 AS bit) -) AS [t0] ON [s].[Id] = [t0].[SquadId] -ORDER BY [t].[Note], [g].[Nickname] DESC, [t].[Id], [g].[SquadId], [s].[Id], [t0].[Nickname], [t0].[SquadId] +) AS [t1] ON [s].[Id] = [t1].[SquadId] +ORDER BY [t].[Note], [g].[Nickname] DESC, [t].[Id], [g].[SquadId], [s].[Id], [t1].[Nickname], [t1].[SquadId] """); } @@ -6164,21 +6164,21 @@ public override async Task Group_by_with_include_with_entity_in_result_selector( AssertSql( """ -SELECT [t].[Rank], [t].[c], [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Name], [t0].[Location], [t0].[Nation] +SELECT [t].[Rank], [t].[c], [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[Discriminator], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Name], [t1].[Location], [t1].[Nation] FROM ( SELECT [g].[Rank], COUNT(*) AS [c] FROM [Gears] AS [g] GROUP BY [g].[Rank] ) AS [t] LEFT JOIN ( - SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[Discriminator], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Name], [t1].[Location], [t1].[Nation] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Name], [t0].[Location], [t0].[Nation] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], [c].[Name], [c].[Location], [c].[Nation], ROW_NUMBER() OVER(PARTITION BY [g0].[Rank] ORDER BY [g0].[Nickname]) AS [row] FROM [Gears] AS [g0] INNER JOIN [Cities] AS [c] ON [g0].[CityOfBirthName] = [c].[Name] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Rank] = [t0].[Rank] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Rank] = [t1].[Rank] ORDER BY [t].[Rank] """); } @@ -6201,22 +6201,22 @@ public override async Task Include_with_group_by_and_FirstOrDefault_gets_properl AssertSql( """ -SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Name], [t0].[Location], [t0].[Nation] +SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[Discriminator], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Name], [t1].[Location], [t1].[Nation] FROM ( SELECT [g].[Rank] FROM [Gears] AS [g] GROUP BY [g].[Rank] ) AS [t] LEFT JOIN ( - SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[Discriminator], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Name], [t1].[Location], [t1].[Nation] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Name], [t0].[Location], [t0].[Nation] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], [c].[Name], [c].[Location], [c].[Nation], ROW_NUMBER() OVER(PARTITION BY [g0].[Rank] ORDER BY [g0].[Nickname], [g0].[SquadId], [c].[Name]) AS [row] FROM [Gears] AS [g0] INNER JOIN [Cities] AS [c] ON [g0].[CityOfBirthName] = [c].[Name] WHERE [g0].[HasSoulPatch] = CAST(1 AS bit) - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Rank] = [t0].[Rank] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Rank] = [t1].[Rank] """); } @@ -6624,19 +6624,19 @@ public override async Task Anonymous_projection_take_followed_by_projecting_sing """ @__p_0='25' -SELECT [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[SynergyWithId] +SELECT [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] FROM ( SELECT TOP(@__p_0) [g].[FullName] FROM [Gears] AS [g] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] + SELECT [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[SynergyWithId] FROM ( SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], ROW_NUMBER() OVER(PARTITION BY [w].[OwnerFullName] ORDER BY [w].[Id]) AS [row] FROM [Weapons] AS [w] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[FullName] = [t0].[OwnerFullName] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[FullName] = [t1].[OwnerFullName] """); } @@ -6725,19 +6725,19 @@ public override async Task Project_collection_navigation_nested_with_take_compos AssertSql( """ -SELECT [t].[Id], [g].[Nickname], [g].[SquadId], [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank] +SELECT [t].[Id], [g].[Nickname], [g].[SquadId], [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[Discriminator], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank] FROM [Tags] AS [t] LEFT JOIN [Gears] AS [g] ON [t].[GearNickName] = [g].[Nickname] AND [t].[GearSquadId] = [g].[SquadId] LEFT JOIN ( - SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[Discriminator], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], ROW_NUMBER() OVER(PARTITION BY [g0].[LeaderNickname], [g0].[LeaderSquadId] ORDER BY [g0].[Nickname], [g0].[SquadId]) AS [row] FROM [Gears] AS [g0] - ) AS [t1] - WHERE [t1].[row] <= 50 -) AS [t0] ON ([g].[Nickname] = [t0].[LeaderNickname] OR ([g].[Nickname] IS NULL AND [t0].[LeaderNickname] IS NULL)) AND [g].[SquadId] = [t0].[LeaderSquadId] + ) AS [t0] + WHERE [t0].[row] <= 50 +) AS [t1] ON ([g].[Nickname] = [t1].[LeaderNickname] OR ([g].[Nickname] IS NULL AND [t1].[LeaderNickname] IS NULL)) AND [g].[SquadId] = [t1].[LeaderSquadId] WHERE [g].[Discriminator] = N'Officer' -ORDER BY [t].[Id], [g].[Nickname], [g].[SquadId], [t0].[Nickname] +ORDER BY [t].[Id], [g].[Nickname], [g].[SquadId], [t1].[Nickname] """); } @@ -9037,13 +9037,13 @@ public override async Task Correlated_collection_after_distinct_3_levels(bool as AssertSql( """ -SELECT [t].[Id], [t].[Name], [t1].[Nickname], [t1].[FullName], [t1].[HasSoulPatch], [t1].[Id], [t1].[Name], [t1].[Nickname0], [t1].[FullName0], [t1].[HasSoulPatch0], [t1].[Id0] +SELECT [t].[Id], [t].[Name], [t2].[Nickname], [t2].[FullName], [t2].[HasSoulPatch], [t2].[Id], [t2].[Name], [t2].[Nickname0], [t2].[FullName0], [t2].[HasSoulPatch0], [t2].[Id0] FROM ( SELECT DISTINCT [s].[Id], [s].[Name] FROM [Squads] AS [s] ) AS [t] OUTER APPLY ( - SELECT [t0].[Nickname], [t0].[FullName], [t0].[HasSoulPatch], [t2].[Id], [t2].[Name], [t2].[Nickname] AS [Nickname0], [t2].[FullName] AS [FullName0], [t2].[HasSoulPatch] AS [HasSoulPatch0], [t2].[Id0] + SELECT [t0].[Nickname], [t0].[FullName], [t0].[HasSoulPatch], [t1].[Id], [t1].[Name], [t1].[Nickname] AS [Nickname0], [t1].[FullName] AS [FullName0], [t1].[HasSoulPatch] AS [HasSoulPatch0], [t1].[Id0] FROM ( SELECT DISTINCT [g].[Nickname], [g].[FullName], [g].[HasSoulPatch] FROM [Gears] AS [g] @@ -9053,9 +9053,9 @@ OUTER APPLY ( SELECT [t].[Id], [t].[Name], [t0].[Nickname], [t0].[FullName], [t0].[HasSoulPatch], [w].[Id] AS [Id0] FROM [Weapons] AS [w] WHERE [w].[OwnerFullName] = [t0].[FullName] - ) AS [t2] -) AS [t1] -ORDER BY [t].[Id], [t1].[Nickname], [t1].[FullName], [t1].[HasSoulPatch] + ) AS [t1] +) AS [t2] +ORDER BY [t].[Id], [t2].[Nickname], [t2].[FullName], [t2].[HasSoulPatch] """); } @@ -10182,12 +10182,12 @@ public override async Task Nav_expansion_with_member_pushdown_inside_Contains_ar SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank] FROM [Gears] AS [g] WHERE ( - SELECT TOP(1) [w].[Name] - FROM [Weapons] AS [w] - WHERE [g].[FullName] = [w].[OwnerFullName] - ORDER BY [w].[Id]) IN ( - SELECT [w0].[value] - FROM OPENJSON(@__weapons_0) WITH ([value] nvarchar(max) '$') AS [w0] + SELECT TOP(1) [w0].[Name] + FROM [Weapons] AS [w0] + WHERE [g].[FullName] = [w0].[OwnerFullName] + ORDER BY [w0].[Id]) IN ( + SELECT [w].[value] + FROM OPENJSON(@__weapons_0) WITH ([value] nvarchar(max) '$') AS [w] ) """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/InheritanceRelationshipsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/InheritanceRelationshipsQuerySqlServerTest.cs index db23f72bcb4..5deb0207cad 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/InheritanceRelationshipsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/InheritanceRelationshipsQuerySqlServerTest.cs @@ -801,23 +801,23 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [b].[Id] = [b2].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // """ -SELECT [b0].[DerivedInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b3].[DerivedInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b0] ON [b].[Id] = [b0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b3] ON [b].[Id] = [b3].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // """ -SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedProperty], [b].[Id] +SELECT [b4].[Id], [b4].[BaseParentId], [b4].[Discriminator], [b4].[Name], [b4].[DerivedProperty], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseCollectionsOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] +INNER JOIN [BaseCollectionsOnBase] AS [b4] ON [b].[Id] = [b4].[BaseParentId] ORDER BY [b].[Id] """); } @@ -835,18 +835,18 @@ FROM [BaseCollectionsOnBase] AS [b] """, // """ -SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id], [b0].[Id] +SELECT [b3].[BaseInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b].[Id], [b0].[Id] FROM [BaseCollectionsOnBase] AS [b] LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b0].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b3] ON [b0].[Id] = [b3].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id], [b0].[Id] """, // """ -SELECT [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id], [b0].[Id] +SELECT [b4].[DerivedInheritanceRelationshipEntityId], [b4].[Id], [b4].[Name], [b].[Id], [b0].[Id] FROM [BaseCollectionsOnBase] AS [b] LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b0].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b4] ON [b0].[Id] = [b4].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id], [b0].[Id] """); } @@ -864,25 +864,25 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [b].[Id] = [b2].[BaseInheritanceRelationshipEntityId] WHERE [b].[Name] <> N'Bar' OR [b].[Name] IS NULL ORDER BY [b].[Id] """, // """ -SELECT [b0].[DerivedInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b3].[DerivedInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b0] ON [b].[Id] = [b0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b3] ON [b].[Id] = [b3].[DerivedInheritanceRelationshipEntityId] WHERE [b].[Name] <> N'Bar' OR [b].[Name] IS NULL ORDER BY [b].[Id] """, // """ -SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedProperty], [b].[Id] +SELECT [b4].[Id], [b4].[BaseParentId], [b4].[Discriminator], [b4].[Name], [b4].[DerivedProperty], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseCollectionsOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] +INNER JOIN [BaseCollectionsOnBase] AS [b4] ON [b].[Id] = [b4].[BaseParentId] WHERE [b].[Name] <> N'Bar' OR [b].[Name] IS NULL ORDER BY [b].[Id] """); @@ -902,19 +902,19 @@ WHERE [b].[Name] <> N'Bar' OR [b].[Name] IS NULL """, // """ -SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id], [b0].[Id] +SELECT [b3].[BaseInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b].[Id], [b0].[Id] FROM [BaseCollectionsOnBase] AS [b] LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b0].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b3] ON [b0].[Id] = [b3].[BaseInheritanceRelationshipEntityId] WHERE [b].[Name] <> N'Bar' OR [b].[Name] IS NULL ORDER BY [b].[Id], [b0].[Id] """, // """ -SELECT [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id], [b0].[Id] +SELECT [b4].[DerivedInheritanceRelationshipEntityId], [b4].[Id], [b4].[Name], [b].[Id], [b0].[Id] FROM [BaseCollectionsOnBase] AS [b] LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b0].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b4] ON [b0].[Id] = [b4].[DerivedInheritanceRelationshipEntityId] WHERE [b].[Name] <> N'Bar' OR [b].[Name] IS NULL ORDER BY [b].[Id], [b0].[Id] """); @@ -932,16 +932,16 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [b].[Id] = [b2].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // """ -SELECT [b0].[DerivedInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b3].[DerivedInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b0] ON [b].[Id] = [b0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b3] ON [b].[Id] = [b3].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // @@ -966,18 +966,18 @@ FROM [CollectionsOnBase] AS [c] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [c].[Id], [b].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [c].[Id], [b].[Id] FROM [CollectionsOnBase] AS [c] LEFT JOIN [BaseEntities] AS [b] ON [c].[ParentId] = [b].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [b].[Id] = [b2].[BaseInheritanceRelationshipEntityId] ORDER BY [c].[Id], [b].[Id] """, // """ -SELECT [b0].[DerivedInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [c].[Id], [b].[Id] +SELECT [b3].[DerivedInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [c].[Id], [b].[Id] FROM [CollectionsOnBase] AS [c] LEFT JOIN [BaseEntities] AS [b] ON [c].[ParentId] = [b].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b0] ON [b].[Id] = [b0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b3] ON [b].[Id] = [b3].[DerivedInheritanceRelationshipEntityId] ORDER BY [c].[Id], [b].[Id] """); } @@ -995,17 +995,17 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [b].[Id] = [b2].[BaseInheritanceRelationshipEntityId] WHERE [b].[Name] <> N'Bar' OR [b].[Name] IS NULL ORDER BY [b].[Id] """, // """ -SELECT [b0].[DerivedInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b3].[DerivedInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b0] ON [b].[Id] = [b0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b3] ON [b].[Id] = [b3].[DerivedInheritanceRelationshipEntityId] WHERE [b].[Name] <> N'Bar' OR [b].[Name] IS NULL ORDER BY [b].[Id] """, @@ -1033,19 +1033,19 @@ WHERE [c].[Name] <> N'Bar' OR [c].[Name] IS NULL """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [c].[Id], [b].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [c].[Id], [b].[Id] FROM [CollectionsOnBase] AS [c] LEFT JOIN [BaseEntities] AS [b] ON [c].[ParentId] = [b].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [b].[Id] = [b2].[BaseInheritanceRelationshipEntityId] WHERE [c].[Name] <> N'Bar' OR [c].[Name] IS NULL ORDER BY [c].[Id], [b].[Id] """, // """ -SELECT [b0].[DerivedInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [c].[Id], [b].[Id] +SELECT [b3].[DerivedInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [c].[Id], [b].[Id] FROM [CollectionsOnBase] AS [c] LEFT JOIN [BaseEntities] AS [b] ON [c].[ParentId] = [b].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b0] ON [b].[Id] = [b0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b3] ON [b].[Id] = [b3].[DerivedInheritanceRelationshipEntityId] WHERE [c].[Name] <> N'Bar' OR [c].[Name] IS NULL ORDER BY [c].[Id], [b].[Id] """); @@ -1064,25 +1064,25 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [b].[Id] = [b2].[BaseInheritanceRelationshipEntityId] WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' ORDER BY [b].[Id] """, // """ -SELECT [b0].[DerivedInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b3].[DerivedInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b0] ON [b].[Id] = [b0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b3] ON [b].[Id] = [b3].[DerivedInheritanceRelationshipEntityId] WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' ORDER BY [b].[Id] """, // """ -SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedProperty], [b].[Id] +SELECT [b4].[Id], [b4].[BaseParentId], [b4].[Discriminator], [b4].[Name], [b4].[DerivedProperty], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseCollectionsOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] +INNER JOIN [BaseCollectionsOnBase] AS [b4] ON [b].[Id] = [b4].[BaseParentId] WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' ORDER BY [b].[Id] """); @@ -1101,25 +1101,25 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [b].[Id] = [b2].[BaseInheritanceRelationshipEntityId] WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' ORDER BY [b].[Id] """, // """ -SELECT [b0].[DerivedInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b3].[DerivedInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b0] ON [b].[Id] = [b0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b3] ON [b].[Id] = [b3].[DerivedInheritanceRelationshipEntityId] WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' ORDER BY [b].[Id] """, // """ -SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[ParentId], [b0].[DerivedInheritanceRelationshipEntityId], [b].[Id] +SELECT [b4].[Id], [b4].[Discriminator], [b4].[Name], [b4].[ParentId], [b4].[DerivedInheritanceRelationshipEntityId], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseCollectionsOnDerived] AS [b0] ON [b].[Id] = [b0].[ParentId] +INNER JOIN [BaseCollectionsOnDerived] AS [b4] ON [b].[Id] = [b4].[ParentId] WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' ORDER BY [b].[Id] """); @@ -1138,17 +1138,17 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [b].[Id] = [b2].[BaseInheritanceRelationshipEntityId] WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' ORDER BY [b].[Id] """, // """ -SELECT [b0].[DerivedInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b3].[DerivedInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b0] ON [b].[Id] = [b0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b3] ON [b].[Id] = [b3].[DerivedInheritanceRelationshipEntityId] WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' ORDER BY [b].[Id] """, @@ -1157,9 +1157,9 @@ ORDER BY [b].[Id] SELECT [t].[Id], [t].[Discriminator], [t].[Name], [t].[ParentId], [t].[DerivedInheritanceRelationshipEntityId], [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN ( - SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[ParentId], [b0].[DerivedInheritanceRelationshipEntityId] - FROM [BaseCollectionsOnDerived] AS [b0] - WHERE [b0].[Discriminator] = N'DerivedCollectionOnDerived' + SELECT [b4].[Id], [b4].[Discriminator], [b4].[Name], [b4].[ParentId], [b4].[DerivedInheritanceRelationshipEntityId] + FROM [BaseCollectionsOnDerived] AS [b4] + WHERE [b4].[Discriminator] = N'DerivedCollectionOnDerived' ) AS [t] ON [b].[Id] = [t].[DerivedInheritanceRelationshipEntityId] WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' ORDER BY [b].[Id] @@ -1183,26 +1183,26 @@ FROM [BaseEntities] AS [b0] """, // """ -SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id], [t].[Id] +SELECT [b3].[BaseInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b].[Id], [t].[Id] FROM [BaseCollectionsOnDerived] AS [b] LEFT JOIN ( SELECT [b0].[Id] FROM [BaseEntities] AS [b0] WHERE [b0].[Discriminator] = N'DerivedInheritanceRelationshipEntity' ) AS [t] ON [b].[ParentId] = [t].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [t].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b3] ON [t].[Id] = [b3].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id], [t].[Id] """, // """ -SELECT [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id], [t].[Id] +SELECT [b4].[DerivedInheritanceRelationshipEntityId], [b4].[Id], [b4].[Name], [b].[Id], [t].[Id] FROM [BaseCollectionsOnDerived] AS [b] LEFT JOIN ( SELECT [b0].[Id] FROM [BaseEntities] AS [b0] WHERE [b0].[Discriminator] = N'DerivedInheritanceRelationshipEntity' ) AS [t] ON [b].[ParentId] = [t].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [t].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b4] ON [t].[Id] = [b4].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id], [t].[Id] """); } @@ -1220,18 +1220,18 @@ FROM [BaseEntities] AS [b] """, // """ -SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id], [b0].[Id] +SELECT [b3].[BaseInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b].[Id], [b0].[Id] FROM [BaseEntities] AS [b] LEFT JOIN [BaseReferencesOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b3] ON [b].[Id] = [b3].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id], [b0].[Id] """, // """ -SELECT [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id], [b0].[Id] +SELECT [b4].[DerivedInheritanceRelationshipEntityId], [b4].[Id], [b4].[Name], [b].[Id], [b0].[Id] FROM [BaseEntities] AS [b] LEFT JOIN [BaseReferencesOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b4] ON [b].[Id] = [b4].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id], [b0].[Id] """, // @@ -1258,19 +1258,19 @@ FROM [BaseEntities] AS [b] """, // """ -SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id], [b0].[Id] +SELECT [b3].[BaseInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b].[Id], [b0].[Id] FROM [BaseEntities] AS [b] LEFT JOIN [BaseReferencesOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b3] ON [b].[Id] = [b3].[BaseInheritanceRelationshipEntityId] WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' ORDER BY [b].[Id], [b0].[Id] """, // """ -SELECT [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id], [b0].[Id] +SELECT [b4].[DerivedInheritanceRelationshipEntityId], [b4].[Id], [b4].[Name], [b].[Id], [b0].[Id] FROM [BaseEntities] AS [b] LEFT JOIN [BaseReferencesOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b4] ON [b].[Id] = [b4].[DerivedInheritanceRelationshipEntityId] WHERE [b].[Discriminator] = N'DerivedInheritanceRelationshipEntity' ORDER BY [b].[Id], [b0].[Id] """, @@ -1299,20 +1299,20 @@ FROM [NestedCollections] AS [n] """, // """ -SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [n].[Id], [b].[Id], [b0].[Id] +SELECT [b3].[BaseInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [n].[Id], [b].[Id], [b0].[Id] FROM [NestedCollections] AS [n] LEFT JOIN [BaseReferencesOnBase] AS [b] ON [n].[ParentReferenceId] = [b].[Id] LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b0].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b3] ON [b0].[Id] = [b3].[BaseInheritanceRelationshipEntityId] ORDER BY [n].[Id], [b].[Id], [b0].[Id] """, // """ -SELECT [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [n].[Id], [b].[Id], [b0].[Id] +SELECT [b4].[DerivedInheritanceRelationshipEntityId], [b4].[Id], [b4].[Name], [n].[Id], [b].[Id], [b0].[Id] FROM [NestedCollections] AS [n] LEFT JOIN [BaseReferencesOnBase] AS [b] ON [n].[ParentReferenceId] = [b].[Id] LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b0].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b4] ON [b0].[Id] = [b4].[DerivedInheritanceRelationshipEntityId] ORDER BY [n].[Id], [b].[Id], [b0].[Id] """); } @@ -1329,16 +1329,16 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [b].[Id] = [b2].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // """ -SELECT [b0].[DerivedInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b3].[DerivedInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b0] ON [b].[Id] = [b0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b3] ON [b].[Id] = [b3].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // @@ -1346,9 +1346,9 @@ ORDER BY [b].[Id] SELECT [t].[Id], [t].[BaseParentId], [t].[Discriminator], [t].[Name], [t].[DerivedProperty], [t].[Id0], [t].[Discriminator0], [t].[Name0], [t].[ParentCollectionId], [t].[ParentReferenceId], [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedProperty], [n].[Id] AS [Id0], [n].[Discriminator] AS [Discriminator0], [n].[Name] AS [Name0], [n].[ParentCollectionId], [n].[ParentReferenceId] - FROM [BaseCollectionsOnBase] AS [b0] - LEFT JOIN [NestedReferences] AS [n] ON [b0].[Id] = [n].[ParentCollectionId] + SELECT [b4].[Id], [b4].[BaseParentId], [b4].[Discriminator], [b4].[Name], [b4].[DerivedProperty], [n].[Id] AS [Id0], [n].[Discriminator] AS [Discriminator0], [n].[Name] AS [Name0], [n].[ParentCollectionId], [n].[ParentReferenceId] + FROM [BaseCollectionsOnBase] AS [b4] + LEFT JOIN [NestedReferences] AS [n] ON [b4].[Id] = [n].[ParentCollectionId] ) AS [t] ON [b].[Id] = [t].[BaseParentId] ORDER BY [b].[Id] """); @@ -1368,20 +1368,20 @@ FROM [NestedReferences] AS [n] """, // """ -SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [n].[Id], [b].[Id], [b0].[Id] +SELECT [b3].[BaseInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [n].[Id], [b].[Id], [b0].[Id] FROM [NestedReferences] AS [n] LEFT JOIN [BaseCollectionsOnBase] AS [b] ON [n].[ParentCollectionId] = [b].[Id] LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b0].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b3] ON [b0].[Id] = [b3].[BaseInheritanceRelationshipEntityId] ORDER BY [n].[Id], [b].[Id], [b0].[Id] """, // """ -SELECT [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [n].[Id], [b].[Id], [b0].[Id] +SELECT [b4].[DerivedInheritanceRelationshipEntityId], [b4].[Id], [b4].[Name], [n].[Id], [b].[Id], [b0].[Id] FROM [NestedReferences] AS [n] LEFT JOIN [BaseCollectionsOnBase] AS [b] ON [n].[ParentCollectionId] = [b].[Id] LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b0].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b4] ON [b0].[Id] = [b4].[DerivedInheritanceRelationshipEntityId] ORDER BY [n].[Id], [b].[Id], [b0].[Id] """); } @@ -1398,32 +1398,32 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [b].[Id] = [b2].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // """ -SELECT [b0].[DerivedInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b3].[DerivedInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b0] ON [b].[Id] = [b0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b3] ON [b].[Id] = [b3].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // """ -SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [b0].[DerivedProperty], [b].[Id] +SELECT [b4].[Id], [b4].[BaseParentId], [b4].[Discriminator], [b4].[Name], [b4].[DerivedProperty], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseCollectionsOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] -ORDER BY [b].[Id], [b0].[Id] +INNER JOIN [BaseCollectionsOnBase] AS [b4] ON [b].[Id] = [b4].[BaseParentId] +ORDER BY [b].[Id], [b4].[Id] """, // """ -SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], [b].[Id], [b0].[Id] +SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], [b].[Id], [b4].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseCollectionsOnBase] AS [b0] ON [b].[Id] = [b0].[BaseParentId] -INNER JOIN [NestedCollections] AS [n] ON [b0].[Id] = [n].[ParentCollectionId] -ORDER BY [b].[Id], [b0].[Id] +INNER JOIN [BaseCollectionsOnBase] AS [b4] ON [b].[Id] = [b4].[BaseParentId] +INNER JOIN [NestedCollections] AS [n] ON [b4].[Id] = [n].[ParentCollectionId] +ORDER BY [b].[Id], [b4].[Id] """); } @@ -1441,20 +1441,20 @@ FROM [NestedCollections] AS [n] """, // """ -SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [n].[Id], [b].[Id], [b0].[Id] +SELECT [b3].[BaseInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [n].[Id], [b].[Id], [b0].[Id] FROM [NestedCollections] AS [n] LEFT JOIN [BaseCollectionsOnBase] AS [b] ON [n].[ParentCollectionId] = [b].[Id] LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b0].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b3] ON [b0].[Id] = [b3].[BaseInheritanceRelationshipEntityId] ORDER BY [n].[Id], [b].[Id], [b0].[Id] """, // """ -SELECT [b1].[DerivedInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [n].[Id], [b].[Id], [b0].[Id] +SELECT [b4].[DerivedInheritanceRelationshipEntityId], [b4].[Id], [b4].[Name], [n].[Id], [b].[Id], [b0].[Id] FROM [NestedCollections] AS [n] LEFT JOIN [BaseCollectionsOnBase] AS [b] ON [n].[ParentCollectionId] = [b].[Id] LEFT JOIN [BaseEntities] AS [b0] ON [b].[BaseParentId] = [b0].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b1] ON [b0].[Id] = [b1].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b4] ON [b0].[Id] = [b4].[DerivedInheritanceRelationshipEntityId] ORDER BY [n].[Id], [b].[Id], [b0].[Id] """); } @@ -1514,17 +1514,17 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [b].[Id] = [b2].[BaseInheritanceRelationshipEntityId] WHERE [b].[Id] >= 4 ORDER BY [b].[Id] """, // """ -SELECT [b0].[DerivedInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b3].[DerivedInheritanceRelationshipEntityId], [b3].[Id], [b3].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b0] ON [b].[Id] = [b0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnDerived] AS [b3] ON [b].[Id] = [b3].[DerivedInheritanceRelationshipEntityId] WHERE [b].[Id] >= 4 ORDER BY [b].[Id] """, @@ -1533,9 +1533,9 @@ ORDER BY [b].[Id] SELECT [t].[Id], [t].[Discriminator], [t].[Name], [t].[ParentId], [t].[DerivedInheritanceRelationshipEntityId], [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN ( - SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[ParentId], [b0].[DerivedInheritanceRelationshipEntityId] - FROM [BaseCollectionsOnDerived] AS [b0] - WHERE [b0].[Discriminator] = N'DerivedCollectionOnDerived' + SELECT [b4].[Id], [b4].[Discriminator], [b4].[Name], [b4].[ParentId], [b4].[DerivedInheritanceRelationshipEntityId] + FROM [BaseCollectionsOnDerived] AS [b4] + WHERE [b4].[Discriminator] = N'DerivedCollectionOnDerived' ) AS [t] ON [b].[Id] = [t].[DerivedInheritanceRelationshipEntityId] WHERE [b].[Id] >= 4 ORDER BY [b].[Id] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/JsonQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/JsonQuerySqlServerTest.cs index 319bf388b4a..b4ce7c8fee5 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/JsonQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/JsonQuerySqlServerTest.cs @@ -1345,15 +1345,15 @@ public override async Task Json_multiple_collection_projections(bool async) { await base.Json_multiple_collection_projections(async); - AssertSql( - """ -SELECT [j].[Id], [t].[Id], [t].[SomethingSomething], [t].[key], [t0].[Id], [t0].[Name], [t0].[Names], [t0].[Number], [t0].[Numbers], [t0].[c], [t0].[c0], [t1].[key], [t1].[Id], [t1].[Date], [t1].[Enum], [t1].[Enums], [t1].[Fraction], [t1].[NullableEnum], [t1].[NullableEnums], [t1].[c], [t1].[c0], [t1].[key0], [j0].[Id], [j0].[Name], [j0].[ParentId] +AssertSql( +""" +SELECT [j].[Id], [t0].[Id], [t0].[SomethingSomething], [t0].[key], [t].[Id], [t].[Name], [t].[Names], [t].[Number], [t].[Numbers], [t].[c], [t].[c0], [t2].[key], [t2].[Id], [t2].[Date], [t2].[Enum], [t2].[Enums], [t2].[Fraction], [t2].[NullableEnum], [t2].[NullableEnums], [t2].[c], [t2].[c0], [t2].[key0], [j0].[Id], [j0].[Name], [j0].[ParentId] FROM [JsonEntitiesBasic] AS [j] OUTER APPLY ( SELECT [j].[Id], JSON_VALUE([o].[value], '$.SomethingSomething') AS [SomethingSomething], [o].[key], CAST([o].[key] AS int) AS [c] FROM OPENJSON([j].[OwnedReferenceRoot], '$.OwnedReferenceBranch.OwnedCollectionLeaf') AS [o] WHERE JSON_VALUE([o].[value], '$.SomethingSomething') <> N'Baz' OR JSON_VALUE([o].[value], '$.SomethingSomething') IS NULL -) AS [t] +) AS [t0] OUTER APPLY ( SELECT DISTINCT [j].[Id], [o0].[Name], [o0].[Names], [o0].[Number], [o0].[Numbers], [o0].[OwnedCollectionBranch] AS [c], [o0].[OwnedReferenceBranch] AS [c0] FROM OPENJSON([j].[OwnedCollectionRoot], '$') WITH ( @@ -1364,18 +1364,18 @@ [Numbers] nvarchar(max) '$.Numbers' AS JSON, [OwnedCollectionBranch] nvarchar(max) '$.OwnedCollectionBranch' AS JSON, [OwnedReferenceBranch] nvarchar(max) '$.OwnedReferenceBranch' AS JSON ) AS [o0] -) AS [t0] +) AS [t] OUTER APPLY ( - SELECT [o1].[key], [t2].[Id], [t2].[Date], [t2].[Enum], [t2].[Enums], [t2].[Fraction], [t2].[NullableEnum], [t2].[NullableEnums], [t2].[c], [t2].[c0], [t2].[key] AS [key0], CAST([o1].[key] AS int) AS [c1], [t2].[c1] AS [c10] + SELECT [o1].[key], [t1].[Id], [t1].[Date], [t1].[Enum], [t1].[Enums], [t1].[Fraction], [t1].[NullableEnum], [t1].[NullableEnums], [t1].[c], [t1].[c0], [t1].[key] AS [key0], CAST([o1].[key] AS int) AS [c1], [t1].[c1] AS [c10] FROM OPENJSON([j].[OwnedCollectionRoot], '$') AS [o1] OUTER APPLY ( SELECT [j].[Id], CAST(JSON_VALUE([o2].[value], '$.Date') AS datetime2) AS [Date], CAST(JSON_VALUE([o2].[value], '$.Enum') AS int) AS [Enum], JSON_QUERY([o2].[value], '$.Enums') AS [Enums], CAST(JSON_VALUE([o2].[value], '$.Fraction') AS decimal(18,2)) AS [Fraction], CAST(JSON_VALUE([o2].[value], '$.NullableEnum') AS int) AS [NullableEnum], JSON_QUERY([o2].[value], '$.NullableEnums') AS [NullableEnums], JSON_QUERY([o2].[value], '$.OwnedCollectionLeaf') AS [c], JSON_QUERY([o2].[value], '$.OwnedReferenceLeaf') AS [c0], [o2].[key], CAST([o2].[key] AS int) AS [c1] FROM OPENJSON(JSON_QUERY([o1].[value], '$.OwnedCollectionBranch'), '$') AS [o2] WHERE CAST(JSON_VALUE([o2].[value], '$.Date') AS datetime2) <> '2000-01-01T00:00:00.0000000' OR CAST(JSON_VALUE([o2].[value], '$.Date') AS datetime2) IS NULL - ) AS [t2] -) AS [t1] + ) AS [t1] +) AS [t2] LEFT JOIN [JsonEntitiesBasicForCollection] AS [j0] ON [j].[Id] = [j0].[ParentId] -ORDER BY [j].[Id], [t].[c], [t].[key], [t0].[Name], [t0].[Names], [t0].[Number], [t0].[Numbers], [t1].[c1], [t1].[key], [t1].[c10], [t1].[key0] +ORDER BY [j].[Id], [t0].[c], [t0].[key], [t].[Name], [t].[Names], [t].[Number], [t].[Numbers], [t2].[c1], [t2].[key], [t2].[c10], [t2].[key0] """); } @@ -1886,7 +1886,7 @@ public override async Task Group_by_First_on_json_scalar(bool async) AssertSql( """ -SELECT [t1].[Id], [t1].[EntityBasicId], [t1].[Name], [t1].[c], [t1].[c0] +SELECT [t3].[Id], [t3].[EntityBasicId], [t3].[Name], [t3].[c], [t3].[c0] FROM ( SELECT [t].[Key] FROM ( @@ -1894,18 +1894,18 @@ SELECT JSON_VALUE([j].[OwnedReferenceRoot], '$.Name') AS [Key] FROM [JsonEntitiesBasic] AS [j] ) AS [t] GROUP BY [t].[Key] -) AS [t0] +) AS [t1] LEFT JOIN ( SELECT [t2].[Id], [t2].[EntityBasicId], [t2].[Name], [t2].[c] AS [c], [t2].[c0] AS [c0], [t2].[Key] FROM ( - SELECT [t3].[Id], [t3].[EntityBasicId], [t3].[Name], [t3].[c] AS [c], [t3].[c0] AS [c0], [t3].[Key], ROW_NUMBER() OVER(PARTITION BY [t3].[Key] ORDER BY [t3].[Id]) AS [row] + SELECT [t0].[Id], [t0].[EntityBasicId], [t0].[Name], [t0].[c] AS [c], [t0].[c0] AS [c0], [t0].[Key], ROW_NUMBER() OVER(PARTITION BY [t0].[Key] ORDER BY [t0].[Id]) AS [row] FROM ( SELECT [j0].[Id], [j0].[EntityBasicId], [j0].[Name], [j0].[OwnedCollectionRoot] AS [c], [j0].[OwnedReferenceRoot] AS [c0], JSON_VALUE([j0].[OwnedReferenceRoot], '$.Name') AS [Key] FROM [JsonEntitiesBasic] AS [j0] - ) AS [t3] + ) AS [t0] ) AS [t2] WHERE [t2].[row] <= 1 -) AS [t1] ON [t0].[Key] = [t1].[Key] +) AS [t3] ON [t1].[Key] = [t3].[Key] """); } @@ -1915,7 +1915,7 @@ public override async Task Group_by_FirstOrDefault_on_json_scalar(bool async) AssertSql( """ -SELECT [t1].[Id], [t1].[EntityBasicId], [t1].[Name], [t1].[c], [t1].[c0] +SELECT [t3].[Id], [t3].[EntityBasicId], [t3].[Name], [t3].[c], [t3].[c0] FROM ( SELECT [t].[Key] FROM ( @@ -1923,18 +1923,18 @@ SELECT JSON_VALUE([j].[OwnedReferenceRoot], '$.Name') AS [Key] FROM [JsonEntitiesBasic] AS [j] ) AS [t] GROUP BY [t].[Key] -) AS [t0] +) AS [t1] LEFT JOIN ( SELECT [t2].[Id], [t2].[EntityBasicId], [t2].[Name], [t2].[c] AS [c], [t2].[c0] AS [c0], [t2].[Key] FROM ( - SELECT [t3].[Id], [t3].[EntityBasicId], [t3].[Name], [t3].[c] AS [c], [t3].[c0] AS [c0], [t3].[Key], ROW_NUMBER() OVER(PARTITION BY [t3].[Key] ORDER BY [t3].[Id]) AS [row] + SELECT [t0].[Id], [t0].[EntityBasicId], [t0].[Name], [t0].[c] AS [c], [t0].[c0] AS [c0], [t0].[Key], ROW_NUMBER() OVER(PARTITION BY [t0].[Key] ORDER BY [t0].[Id]) AS [row] FROM ( SELECT [j0].[Id], [j0].[EntityBasicId], [j0].[Name], [j0].[OwnedCollectionRoot] AS [c], [j0].[OwnedReferenceRoot] AS [c0], JSON_VALUE([j0].[OwnedReferenceRoot], '$.Name') AS [Key] FROM [JsonEntitiesBasic] AS [j0] - ) AS [t3] + ) AS [t0] ) AS [t2] WHERE [t2].[row] <= 1 -) AS [t1] ON [t0].[Key] = [t1].[Key] +) AS [t3] ON [t1].[Key] = [t3].[Key] """); } @@ -1944,7 +1944,7 @@ public override async Task Group_by_Skip_Take_on_json_scalar(bool async) AssertSql( """ -SELECT [t0].[Key], [t1].[Id], [t1].[EntityBasicId], [t1].[Name], [t1].[c], [t1].[c0] +SELECT [t1].[Key], [t3].[Id], [t3].[EntityBasicId], [t3].[Name], [t3].[c], [t3].[c0] FROM ( SELECT [t].[Key] FROM ( @@ -1952,19 +1952,19 @@ SELECT JSON_VALUE([j].[OwnedReferenceRoot], '$.Name') AS [Key] FROM [JsonEntitiesBasic] AS [j] ) AS [t] GROUP BY [t].[Key] -) AS [t0] +) AS [t1] LEFT JOIN ( SELECT [t2].[Id], [t2].[EntityBasicId], [t2].[Name], [t2].[c], [t2].[c0], [t2].[Key] FROM ( - SELECT [t3].[Id], [t3].[EntityBasicId], [t3].[Name], [t3].[c] AS [c], [t3].[c0] AS [c0], [t3].[Key], ROW_NUMBER() OVER(PARTITION BY [t3].[Key] ORDER BY [t3].[Id]) AS [row] + SELECT [t0].[Id], [t0].[EntityBasicId], [t0].[Name], [t0].[c] AS [c], [t0].[c0] AS [c0], [t0].[Key], ROW_NUMBER() OVER(PARTITION BY [t0].[Key] ORDER BY [t0].[Id]) AS [row] FROM ( SELECT [j0].[Id], [j0].[EntityBasicId], [j0].[Name], [j0].[OwnedCollectionRoot] AS [c], [j0].[OwnedReferenceRoot] AS [c0], JSON_VALUE([j0].[OwnedReferenceRoot], '$.Name') AS [Key] FROM [JsonEntitiesBasic] AS [j0] - ) AS [t3] + ) AS [t0] ) AS [t2] WHERE 1 < [t2].[row] AND [t2].[row] <= 6 -) AS [t1] ON [t0].[Key] = [t1].[Key] -ORDER BY [t0].[Key], [t1].[Key], [t1].[Id] +) AS [t3] ON [t1].[Key] = [t3].[Key] +ORDER BY [t1].[Key], [t3].[Key], [t3].[Id] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/ManyToManyNoTrackingQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/ManyToManyNoTrackingQuerySqlServerTest.cs index 4c0f9191a74..9573816be23 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/ManyToManyNoTrackingQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/ManyToManyNoTrackingQuerySqlServerTest.cs @@ -987,28 +987,28 @@ public override async Task Filter_include_on_skip_navigation_combined_with_filte SELECT [e].[Id], [e].[CollectionInverseId], [e].[Name], [e].[ReferenceInverseId], [t3].[Id], [t3].[Name], [t3].[OneId], [t3].[ThreeId], [t3].[Id0], [t3].[CollectionInverseId], [t3].[ExtraId], [t3].[Name0], [t3].[ReferenceInverseId], [t3].[OneId0], [t3].[TwoId], [t3].[Id1], [t3].[Discriminator], [t3].[Name1], [t3].[Number], [t3].[IsGreen], [t3].[EntityBranchId], [t3].[EntityOneId] FROM [EntityThrees] AS [e] LEFT JOIN ( - SELECT [e0].[Id], [e0].[Name], [j].[OneId], [j].[ThreeId], [t0].[Id] AS [Id0], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name] AS [Name0], [t0].[ReferenceInverseId], [t0].[OneId] AS [OneId0], [t0].[TwoId], [t1].[Id] AS [Id1], [t1].[Discriminator], [t1].[Name] AS [Name1], [t1].[Number], [t1].[IsGreen], [t1].[EntityBranchId], [t1].[EntityOneId] + SELECT [e0].[Id], [e0].[Name], [j].[OneId], [j].[ThreeId], [t1].[Id] AS [Id0], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name] AS [Name0], [t1].[ReferenceInverseId], [t1].[OneId] AS [OneId0], [t1].[TwoId], [t2].[Id] AS [Id1], [t2].[Discriminator], [t2].[Name] AS [Name1], [t2].[Number], [t2].[IsGreen], [t2].[EntityBranchId], [t2].[EntityOneId] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] LEFT JOIN ( - SELECT [t].[Id], [t].[CollectionInverseId], [t].[ExtraId], [t].[Name], [t].[ReferenceInverseId], [t].[OneId], [t].[TwoId] + SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name], [t0].[ReferenceInverseId], [t0].[OneId], [t0].[TwoId] FROM ( SELECT [e1].[Id], [e1].[CollectionInverseId], [e1].[ExtraId], [e1].[Name], [e1].[ReferenceInverseId], [j0].[OneId], [j0].[TwoId], ROW_NUMBER() OVER(PARTITION BY [j0].[OneId] ORDER BY [e1].[Id]) AS [row] FROM [JoinOneToTwo] AS [j0] INNER JOIN [EntityTwos] AS [e1] ON [j0].[TwoId] = [e1].[Id] - ) AS [t] - WHERE 1 < [t].[row] AND [t].[row] <= 3 - ) AS [t0] ON [e0].[Id] = [t0].[OneId] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 + ) AS [t1] ON [e0].[Id] = [t1].[OneId] LEFT JOIN ( - SELECT [t2].[Id], [t2].[Discriminator], [t2].[Name], [t2].[Number], [t2].[IsGreen], [j1].[EntityBranchId], [j1].[EntityOneId] + SELECT [t].[Id], [t].[Discriminator], [t].[Name], [t].[Number], [t].[IsGreen], [j1].[EntityBranchId], [j1].[EntityOneId] FROM [JoinOneToBranch] AS [j1] INNER JOIN ( SELECT [e2].[Id], [e2].[Discriminator], [e2].[Name], [e2].[Number], [e2].[IsGreen] FROM [EntityRoots] AS [e2] WHERE [e2].[Discriminator] IN (N'EntityBranch', N'EntityLeaf') - ) AS [t2] ON [j1].[EntityBranchId] = [t2].[Id] - WHERE [t2].[Id] < 20 - ) AS [t1] ON [e0].[Id] = [t1].[EntityOneId] + ) AS [t] ON [j1].[EntityBranchId] = [t].[Id] + WHERE [t].[Id] < 20 + ) AS [t2] ON [e0].[Id] = [t2].[EntityOneId] WHERE [e0].[Id] < 10 ) AS [t3] ON [e].[Id] = [t3].[ThreeId] ORDER BY [e].[Id], [t3].[OneId], [t3].[ThreeId], [t3].[Id], [t3].[OneId0], [t3].[Id0], [t3].[TwoId], [t3].[EntityBranchId], [t3].[EntityOneId] @@ -1426,7 +1426,7 @@ FROM [EntityCompositeKeyEntityRoot] AS [e0] """, // """ -SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [e].[Id], [t].[RootSkipSharedId], [t].[CompositeKeySkipSharedKey1], [t].[CompositeKeySkipSharedKey2], [t].[CompositeKeySkipSharedKey3], [t].[Key1], [t].[Key2], [t].[Key3] +SELECT [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [e].[Id], [t].[RootSkipSharedId], [t].[CompositeKeySkipSharedKey1], [t].[CompositeKeySkipSharedKey2], [t].[CompositeKeySkipSharedKey3], [t].[Key1], [t].[Key2], [t].[Key3] FROM [EntityRoots] AS [e] INNER JOIN ( SELECT [e1].[Key1], [e1].[Key2], [e1].[Key3], [e0].[RootSkipSharedId], [e0].[CompositeKeySkipSharedKey1], [e0].[CompositeKeySkipSharedKey2], [e0].[CompositeKeySkipSharedKey3] @@ -1434,15 +1434,15 @@ FROM [EntityCompositeKeyEntityRoot] AS [e0] INNER JOIN [EntityCompositeKeys] AS [e1] ON [e0].[CompositeKeySkipSharedKey1] = [e1].[Key1] AND [e0].[CompositeKeySkipSharedKey2] = [e1].[Key2] AND [e0].[CompositeKeySkipSharedKey3] = [e1].[Key3] ) AS [t] ON [e].[Id] = [t].[RootSkipSharedId] INNER JOIN ( - SELECT [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3] + SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [t0].[CompositeId1], [t0].[CompositeId2], [t0].[CompositeId3] FROM ( SELECT [e2].[Id], [e2].[CollectionInverseId], [e2].[Name], [e2].[ReferenceInverseId], [j].[CompositeId1], [j].[CompositeId2], [j].[CompositeId3], ROW_NUMBER() OVER(PARTITION BY [j].[CompositeId1], [j].[CompositeId2], [j].[CompositeId3] ORDER BY [e2].[Id]) AS [row] FROM [JoinThreeToCompositeKeyFull] AS [j] INNER JOIN [EntityThrees] AS [e2] ON [j].[ThreeId] = [e2].[Id] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 3 -) AS [t0] ON [t].[Key1] = [t0].[CompositeId1] AND [t].[Key2] = [t0].[CompositeId2] AND [t].[Key3] = [t0].[CompositeId3] -ORDER BY [e].[Id], [t].[RootSkipSharedId], [t].[CompositeKeySkipSharedKey1], [t].[CompositeKeySkipSharedKey2], [t].[CompositeKeySkipSharedKey3], [t].[Key1], [t].[Key2], [t].[Key3], [t0].[CompositeId1], [t0].[CompositeId2], [t0].[CompositeId3], [t0].[Id] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 +) AS [t1] ON [t].[Key1] = [t1].[CompositeId1] AND [t].[Key2] = [t1].[CompositeId2] AND [t].[Key3] = [t1].[CompositeId3] +ORDER BY [e].[Id], [t].[RootSkipSharedId], [t].[CompositeKeySkipSharedKey1], [t].[CompositeKeySkipSharedKey2], [t].[CompositeKeySkipSharedKey3], [t].[Key1], [t].[Key2], [t].[Key3], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3], [t1].[Id] """); } @@ -1562,7 +1562,7 @@ WHERE [e0].[Id] < 10 """, // """ -SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id] +SELECT [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id] FROM [EntityOnes] AS [e] INNER JOIN ( SELECT [e0].[Id], [j].[OneId], [j].[TwoId] @@ -1571,15 +1571,15 @@ FROM [JoinOneToTwo] AS [j] WHERE [e0].[Id] < 10 ) AS [t] ON [e].[Id] = [t].[OneId] INNER JOIN ( - SELECT [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [t1].[TwoId] + SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [t0].[TwoId] FROM ( SELECT [e1].[Id], [e1].[CollectionInverseId], [e1].[Name], [e1].[ReferenceInverseId], [j0].[TwoId], ROW_NUMBER() OVER(PARTITION BY [j0].[TwoId] ORDER BY [e1].[Id]) AS [row] FROM [JoinTwoToThree] AS [j0] INNER JOIN [EntityThrees] AS [e1] ON [j0].[ThreeId] = [e1].[Id] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 3 -) AS [t0] ON [t].[Id] = [t0].[TwoId] -ORDER BY [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id], [t0].[TwoId], [t0].[Id] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 +) AS [t1] ON [t].[Id] = [t1].[TwoId] +ORDER BY [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id], [t1].[TwoId], [t1].[Id] """); } @@ -1634,26 +1634,26 @@ ORDER BY [e].[Id] """, // """ -SELECT [t].[Id], [t].[Name], [e].[Id], [t].[OneId], [t].[ThreeId] +SELECT [t0].[Id], [t0].[Name], [e].[Id], [t0].[OneId], [t0].[ThreeId] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [e0].[Id], [e0].[Name], [j].[OneId], [j].[ThreeId] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] """, // """ -SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name], [t0].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +SELECT [t2].[Id], [t2].[CollectionInverseId], [t2].[ExtraId], [t2].[Name], [t2].[ReferenceInverseId], [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [e0].[Id], [j].[OneId], [j].[ThreeId] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] INNER JOIN ( SELECT [t1].[Id], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name], [t1].[ReferenceInverseId], [t1].[OneId] FROM ( @@ -1662,30 +1662,30 @@ FROM [JoinOneToTwo] AS [j0] INNER JOIN [EntityTwos] AS [e1] ON [j0].[TwoId] = [e1].[Id] ) AS [t1] WHERE 1 < [t1].[row] AND [t1].[row] <= 3 -) AS [t0] ON [t].[Id] = [t0].[OneId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id], [t0].[OneId], [t0].[Id] +) AS [t2] ON [t0].[Id] = [t2].[OneId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id], [t2].[OneId], [t2].[Id] """, // """ -SELECT [t0].[Id], [t0].[Discriminator], [t0].[Name], [t0].[Number], [t0].[IsGreen], [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +SELECT [t3].[Id], [t3].[Discriminator], [t3].[Name], [t3].[Number], [t3].[IsGreen], [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [e0].[Id], [j].[OneId], [j].[ThreeId] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] INNER JOIN ( - SELECT [t1].[Id], [t1].[Discriminator], [t1].[Name], [t1].[Number], [t1].[IsGreen], [j0].[EntityOneId] - FROM [JoinOneToBranch] AS [j0] + SELECT [t].[Id], [t].[Discriminator], [t].[Name], [t].[Number], [t].[IsGreen], [j1].[EntityOneId] + FROM [JoinOneToBranch] AS [j1] INNER JOIN ( - SELECT [e1].[Id], [e1].[Discriminator], [e1].[Name], [e1].[Number], [e1].[IsGreen] - FROM [EntityRoots] AS [e1] - WHERE [e1].[Discriminator] IN (N'EntityBranch', N'EntityLeaf') - ) AS [t1] ON [j0].[EntityBranchId] = [t1].[Id] - WHERE [t1].[Id] < 20 -) AS [t0] ON [t].[Id] = [t0].[EntityOneId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] + SELECT [e2].[Id], [e2].[Discriminator], [e2].[Name], [e2].[Number], [e2].[IsGreen] + FROM [EntityRoots] AS [e2] + WHERE [e2].[Discriminator] IN (N'EntityBranch', N'EntityLeaf') + ) AS [t] ON [j1].[EntityBranchId] = [t].[Id] + WHERE [t].[Id] < 20 +) AS [t3] ON [t0].[Id] = [t3].[EntityOneId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/ManyToManyQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/ManyToManyQuerySqlServerTest.cs index 85f679b4c1f..52a78def5ed 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/ManyToManyQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/ManyToManyQuerySqlServerTest.cs @@ -986,28 +986,28 @@ public override async Task Filter_include_on_skip_navigation_combined_with_filte SELECT [e].[Id], [e].[CollectionInverseId], [e].[Name], [e].[ReferenceInverseId], [t3].[OneId], [t3].[ThreeId], [t3].[Payload], [t3].[Id], [t3].[Name], [t3].[OneId0], [t3].[TwoId], [t3].[JoinOneToTwoExtraId], [t3].[Id0], [t3].[CollectionInverseId], [t3].[ExtraId], [t3].[Name0], [t3].[ReferenceInverseId], [t3].[EntityBranchId], [t3].[EntityOneId], [t3].[Id1], [t3].[Discriminator], [t3].[Name1], [t3].[Number], [t3].[IsGreen] FROM [EntityThrees] AS [e] LEFT JOIN ( - SELECT [j].[OneId], [j].[ThreeId], [j].[Payload], [e0].[Id], [e0].[Name], [t0].[OneId] AS [OneId0], [t0].[TwoId], [t0].[JoinOneToTwoExtraId], [t0].[Id] AS [Id0], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name] AS [Name0], [t0].[ReferenceInverseId], [t1].[EntityBranchId], [t1].[EntityOneId], [t1].[Id] AS [Id1], [t1].[Discriminator], [t1].[Name] AS [Name1], [t1].[Number], [t1].[IsGreen] + SELECT [j].[OneId], [j].[ThreeId], [j].[Payload], [e0].[Id], [e0].[Name], [t1].[OneId] AS [OneId0], [t1].[TwoId], [t1].[JoinOneToTwoExtraId], [t1].[Id] AS [Id0], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name] AS [Name0], [t1].[ReferenceInverseId], [t2].[EntityBranchId], [t2].[EntityOneId], [t2].[Id] AS [Id1], [t2].[Discriminator], [t2].[Name] AS [Name1], [t2].[Number], [t2].[IsGreen] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] LEFT JOIN ( - SELECT [t].[OneId], [t].[TwoId], [t].[JoinOneToTwoExtraId], [t].[Id], [t].[CollectionInverseId], [t].[ExtraId], [t].[Name], [t].[ReferenceInverseId] + SELECT [t0].[OneId], [t0].[TwoId], [t0].[JoinOneToTwoExtraId], [t0].[Id], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name], [t0].[ReferenceInverseId] FROM ( SELECT [j0].[OneId], [j0].[TwoId], [j0].[JoinOneToTwoExtraId], [e1].[Id], [e1].[CollectionInverseId], [e1].[ExtraId], [e1].[Name], [e1].[ReferenceInverseId], ROW_NUMBER() OVER(PARTITION BY [j0].[OneId] ORDER BY [e1].[Id]) AS [row] FROM [JoinOneToTwo] AS [j0] INNER JOIN [EntityTwos] AS [e1] ON [j0].[TwoId] = [e1].[Id] - ) AS [t] - WHERE 1 < [t].[row] AND [t].[row] <= 3 - ) AS [t0] ON [e0].[Id] = [t0].[OneId] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 + ) AS [t1] ON [e0].[Id] = [t1].[OneId] LEFT JOIN ( - SELECT [j1].[EntityBranchId], [j1].[EntityOneId], [t2].[Id], [t2].[Discriminator], [t2].[Name], [t2].[Number], [t2].[IsGreen] + SELECT [j1].[EntityBranchId], [j1].[EntityOneId], [t].[Id], [t].[Discriminator], [t].[Name], [t].[Number], [t].[IsGreen] FROM [JoinOneToBranch] AS [j1] INNER JOIN ( SELECT [e2].[Id], [e2].[Discriminator], [e2].[Name], [e2].[Number], [e2].[IsGreen] FROM [EntityRoots] AS [e2] WHERE [e2].[Discriminator] IN (N'EntityBranch', N'EntityLeaf') - ) AS [t2] ON [j1].[EntityBranchId] = [t2].[Id] - WHERE [t2].[Id] < 20 - ) AS [t1] ON [e0].[Id] = [t1].[EntityOneId] + ) AS [t] ON [j1].[EntityBranchId] = [t].[Id] + WHERE [t].[Id] < 20 + ) AS [t2] ON [e0].[Id] = [t2].[EntityOneId] WHERE [e0].[Id] < 10 ) AS [t3] ON [e].[Id] = [t3].[ThreeId] ORDER BY [e].[Id], [t3].[OneId], [t3].[ThreeId], [t3].[Id], [t3].[OneId0], [t3].[Id0], [t3].[TwoId], [t3].[EntityBranchId], [t3].[EntityOneId] @@ -1425,7 +1425,7 @@ FROM [EntityCompositeKeyEntityRoot] AS [e0] """, // """ -SELECT [t0].[Id], [t0].[CompositeId1], [t0].[CompositeId2], [t0].[CompositeId3], [t0].[ThreeId], [t0].[Id0], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [e].[Id], [t].[RootSkipSharedId], [t].[CompositeKeySkipSharedKey1], [t].[CompositeKeySkipSharedKey2], [t].[CompositeKeySkipSharedKey3], [t].[Key1], [t].[Key2], [t].[Key3] +SELECT [t1].[Id], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3], [t1].[ThreeId], [t1].[Id0], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [e].[Id], [t].[RootSkipSharedId], [t].[CompositeKeySkipSharedKey1], [t].[CompositeKeySkipSharedKey2], [t].[CompositeKeySkipSharedKey3], [t].[Key1], [t].[Key2], [t].[Key3] FROM [EntityRoots] AS [e] INNER JOIN ( SELECT [e0].[RootSkipSharedId], [e0].[CompositeKeySkipSharedKey1], [e0].[CompositeKeySkipSharedKey2], [e0].[CompositeKeySkipSharedKey3], [e1].[Key1], [e1].[Key2], [e1].[Key3] @@ -1433,15 +1433,15 @@ FROM [EntityCompositeKeyEntityRoot] AS [e0] INNER JOIN [EntityCompositeKeys] AS [e1] ON [e0].[CompositeKeySkipSharedKey1] = [e1].[Key1] AND [e0].[CompositeKeySkipSharedKey2] = [e1].[Key2] AND [e0].[CompositeKeySkipSharedKey3] = [e1].[Key3] ) AS [t] ON [e].[Id] = [t].[RootSkipSharedId] INNER JOIN ( - SELECT [t1].[Id], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3], [t1].[ThreeId], [t1].[Id0], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId] + SELECT [t0].[Id], [t0].[CompositeId1], [t0].[CompositeId2], [t0].[CompositeId3], [t0].[ThreeId], [t0].[Id0], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId] FROM ( SELECT [j].[Id], [j].[CompositeId1], [j].[CompositeId2], [j].[CompositeId3], [j].[ThreeId], [e2].[Id] AS [Id0], [e2].[CollectionInverseId], [e2].[Name], [e2].[ReferenceInverseId], ROW_NUMBER() OVER(PARTITION BY [j].[CompositeId1], [j].[CompositeId2], [j].[CompositeId3] ORDER BY [e2].[Id]) AS [row] FROM [JoinThreeToCompositeKeyFull] AS [j] INNER JOIN [EntityThrees] AS [e2] ON [j].[ThreeId] = [e2].[Id] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 3 -) AS [t0] ON [t].[Key1] = [t0].[CompositeId1] AND [t].[Key2] = [t0].[CompositeId2] AND [t].[Key3] = [t0].[CompositeId3] -ORDER BY [e].[Id], [t].[RootSkipSharedId], [t].[CompositeKeySkipSharedKey1], [t].[CompositeKeySkipSharedKey2], [t].[CompositeKeySkipSharedKey3], [t].[Key1], [t].[Key2], [t].[Key3], [t0].[CompositeId1], [t0].[CompositeId2], [t0].[CompositeId3], [t0].[Id0] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 +) AS [t1] ON [t].[Key1] = [t1].[CompositeId1] AND [t].[Key2] = [t1].[CompositeId2] AND [t].[Key3] = [t1].[CompositeId3] +ORDER BY [e].[Id], [t].[RootSkipSharedId], [t].[CompositeKeySkipSharedKey1], [t].[CompositeKeySkipSharedKey2], [t].[CompositeKeySkipSharedKey3], [t].[Key1], [t].[Key2], [t].[Key3], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3], [t1].[Id0] """); } @@ -1561,7 +1561,7 @@ WHERE [e0].[Id] < 10 """, // """ -SELECT [t0].[ThreeId], [t0].[TwoId], [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id] +SELECT [t1].[ThreeId], [t1].[TwoId], [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id] FROM [EntityOnes] AS [e] INNER JOIN ( SELECT [j].[OneId], [j].[TwoId], [e0].[Id] @@ -1570,15 +1570,15 @@ FROM [JoinOneToTwo] AS [j] WHERE [e0].[Id] < 10 ) AS [t] ON [e].[Id] = [t].[OneId] INNER JOIN ( - SELECT [t1].[ThreeId], [t1].[TwoId], [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId] + SELECT [t0].[ThreeId], [t0].[TwoId], [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId] FROM ( SELECT [j0].[ThreeId], [j0].[TwoId], [e1].[Id], [e1].[CollectionInverseId], [e1].[Name], [e1].[ReferenceInverseId], ROW_NUMBER() OVER(PARTITION BY [j0].[TwoId] ORDER BY [e1].[Id]) AS [row] FROM [JoinTwoToThree] AS [j0] INNER JOIN [EntityThrees] AS [e1] ON [j0].[ThreeId] = [e1].[Id] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 3 -) AS [t0] ON [t].[Id] = [t0].[TwoId] -ORDER BY [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id], [t0].[TwoId], [t0].[Id] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 +) AS [t1] ON [t].[Id] = [t1].[TwoId] +ORDER BY [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id], [t1].[TwoId], [t1].[Id] """); } @@ -1633,26 +1633,26 @@ ORDER BY [e].[Id] """, // """ -SELECT [t].[OneId], [t].[ThreeId], [t].[Payload], [t].[Id], [t].[Name], [e].[Id] +SELECT [t0].[OneId], [t0].[ThreeId], [t0].[Payload], [t0].[Id], [t0].[Name], [e].[Id] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [j].[OneId], [j].[ThreeId], [j].[Payload], [e0].[Id], [e0].[Name] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] """, // """ -SELECT [t0].[OneId], [t0].[TwoId], [t0].[JoinOneToTwoExtraId], [t0].[Id], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name], [t0].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +SELECT [t2].[OneId], [t2].[TwoId], [t2].[JoinOneToTwoExtraId], [t2].[Id], [t2].[CollectionInverseId], [t2].[ExtraId], [t2].[Name], [t2].[ReferenceInverseId], [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [j].[OneId], [j].[ThreeId], [e0].[Id] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] INNER JOIN ( SELECT [t1].[OneId], [t1].[TwoId], [t1].[JoinOneToTwoExtraId], [t1].[Id], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name], [t1].[ReferenceInverseId] FROM ( @@ -1661,30 +1661,30 @@ FROM [JoinOneToTwo] AS [j0] INNER JOIN [EntityTwos] AS [e1] ON [j0].[TwoId] = [e1].[Id] ) AS [t1] WHERE 1 < [t1].[row] AND [t1].[row] <= 3 -) AS [t0] ON [t].[Id] = [t0].[OneId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id], [t0].[OneId], [t0].[Id] +) AS [t2] ON [t0].[Id] = [t2].[OneId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id], [t2].[OneId], [t2].[Id] """, // """ -SELECT [t0].[EntityBranchId], [t0].[EntityOneId], [t0].[Id], [t0].[Discriminator], [t0].[Name], [t0].[Number], [t0].[IsGreen], [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +SELECT [t3].[EntityBranchId], [t3].[EntityOneId], [t3].[Id], [t3].[Discriminator], [t3].[Name], [t3].[Number], [t3].[IsGreen], [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [j].[OneId], [j].[ThreeId], [e0].[Id] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] INNER JOIN ( - SELECT [j0].[EntityBranchId], [j0].[EntityOneId], [t1].[Id], [t1].[Discriminator], [t1].[Name], [t1].[Number], [t1].[IsGreen] - FROM [JoinOneToBranch] AS [j0] + SELECT [j1].[EntityBranchId], [j1].[EntityOneId], [t].[Id], [t].[Discriminator], [t].[Name], [t].[Number], [t].[IsGreen] + FROM [JoinOneToBranch] AS [j1] INNER JOIN ( - SELECT [e1].[Id], [e1].[Discriminator], [e1].[Name], [e1].[Number], [e1].[IsGreen] - FROM [EntityRoots] AS [e1] - WHERE [e1].[Discriminator] IN (N'EntityBranch', N'EntityLeaf') - ) AS [t1] ON [j0].[EntityBranchId] = [t1].[Id] - WHERE [t1].[Id] < 20 -) AS [t0] ON [t].[Id] = [t0].[EntityOneId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] + SELECT [e2].[Id], [e2].[Discriminator], [e2].[Name], [e2].[Number], [e2].[IsGreen] + FROM [EntityRoots] AS [e2] + WHERE [e2].[Discriminator] IN (N'EntityBranch', N'EntityLeaf') + ) AS [t] ON [j1].[EntityBranchId] = [t].[Id] + WHERE [t].[Id] < 20 +) AS [t3] ON [t0].[Id] = [t3].[EntityOneId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindEFPropertyIncludeQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindEFPropertyIncludeQuerySqlServerTest.cs index c6d8bd20fd8..a91d637945a 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindEFPropertyIncludeQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindEFPropertyIncludeQuerySqlServerTest.cs @@ -186,7 +186,7 @@ public override async Task Join_Include_reference_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -194,15 +194,15 @@ FROM [Order Details] AS [o] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] INNER JOIN [Orders] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] LEFT JOIN [Customers] AS [c] ON [o2].[CustomerID] = [c].[CustomerID] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -559,7 +559,7 @@ public override async Task Include_reference_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -567,15 +567,15 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o0].[OrderID] ORDER BY [o0].[OrderID]) AS [row] FROM [Orders] AS [o0] LEFT JOIN [Customers] AS [c] ON [o0].[CustomerID] = [c].[CustomerID] WHERE [o0].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1203,7 +1203,7 @@ public override async Task Include_reference_Join_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1212,16 +1212,16 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] INNER JOIN [Order Details] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] LEFT JOIN [Customers] AS [c] ON [o1].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1242,7 +1242,7 @@ public override async Task Include_reference_SelectMany_GroupBy_Select(bool asyn AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1251,16 +1251,16 @@ CROSS JOIN [Order Details] AS [o0] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] CROSS JOIN [Order Details] AS [o2] LEFT JOIN [Customers] AS [c] ON [o1].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1302,7 +1302,7 @@ public override async Task SelectMany_Include_reference_GroupBy_Select(bool asyn AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1311,16 +1311,16 @@ CROSS JOIN [Orders] AS [o0] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] CROSS JOIN [Orders] AS [o2] LEFT JOIN [Customers] AS [c] ON [o2].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1330,7 +1330,7 @@ public override async Task Include_collection_SelectMany_GroupBy_Select(bool asy AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1339,17 +1339,17 @@ CROSS JOIN [Order Details] AS [o0] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [o2].[OrderID] AS [OrderID0], [o2].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] CROSS JOIN [Order Details] AS [o2] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o3] ON [t1].[OrderID] = [o3].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID] """); } @@ -1588,7 +1588,7 @@ public override async Task Include_collection_Join_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1597,17 +1597,17 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [o2].[OrderID] AS [OrderID0], [o2].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] INNER JOIN [Order Details] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o3] ON [t1].[OrderID] = [o3].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID] """); } @@ -1617,7 +1617,7 @@ public override async Task Include_collection_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [o1].[OrderID], [o1].[ProductID], [o1].[Discount], [o1].[Quantity], [o1].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [o1].[OrderID], [o1].[ProductID], [o1].[Discount], [o1].[Quantity], [o1].[UnitPrice] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1625,16 +1625,16 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], ROW_NUMBER() OVER(PARTITION BY [o0].[OrderID] ORDER BY [o0].[OrderID]) AS [row] FROM [Orders] AS [o0] WHERE [o0].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o1] ON [t0].[OrderID] = [o1].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [o1].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o1] ON [t1].[OrderID] = [o1].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [o1].[OrderID] """); } @@ -1663,7 +1663,7 @@ public override async Task Join_Include_collection_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1672,17 +1672,17 @@ FROM [Order Details] AS [o] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [o1].[OrderID] AS [OrderID0], [o1].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] INNER JOIN [Orders] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID], [o3].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o3] ON [t1].[OrderID] = [o3].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID], [o3].[OrderID] """); } @@ -1792,7 +1792,7 @@ public override async Task SelectMany_Include_collection_GroupBy_Select(bool asy AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1801,17 +1801,17 @@ CROSS JOIN [Orders] AS [o0] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [o1].[OrderID] AS [OrderID0], [o1].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] CROSS JOIN [Orders] AS [o2] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID], [o3].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o3] ON [t1].[OrderID] = [o3].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID], [o3].[OrderID] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindGroupByQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindGroupByQuerySqlServerTest.cs index 92ec01fea92..a3295f2ba24 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindGroupByQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindGroupByQuerySqlServerTest.cs @@ -2326,7 +2326,7 @@ public override async Task GroupBy_Shadow2(bool async) AssertSql( """ -SELECT [t0].[EmployeeID], [t0].[City], [t0].[Country], [t0].[FirstName], [t0].[ReportsTo], [t0].[Title] +SELECT [t1].[EmployeeID], [t1].[City], [t1].[Country], [t1].[FirstName], [t1].[ReportsTo], [t1].[Title] FROM ( SELECT [e].[Title] FROM [Employees] AS [e] @@ -2334,14 +2334,14 @@ FROM [Employees] AS [e] GROUP BY [e].[Title] ) AS [t] LEFT JOIN ( - SELECT [t1].[EmployeeID], [t1].[City], [t1].[Country], [t1].[FirstName], [t1].[ReportsTo], [t1].[Title] + SELECT [t0].[EmployeeID], [t0].[City], [t0].[Country], [t0].[FirstName], [t0].[ReportsTo], [t0].[Title] FROM ( SELECT [e0].[EmployeeID], [e0].[City], [e0].[Country], [e0].[FirstName], [e0].[ReportsTo], [e0].[Title], ROW_NUMBER() OVER(PARTITION BY [e0].[Title] ORDER BY [e0].[EmployeeID]) AS [row] FROM [Employees] AS [e0] WHERE [e0].[Title] = N'Sales Representative' AND [e0].[EmployeeID] = 1 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Title] = [t0].[Title] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Title] = [t1].[Title] """); } @@ -3364,7 +3364,7 @@ public override async Task AsEnumerable_in_subquery_for_GroupBy(bool async) SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], [t2].[OrderID], [t2].[CustomerID], [t2].[EmployeeID], [t2].[OrderDate], [t2].[CustomerID0] FROM [Customers] AS [c] OUTER APPLY ( - SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[CustomerID] AS [CustomerID0] + SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[CustomerID] AS [CustomerID0] FROM ( SELECT [o].[CustomerID] FROM [Orders] AS [o] @@ -3372,14 +3372,14 @@ FROM [Orders] AS [o] GROUP BY [o].[CustomerID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], ROW_NUMBER() OVER(PARTITION BY [o0].[CustomerID] ORDER BY [o0].[OrderDate] DESC) AS [row] FROM [Orders] AS [o0] WHERE [o0].[CustomerID] = [c].[CustomerID] - ) AS [t1] - WHERE [t1].[row] <= 1 - ) AS [t0] ON [t].[CustomerID] = [t0].[CustomerID] + ) AS [t0] + WHERE [t0].[row] <= 1 + ) AS [t1] ON [t].[CustomerID] = [t1].[CustomerID] ) AS [t2] WHERE [c].[CustomerID] LIKE N'F%' ORDER BY [c].[CustomerID], [t2].[CustomerID0] @@ -3575,12 +3575,12 @@ FROM [Orders] AS [o0] LEFT JOIN [Customers] AS [c1] ON [o0].[CustomerID] = [c1].[CustomerID] WHERE [c].[CustomerID] = [o0].[CustomerID] ) AS [t0] - LEFT JOIN [Customers] AS [c0] ON [t0].[CustomerID] = [c0].[CustomerID] - WHERE ([t].[Key] = [t0].[Key] OR ([t].[Key] IS NULL AND [t0].[Key] IS NULL)) AND COALESCE([c0].[City], N'') + COALESCE([t0].[CustomerID], N'') LIKE N'Lon%') AS [Count], [t].[Key] + LEFT JOIN [Customers] AS [c2] ON [t0].[CustomerID] = [c2].[CustomerID] + WHERE ([t].[Key] = [t0].[Key] OR ([t].[Key] IS NULL AND [t0].[Key] IS NULL)) AND COALESCE([c2].[City], N'') + COALESCE([t0].[CustomerID], N'') LIKE N'Lon%') AS [Count], [t].[Key] FROM ( - SELECT [o].[OrderID], COALESCE([c2].[City], N'') + COALESCE([o].[CustomerID], N'') AS [Key] + SELECT [o].[OrderID], COALESCE([c0].[City], N'') + COALESCE([o].[CustomerID], N'') AS [Key] FROM [Orders] AS [o] - LEFT JOIN [Customers] AS [c2] ON [o].[CustomerID] = [c2].[CustomerID] + LEFT JOIN [Customers] AS [c0] ON [o].[CustomerID] = [c0].[CustomerID] WHERE [c].[CustomerID] = [o].[CustomerID] ) AS [t] GROUP BY [t].[Key] @@ -3753,7 +3753,7 @@ public override async Task Final_GroupBy_property_entity_projecting_collection_a AssertSql( """ -SELECT [c].[City], [c].[CustomerID], [t].[OrderID], [t].[CustomerID], [t].[EmployeeID], [t].[OrderDate], [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] +SELECT [c].[City], [c].[CustomerID], [t].[OrderID], [t].[CustomerID], [t].[EmployeeID], [t].[OrderDate], [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] FROM [Customers] AS [c] LEFT JOIN ( SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] @@ -3761,13 +3761,13 @@ FROM [Orders] AS [o] WHERE [o].[OrderID] < 11000 ) AS [t] ON [c].[CustomerID] = [t].[CustomerID] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], ROW_NUMBER() OVER(PARTITION BY [o0].[CustomerID] ORDER BY [o0].[OrderDate] DESC) AS [row] FROM [Orders] AS [o0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [c].[CustomerID] = [t0].[CustomerID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [c].[CustomerID] = [t1].[CustomerID] WHERE [c].[Country] = N'USA' ORDER BY [c].[City], [c].[CustomerID] """); @@ -3828,7 +3828,7 @@ public override async Task GroupBy_complex_key_without_aggregate(bool async) AssertSql( """ -SELECT [t0].[Key], [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0] +SELECT [t1].[Key], [t3].[OrderID], [t3].[CustomerID], [t3].[EmployeeID], [t3].[OrderDate], [t3].[CustomerID0] FROM ( SELECT [t].[Key] FROM ( @@ -3837,20 +3837,20 @@ FROM [Orders] AS [o] LEFT JOIN [Customers] AS [c] ON [o].[CustomerID] = [c].[CustomerID] ) AS [t] GROUP BY [t].[Key] -) AS [t0] +) AS [t1] LEFT JOIN ( SELECT [t2].[OrderID], [t2].[CustomerID], [t2].[EmployeeID], [t2].[OrderDate], [t2].[CustomerID0], [t2].[Key] FROM ( - SELECT [t3].[OrderID], [t3].[CustomerID], [t3].[EmployeeID], [t3].[OrderDate], [t3].[CustomerID0], [t3].[Key], ROW_NUMBER() OVER(PARTITION BY [t3].[Key] ORDER BY [t3].[OrderID], [t3].[CustomerID0]) AS [row] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Key], ROW_NUMBER() OVER(PARTITION BY [t0].[Key] ORDER BY [t0].[OrderID], [t0].[CustomerID0]) AS [row] FROM ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], [c0].[CustomerID] AS [CustomerID0], SUBSTRING([c0].[CustomerID], 0 + 1, 1) AS [Key] FROM [Orders] AS [o0] LEFT JOIN [Customers] AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID] - ) AS [t3] + ) AS [t0] ) AS [t2] WHERE 1 < [t2].[row] AND [t2].[row] <= 3 -) AS [t1] ON [t0].[Key] = [t1].[Key] -ORDER BY [t0].[Key], [t1].[OrderID] +) AS [t3] ON [t1].[Key] = [t3].[Key] +ORDER BY [t1].[Key], [t3].[OrderID] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindIncludeNoTrackingQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindIncludeNoTrackingQuerySqlServerTest.cs index 149e1918594..f8ef61dc2e4 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindIncludeNoTrackingQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindIncludeNoTrackingQuerySqlServerTest.cs @@ -53,7 +53,7 @@ public override async Task Include_collection_Join_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -62,17 +62,17 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [o2].[OrderID] AS [OrderID0], [o2].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] INNER JOIN [Order Details] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o3] ON [t1].[OrderID] = [o3].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID] """); } @@ -319,7 +319,7 @@ public override async Task Include_reference_Join_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -328,16 +328,16 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] INNER JOIN [Order Details] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] LEFT JOIN [Customers] AS [c] ON [o1].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -899,7 +899,7 @@ public override async Task Include_collection_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [o1].[OrderID], [o1].[ProductID], [o1].[Discount], [o1].[Quantity], [o1].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [o1].[OrderID], [o1].[ProductID], [o1].[Discount], [o1].[Quantity], [o1].[UnitPrice] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -907,16 +907,16 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], ROW_NUMBER() OVER(PARTITION BY [o0].[OrderID] ORDER BY [o0].[OrderID]) AS [row] FROM [Orders] AS [o0] WHERE [o0].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o1] ON [t0].[OrderID] = [o1].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [o1].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o1] ON [t1].[OrderID] = [o1].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [o1].[OrderID] """); } @@ -983,7 +983,7 @@ public override async Task Include_collection_SelectMany_GroupBy_Select(bool asy AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -992,17 +992,17 @@ CROSS JOIN [Order Details] AS [o0] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [o2].[OrderID] AS [OrderID0], [o2].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] CROSS JOIN [Order Details] AS [o2] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o3] ON [t1].[OrderID] = [o3].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID] """); } @@ -1029,7 +1029,7 @@ public override async Task Join_Include_collection_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1038,17 +1038,17 @@ FROM [Order Details] AS [o] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [o1].[OrderID] AS [OrderID0], [o1].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] INNER JOIN [Orders] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID], [o3].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o3] ON [t1].[OrderID] = [o3].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID], [o3].[OrderID] """); } @@ -1124,7 +1124,7 @@ public override async Task SelectMany_Include_reference_GroupBy_Select(bool asyn AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1133,16 +1133,16 @@ CROSS JOIN [Orders] AS [o0] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] CROSS JOIN [Orders] AS [o2] LEFT JOIN [Customers] AS [c] ON [o2].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1186,7 +1186,7 @@ public override async Task Include_reference_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1194,15 +1194,15 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o0].[OrderID] ORDER BY [o0].[OrderID]) AS [row] FROM [Orders] AS [o0] LEFT JOIN [Customers] AS [c] ON [o0].[CustomerID] = [c].[CustomerID] WHERE [o0].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1633,7 +1633,7 @@ public override async Task SelectMany_Include_collection_GroupBy_Select(bool asy AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1642,17 +1642,17 @@ CROSS JOIN [Orders] AS [o0] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [o1].[OrderID] AS [OrderID0], [o1].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] CROSS JOIN [Orders] AS [o2] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID], [o3].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o3] ON [t1].[OrderID] = [o3].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID], [o3].[OrderID] """); } @@ -1679,7 +1679,7 @@ public override async Task Join_Include_reference_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1687,15 +1687,15 @@ FROM [Order Details] AS [o] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] INNER JOIN [Orders] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] LEFT JOIN [Customers] AS [c] ON [o2].[CustomerID] = [c].[CustomerID] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1884,7 +1884,7 @@ public override async Task Include_reference_SelectMany_GroupBy_Select(bool asyn AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1893,16 +1893,16 @@ CROSS JOIN [Order Details] AS [o0] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] CROSS JOIN [Order Details] AS [o2] LEFT JOIN [Customers] AS [c] ON [o1].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindIncludeQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindIncludeQuerySqlServerTest.cs index 619f5912872..e5c033275ab 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindIncludeQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindIncludeQuerySqlServerTest.cs @@ -1176,7 +1176,7 @@ public override async Task Include_collection_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [o1].[OrderID], [o1].[ProductID], [o1].[Discount], [o1].[Quantity], [o1].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [o1].[OrderID], [o1].[ProductID], [o1].[Discount], [o1].[Quantity], [o1].[UnitPrice] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1184,16 +1184,16 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], ROW_NUMBER() OVER(PARTITION BY [o0].[OrderID] ORDER BY [o0].[OrderID]) AS [row] FROM [Orders] AS [o0] WHERE [o0].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o1] ON [t0].[OrderID] = [o1].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [o1].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o1] ON [t1].[OrderID] = [o1].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [o1].[OrderID] """); } @@ -1203,7 +1203,7 @@ public override async Task Include_reference_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1211,15 +1211,15 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o0].[OrderID] ORDER BY [o0].[OrderID]) AS [row] FROM [Orders] AS [o0] LEFT JOIN [Customers] AS [c] ON [o0].[CustomerID] = [c].[CustomerID] WHERE [o0].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1229,7 +1229,7 @@ public override async Task Include_collection_Join_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1238,17 +1238,17 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [o2].[OrderID] AS [OrderID0], [o2].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] INNER JOIN [Order Details] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o3] ON [t1].[OrderID] = [o3].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID] """); } @@ -1258,7 +1258,7 @@ public override async Task Include_reference_Join_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1267,16 +1267,16 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] INNER JOIN [Order Details] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] LEFT JOIN [Customers] AS [c] ON [o1].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1286,7 +1286,7 @@ public override async Task Join_Include_collection_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1295,17 +1295,17 @@ FROM [Order Details] AS [o] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [o1].[OrderID] AS [OrderID0], [o1].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] INNER JOIN [Orders] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID], [o3].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o3] ON [t1].[OrderID] = [o3].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID], [o3].[OrderID] """); } @@ -1315,7 +1315,7 @@ public override async Task Join_Include_reference_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1323,15 +1323,15 @@ FROM [Order Details] AS [o] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] INNER JOIN [Orders] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] LEFT JOIN [Customers] AS [c] ON [o2].[CustomerID] = [c].[CustomerID] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1341,7 +1341,7 @@ public override async Task Include_collection_SelectMany_GroupBy_Select(bool asy AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1350,17 +1350,17 @@ CROSS JOIN [Order Details] AS [o0] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [o2].[OrderID] AS [OrderID0], [o2].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] CROSS JOIN [Order Details] AS [o2] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o3] ON [t1].[OrderID] = [o3].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID] """); } @@ -1370,7 +1370,7 @@ public override async Task Include_reference_SelectMany_GroupBy_Select(bool asyn AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1379,16 +1379,16 @@ CROSS JOIN [Order Details] AS [o0] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] CROSS JOIN [Order Details] AS [o2] LEFT JOIN [Customers] AS [c] ON [o1].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1398,7 +1398,7 @@ public override async Task SelectMany_Include_collection_GroupBy_Select(bool asy AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1407,17 +1407,17 @@ CROSS JOIN [Orders] AS [o0] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [o1].[OrderID] AS [OrderID0], [o1].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] CROSS JOIN [Orders] AS [o2] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID], [o3].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o3] ON [t1].[OrderID] = [o3].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID], [o3].[OrderID] """); } @@ -1427,7 +1427,7 @@ public override async Task SelectMany_Include_reference_GroupBy_Select(bool asyn AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1436,16 +1436,16 @@ CROSS JOIN [Orders] AS [o0] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] CROSS JOIN [Orders] AS [o2] LEFT JOIN [Customers] AS [c] ON [o2].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindJoinQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindJoinQuerySqlServerTest.cs index 484aaaac0ac..61390664149 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindJoinQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindJoinQuerySqlServerTest.cs @@ -777,19 +777,19 @@ public override async Task Distinct_SelectMany_correlated_subquery_take(bool asy AssertSql( """ -SELECT [t0].[CustomerID], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[CustomerID], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT DISTINCT [c].[CustomerID] FROM [Customers] AS [c] -) AS [t] +) AS [t0] INNER JOIN ( - SELECT [t1].[CustomerID], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t].[CustomerID], [t].[Address], [t].[City], [t].[CompanyName], [t].[ContactName], [t].[ContactTitle], [t].[Country], [t].[Fax], [t].[Phone], [t].[PostalCode], [t].[Region] FROM ( SELECT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region], ROW_NUMBER() OVER(PARTITION BY [c0].[CustomerID] ORDER BY [c0].[CustomerID] + COALESCE([c0].[City], N'')) AS [row] FROM [Customers] AS [c0] - ) AS [t1] - WHERE [t1].[row] <= 2 -) AS [t0] ON [t].[CustomerID] = [t0].[CustomerID] + ) AS [t] + WHERE [t].[row] <= 2 +) AS [t1] ON [t0].[CustomerID] = [t1].[CustomerID] """); } @@ -799,19 +799,19 @@ public override async Task Distinct_SelectMany_correlated_subquery_take_2(bool a AssertSql( """ -SELECT [t0].[CustomerID], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[CustomerID], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT DISTINCT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] FROM [Customers] AS [c] -) AS [t] +) AS [t0] INNER JOIN ( - SELECT [t1].[CustomerID], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t].[CustomerID], [t].[Address], [t].[City], [t].[CompanyName], [t].[ContactName], [t].[ContactTitle], [t].[Country], [t].[Fax], [t].[Phone], [t].[PostalCode], [t].[Region] FROM ( SELECT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region], ROW_NUMBER() OVER(PARTITION BY [c0].[CustomerID] ORDER BY [c0].[CustomerID] + COALESCE([c0].[City], N'')) AS [row] FROM [Customers] AS [c0] - ) AS [t1] - WHERE [t1].[row] <= 2 -) AS [t0] ON [t].[CustomerID] = [t0].[CustomerID] + ) AS [t] + WHERE [t].[row] <= 2 +) AS [t1] ON [t0].[CustomerID] = [t1].[CustomerID] """); } @@ -823,21 +823,21 @@ public override async Task Take_SelectMany_correlated_subquery_take(bool async) """ @__p_0='2' -SELECT [t0].[CustomerID], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[CustomerID], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT TOP(@__p_0) [c].[CustomerID] FROM [Customers] AS [c] ORDER BY [c].[CustomerID] -) AS [t] +) AS [t0] INNER JOIN ( - SELECT [t1].[CustomerID], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t].[CustomerID], [t].[Address], [t].[City], [t].[CompanyName], [t].[ContactName], [t].[ContactTitle], [t].[Country], [t].[Fax], [t].[Phone], [t].[PostalCode], [t].[Region] FROM ( SELECT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region], ROW_NUMBER() OVER(PARTITION BY [c0].[CustomerID] ORDER BY [c0].[CustomerID] + COALESCE([c0].[City], N'')) AS [row] FROM [Customers] AS [c0] - ) AS [t1] - WHERE [t1].[row] <= 2 -) AS [t0] ON [t].[CustomerID] = [t0].[CustomerID] -ORDER BY [t].[CustomerID] + ) AS [t] + WHERE [t].[row] <= 2 +) AS [t1] ON [t0].[CustomerID] = [t1].[CustomerID] +ORDER BY [t0].[CustomerID] """); } @@ -847,25 +847,25 @@ public override async Task Take_in_collection_projection_with_FirstOrDefault_on_ AssertSql( """ -SELECT [t].[CustomerID], [t0].[Title], [t0].[OrderID], [t0].[CustomerID] +SELECT [t0].[CustomerID], [t1].[Title], [t1].[OrderID], [t1].[CustomerID] FROM ( SELECT TOP(1) [c].[CustomerID] FROM [Customers] AS [c] -) AS [t] +) AS [t0] OUTER APPLY ( SELECT CASE - WHEN [t1].[CustomerID] = [c0].[City] OR ([t1].[CustomerID] IS NULL AND [c0].[City] IS NULL) THEN N'A' + WHEN [t].[CustomerID] = [c0].[City] OR ([t].[CustomerID] IS NULL AND [c0].[City] IS NULL) THEN N'A' ELSE N'B' - END AS [Title], [t1].[OrderID], [c0].[CustomerID], [t1].[OrderDate] + END AS [Title], [t].[OrderID], [c0].[CustomerID], [t].[OrderDate] FROM ( SELECT TOP(1) [o].[OrderID], [o].[CustomerID], [o].[OrderDate] FROM [Orders] AS [o] - WHERE [t].[CustomerID] = [o].[CustomerID] + WHERE [t0].[CustomerID] = [o].[CustomerID] ORDER BY [o].[OrderDate] - ) AS [t1] - LEFT JOIN [Customers] AS [c0] ON [t1].[CustomerID] = [c0].[CustomerID] -) AS [t0] -ORDER BY [t].[CustomerID], [t0].[OrderDate], [t0].[OrderID] + ) AS [t] + LEFT JOIN [Customers] AS [c0] ON [t].[CustomerID] = [c0].[CustomerID] +) AS [t1] +ORDER BY [t0].[CustomerID], [t1].[OrderDate], [t1].[OrderID] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindMiscellaneousQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindMiscellaneousQuerySqlServerTest.cs index 3607895dedc..595baa2f8f8 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindMiscellaneousQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindMiscellaneousQuerySqlServerTest.cs @@ -413,16 +413,16 @@ FROM [Employees] AS [e] WHERE [e].[EmployeeID] = -1 ) AS [t] ON 1 = 1 INNER JOIN ( - SELECT [t1].[EmployeeID] + SELECT [t0].[EmployeeID] FROM ( SELECT 1 AS empty - ) AS [e1] + ) AS [e2] LEFT JOIN ( - SELECT [e2].[EmployeeID] - FROM [Employees] AS [e2] - WHERE [e2].[EmployeeID] = -1 - ) AS [t1] ON 1 = 1 -) AS [t0] ON [t].[EmployeeID] = [t0].[EmployeeID] + SELECT [e1].[EmployeeID] + FROM [Employees] AS [e1] + WHERE [e1].[EmployeeID] = -1 + ) AS [t0] ON 1 = 1 +) AS [t1] ON [t].[EmployeeID] = [t1].[EmployeeID] """); } @@ -790,20 +790,20 @@ public override async Task Select_Subquery_Single(bool async) """ @__p_0='2' -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] FROM ( SELECT TOP(@__p_0) [o].[OrderID], [o].[ProductID] FROM [Order Details] AS [o] ORDER BY [o].[ProductID], [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], ROW_NUMBER() OVER(PARTITION BY [o0].[OrderID] ORDER BY [o0].[OrderID]) AS [row] FROM [Orders] AS [o0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] ORDER BY [t].[ProductID], [t].[OrderID] """); } @@ -856,39 +856,39 @@ public override async Task Select_Where_Subquery_Equality(bool async) """ @__p_0='1' -SELECT [t].[OrderID], [t].[CustomerID], [t].[EmployeeID], [t].[OrderDate] +SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT TOP(@__p_0) [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] ORDER BY [o].[OrderID] -) AS [t] +) AS [t0] WHERE ( SELECT COUNT(*) FROM ( SELECT TOP(2) [o0].[OrderID] FROM [Order Details] AS [o0] ORDER BY [o0].[OrderID] - ) AS [t0] + ) AS [t] WHERE ( SELECT TOP(1) [c].[Country] FROM [Customers] AS [c] - WHERE [c].[CustomerID] = [t].[CustomerID] + WHERE [c].[CustomerID] = [t0].[CustomerID] ORDER BY [c].[CustomerID]) = ( SELECT TOP(1) [c0].[Country] FROM [Orders] AS [o1] INNER JOIN [Customers] AS [c0] ON [o1].[CustomerID] = [c0].[CustomerID] - WHERE [o1].[OrderID] = [t0].[OrderID] + WHERE [o1].[OrderID] = [t].[OrderID] ORDER BY [o1].[OrderID], [c0].[CustomerID]) OR (( SELECT TOP(1) [c].[Country] FROM [Customers] AS [c] - WHERE [c].[CustomerID] = [t].[CustomerID] + WHERE [c].[CustomerID] = [t0].[CustomerID] ORDER BY [c].[CustomerID]) IS NULL AND ( SELECT TOP(1) [c0].[Country] FROM [Orders] AS [o1] INNER JOIN [Customers] AS [c0] ON [o1].[CustomerID] = [c0].[CustomerID] - WHERE [o1].[OrderID] = [t0].[OrderID] + WHERE [o1].[OrderID] = [t].[OrderID] ORDER BY [o1].[OrderID], [c0].[CustomerID]) IS NULL)) > 0 -ORDER BY [t].[OrderID] +ORDER BY [t0].[OrderID] """); } @@ -5524,7 +5524,7 @@ public override async Task Anonymous_projection_skip_empty_collection_FirstOrDef """ @__p_0='0' -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] FROM ( SELECT [c].[CustomerID] FROM [Customers] AS [c] @@ -5533,13 +5533,13 @@ ORDER BY (SELECT 1) OFFSET @__p_0 ROWS ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], ROW_NUMBER() OVER(PARTITION BY [o].[CustomerID] ORDER BY [o].[OrderID]) AS [row] FROM [Orders] AS [o] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[CustomerID] = [t0].[CustomerID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[CustomerID] = [t1].[CustomerID] """); } @@ -5551,20 +5551,20 @@ public override async Task Anonymous_projection_take_empty_collection_FirstOrDef """ @__p_0='1' -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] FROM ( SELECT TOP(@__p_0) [c].[CustomerID] FROM [Customers] AS [c] WHERE [c].[CustomerID] = N'FISSA' ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], ROW_NUMBER() OVER(PARTITION BY [o].[CustomerID] ORDER BY [o].[OrderID]) AS [row] FROM [Orders] AS [o] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[CustomerID] = [t0].[CustomerID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[CustomerID] = [t1].[CustomerID] """); } @@ -5577,7 +5577,7 @@ public override async Task Anonymous_projection_skip_take_empty_collection_First @__p_0='0' @__p_1='1' -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] FROM ( SELECT [c].[CustomerID] FROM [Customers] AS [c] @@ -5586,13 +5586,13 @@ ORDER BY (SELECT 1) OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], ROW_NUMBER() OVER(PARTITION BY [o].[CustomerID] ORDER BY [o].[OrderID]) AS [row] FROM [Orders] AS [o] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[CustomerID] = [t0].[CustomerID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[CustomerID] = [t1].[CustomerID] """); } @@ -7318,13 +7318,6 @@ FROM [Orders] AS [o] public override async Task Parameter_collection_Contains_with_projection_and_ordering(bool async) { -#if DEBUG - // GroupBy debug assert. Issue #26104. - Assert.StartsWith( - "Missing alias in the list", - (await Assert.ThrowsAsync( - () => base.Parameter_collection_Contains_with_projection_and_ordering(async))).Message); -#else await base.Parameter_collection_Contains_with_projection_and_ordering(async); AssertSql( @@ -7332,13 +7325,13 @@ public override async Task Parameter_collection_Contains_with_projection_and_ord @__ids_0='[10248,10249]' (Size = 4000) SELECT [o].[Quantity] AS [Key], ( - SELECT MAX([o3].[OrderDate]) - FROM [Order Details] AS [o2] - INNER JOIN [Orders] AS [o3] ON [o2].[OrderID] = [o3].[OrderID] - WHERE [o2].[OrderID] IN ( - SELECT [i1].[value] - FROM OPENJSON(@__ids_0) WITH ([value] int '$') AS [i1] - ) AND [o].[Quantity] = [o2].[Quantity]) AS [MaxTimestamp] + SELECT MAX([o1].[OrderDate]) + FROM [Order Details] AS [o0] + INNER JOIN [Orders] AS [o1] ON [o0].[OrderID] = [o1].[OrderID] + WHERE [o0].[OrderID] IN ( + SELECT [i0].[value] + FROM OPENJSON(@__ids_0) WITH ([value] int '$') AS [i0] + ) AND [o].[Quantity] = [o0].[Quantity]) AS [MaxTimestamp] FROM [Order Details] AS [o] WHERE [o].[OrderID] IN ( SELECT [i].[value] @@ -7346,16 +7339,15 @@ FROM OPENJSON(@__ids_0) WITH ([value] int '$') AS [i] ) GROUP BY [o].[Quantity] ORDER BY ( - SELECT MAX([o3].[OrderDate]) - FROM [Order Details] AS [o2] - INNER JOIN [Orders] AS [o3] ON [o2].[OrderID] = [o3].[OrderID] - WHERE [o2].[OrderID] IN ( + SELECT MAX([o1].[OrderDate]) + FROM [Order Details] AS [o0] + INNER JOIN [Orders] AS [o1] ON [o0].[OrderID] = [o1].[OrderID] + WHERE [o0].[OrderID] IN ( SELECT [i0].[value] FROM OPENJSON(@__ids_0) WITH ([value] int '$') AS [i0] - ) AND [o].[Quantity] = [o2].[Quantity]) + ) AND [o].[Quantity] = [o0].[Quantity]) """); -#endif - } + } public override async Task Contains_over_concatenated_columns_with_different_sizes(bool async) { diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindNavigationsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindNavigationsQuerySqlServerTest.cs index 6b41b2c59cf..a047053181f 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindNavigationsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindNavigationsQuerySqlServerTest.cs @@ -73,20 +73,20 @@ public override async Task Take_Select_Navigation(bool async) """ @__p_0='2' -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] FROM ( SELECT TOP(@__p_0) [c].[CustomerID] FROM [Customers] AS [c] ORDER BY [c].[CustomerID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], ROW_NUMBER() OVER(PARTITION BY [o].[CustomerID] ORDER BY [o].[OrderID]) AS [row] FROM [Orders] AS [o] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[CustomerID] = [t0].[CustomerID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[CustomerID] = [t1].[CustomerID] ORDER BY [t].[CustomerID] """); } @@ -135,7 +135,7 @@ public override async Task Select_collection_FirstOrDefault_project_anonymous_ty """ @__p_0='2' -SELECT [t0].[CustomerID], [t0].[OrderID], [t0].[c] +SELECT [t1].[CustomerID], [t1].[OrderID], [t1].[c] FROM ( SELECT TOP(@__p_0) [c].[CustomerID] FROM [Customers] AS [c] @@ -143,13 +143,13 @@ WHERE [c].[CustomerID] LIKE N'F%' ORDER BY [c].[CustomerID] ) AS [t] LEFT JOIN ( - SELECT [t1].[CustomerID], [t1].[OrderID], [t1].[c] + SELECT [t0].[CustomerID], [t0].[OrderID], [t0].[c] FROM ( SELECT [o].[CustomerID], [o].[OrderID], 1 AS [c], ROW_NUMBER() OVER(PARTITION BY [o].[CustomerID] ORDER BY [o].[OrderID]) AS [row] FROM [Orders] AS [o] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[CustomerID] = [t0].[CustomerID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[CustomerID] = [t1].[CustomerID] ORDER BY [t].[CustomerID] """); } @@ -162,7 +162,7 @@ public override async Task Select_collection_FirstOrDefault_project_anonymous_ty """ @__p_0='2' -SELECT [t0].[CustomerID], [t0].[OrderID], [t0].[c] +SELECT [t1].[CustomerID], [t1].[OrderID], [t1].[c] FROM ( SELECT TOP(@__p_0) [c].[CustomerID] FROM [Customers] AS [c] @@ -170,13 +170,13 @@ WHERE [c].[CustomerID] LIKE N'F%' ORDER BY [c].[CustomerID] ) AS [t] LEFT JOIN ( - SELECT [t1].[CustomerID], [t1].[OrderID], [t1].[c] + SELECT [t0].[CustomerID], [t0].[OrderID], [t0].[c] FROM ( SELECT [o].[CustomerID], [o].[OrderID], 1 AS [c], ROW_NUMBER() OVER(PARTITION BY [o].[CustomerID] ORDER BY [o].[OrderID]) AS [row] FROM [Orders] AS [o] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[CustomerID] = [t0].[CustomerID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[CustomerID] = [t1].[CustomerID] ORDER BY [t].[CustomerID] """); } @@ -189,20 +189,20 @@ public override async Task Select_collection_FirstOrDefault_project_entity(bool """ @__p_0='2' -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] FROM ( SELECT TOP(@__p_0) [c].[CustomerID] FROM [Customers] AS [c] ORDER BY [c].[CustomerID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], ROW_NUMBER() OVER(PARTITION BY [o].[CustomerID] ORDER BY [o].[OrderID]) AS [row] FROM [Orders] AS [o] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[CustomerID] = [t0].[CustomerID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[CustomerID] = [t1].[CustomerID] ORDER BY [t].[CustomerID] """); } @@ -215,7 +215,7 @@ public override async Task Skip_Select_Navigation(bool async) """ @__p_0='20' -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] FROM ( SELECT [c].[CustomerID] FROM [Customers] AS [c] @@ -223,13 +223,13 @@ ORDER BY [c].[CustomerID] OFFSET @__p_0 ROWS ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], ROW_NUMBER() OVER(PARTITION BY [o].[CustomerID] ORDER BY [o].[OrderID]) AS [row] FROM [Orders] AS [o] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[CustomerID] = [t0].[CustomerID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[CustomerID] = [t1].[CustomerID] ORDER BY [t].[CustomerID] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindQueryFiltersQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindQueryFiltersQuerySqlServerTest.cs index b40130ec983..dcac6470563 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindQueryFiltersQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindQueryFiltersQuerySqlServerTest.cs @@ -241,12 +241,12 @@ LEFT JOIN ( SELECT [c1].[CustomerID], [c1].[CompanyName] FROM [Customers] AS [c1] WHERE [c1].[CompanyName] LIKE @__ef_filter__TenantPrefix_0_startswith ESCAPE N'\' - ) AS [t3] ON [o1].[CustomerID] = [t3].[CustomerID] - WHERE [t3].[CustomerID] IS NOT NULL AND [t3].[CompanyName] IS NOT NULL + ) AS [t1] ON [o1].[CustomerID] = [t1].[CustomerID] + WHERE [t1].[CustomerID] IS NOT NULL AND [t1].[CompanyName] IS NOT NULL ) AS [t2] ON [o0].[OrderID] = [t2].[OrderID] WHERE [o0].[Quantity] > @__ef_filter___quantity_1 -) AS [t1] ON [t0].[OrderID] = [t1].[OrderID] -WHERE [c].[CompanyName] LIKE @__ef_filter__TenantPrefix_0_startswith ESCAPE N'\' AND [t1].[Discount] < CAST(10 AS real) +) AS [t3] ON [t0].[OrderID] = [t3].[OrderID] +WHERE [c].[CompanyName] LIKE @__ef_filter__TenantPrefix_0_startswith ESCAPE N'\' AND [t3].[Discount] < CAST(10 AS real) """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSelectQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSelectQuerySqlServerTest.cs index 23446b3fed9..3a5b91d4f6a 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSelectQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSelectQuerySqlServerTest.cs @@ -1774,19 +1774,19 @@ public override async Task Reverse_in_SelectMany_with_Take(bool async) """ @__p_0='20' -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] +SELECT [t].[OrderID], [t].[CustomerID], [t].[EmployeeID], [t].[OrderDate] FROM ( SELECT TOP(@__p_0) [c].[CustomerID] FROM [Customers] AS [c] ORDER BY [c].[CustomerID] DESC -) AS [t] +) AS [t0] CROSS APPLY ( SELECT TOP(30) [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] - WHERE [t].[CustomerID] = [o].[CustomerID] + WHERE [t0].[CustomerID] = [o].[CustomerID] ORDER BY [o].[OrderID] DESC -) AS [t0] -ORDER BY [t].[CustomerID] DESC +) AS [t] +ORDER BY [t0].[CustomerID] DESC """); } @@ -2025,7 +2025,7 @@ public override async Task Do_not_erase_projection_mapping_when_adding_single_pr AssertSql( """ -SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], [t].[OrderID], [t].[ProductID], [t].[Discount], [t].[Quantity], [t].[UnitPrice], [t].[ProductID0], [t].[Discontinued], [t].[ProductName], [t].[SupplierID], [t].[UnitPrice0], [t].[UnitsInStock], [t0].[OrderID], [t0].[ProductID], [t0].[ProductID0], [t2].[OrderID], [t2].[ProductID], [t2].[Discount], [t2].[Quantity], [t2].[UnitPrice], [t2].[ProductID0], [t2].[Discontinued], [t2].[ProductName], [t2].[SupplierID], [t2].[UnitPrice0], [t2].[UnitsInStock], [t0].[Discount], [t0].[Quantity], [t0].[UnitPrice], [t0].[Discontinued], [t0].[ProductName], [t0].[SupplierID], [t0].[UnitPrice0], [t0].[UnitsInStock] +SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], [t].[OrderID], [t].[ProductID], [t].[Discount], [t].[Quantity], [t].[UnitPrice], [t].[ProductID0], [t].[Discontinued], [t].[ProductName], [t].[SupplierID], [t].[UnitPrice0], [t].[UnitsInStock], [t1].[OrderID], [t1].[ProductID], [t1].[ProductID0], [t2].[OrderID], [t2].[ProductID], [t2].[Discount], [t2].[Quantity], [t2].[UnitPrice], [t2].[ProductID0], [t2].[Discontinued], [t2].[ProductName], [t2].[SupplierID], [t2].[UnitPrice0], [t2].[UnitsInStock], [t1].[Discount], [t1].[Quantity], [t1].[UnitPrice], [t1].[Discontinued], [t1].[ProductName], [t1].[SupplierID], [t1].[UnitPrice0], [t1].[UnitsInStock] FROM [Orders] AS [o] LEFT JOIN ( SELECT [o0].[OrderID], [o0].[ProductID], [o0].[Discount], [o0].[Quantity], [o0].[UnitPrice], [p].[ProductID] AS [ProductID0], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice] AS [UnitPrice0], [p].[UnitsInStock] @@ -2033,15 +2033,15 @@ FROM [Order Details] AS [o0] INNER JOIN [Products] AS [p] ON [o0].[ProductID] = [p].[ProductID] ) AS [t] ON [o].[OrderID] = [t].[OrderID] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[ProductID], [t1].[Discount], [t1].[Quantity], [t1].[UnitPrice], [t1].[ProductID0], [t1].[Discontinued], [t1].[ProductName], [t1].[SupplierID], [t1].[UnitPrice0], [t1].[UnitsInStock] + SELECT [t0].[OrderID], [t0].[ProductID], [t0].[Discount], [t0].[Quantity], [t0].[UnitPrice], [t0].[ProductID0], [t0].[Discontinued], [t0].[ProductName], [t0].[SupplierID], [t0].[UnitPrice0], [t0].[UnitsInStock] FROM ( SELECT [o1].[OrderID], [o1].[ProductID], [o1].[Discount], [o1].[Quantity], [o1].[UnitPrice], [p0].[ProductID] AS [ProductID0], [p0].[Discontinued], [p0].[ProductName], [p0].[SupplierID], [p0].[UnitPrice] AS [UnitPrice0], [p0].[UnitsInStock], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID], [o1].[ProductID], [p0].[ProductID]) AS [row] FROM [Order Details] AS [o1] INNER JOIN [Products] AS [p0] ON [o1].[ProductID] = [p0].[ProductID] WHERE [o1].[UnitPrice] > 10.0 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [o].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [o].[OrderID] = [t1].[OrderID] LEFT JOIN ( SELECT [o2].[OrderID], [o2].[ProductID], [o2].[Discount], [o2].[Quantity], [o2].[UnitPrice], [p1].[ProductID] AS [ProductID0], [p1].[Discontinued], [p1].[ProductName], [p1].[SupplierID], [p1].[UnitPrice] AS [UnitPrice0], [p1].[UnitsInStock] FROM [Order Details] AS [o2] @@ -2049,7 +2049,7 @@ FROM [Order Details] AS [o2] WHERE [o2].[UnitPrice] < 10.0 ) AS [t2] ON [o].[OrderID] = [t2].[OrderID] WHERE [o].[OrderID] < 10350 -ORDER BY [o].[OrderID], [t].[OrderID], [t].[ProductID], [t].[ProductID0], [t0].[OrderID], [t0].[ProductID], [t0].[ProductID0], [t2].[OrderID], [t2].[ProductID] +ORDER BY [o].[OrderID], [t].[OrderID], [t].[ProductID], [t].[ProductID0], [t1].[OrderID], [t1].[ProductID], [t1].[ProductID0], [t2].[OrderID], [t2].[ProductID] """); } @@ -2218,14 +2218,14 @@ public override async Task Select_nested_collection_deep_distinct_no_identifiers AssertSql( """ -SELECT [t].[City], [t1].[OrderID], [t1].[OrderID0], [t1].[OrderID00] +SELECT [t].[City], [t2].[OrderID], [t2].[OrderID0], [t2].[OrderID00] FROM ( SELECT DISTINCT [c].[City] FROM [Customers] AS [c] WHERE [c].[City] = N'London' ) AS [t] OUTER APPLY ( - SELECT [t0].[OrderID], [t2].[OrderID] AS [OrderID0], [t2].[OrderID0] AS [OrderID00] + SELECT [t0].[OrderID], [t1].[OrderID] AS [OrderID0], [t1].[OrderID0] AS [OrderID00] FROM ( SELECT DISTINCT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] @@ -2235,9 +2235,9 @@ OUTER APPLY ( SELECT [t0].[OrderID], [o0].[OrderID] AS [OrderID0] FROM [Orders] AS [o0] WHERE [t0].[CustomerID] = [t].[City] OR ([t0].[CustomerID] IS NULL AND [t].[City] IS NULL) - ) AS [t2] -) AS [t1] -ORDER BY [t].[City], [t1].[OrderID], [t1].[OrderID00] + ) AS [t1] +) AS [t2] +ORDER BY [t].[City], [t2].[OrderID], [t2].[OrderID00] """); } @@ -2247,7 +2247,7 @@ public override async Task Collection_include_over_result_of_single_non_scalar(b AssertSql( """ -SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], [t].[OrderID], [t].[CustomerID], [t].[EmployeeID], [t].[OrderDate], [t].[OrderID0], [t].[ProductID], [t].[Discount], [t].[Quantity], [t].[UnitPrice], [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [o2].[OrderID], [o2].[ProductID], [o2].[Discount], [o2].[Quantity], [o2].[UnitPrice] +SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], [t].[OrderID], [t].[CustomerID], [t].[EmployeeID], [t].[OrderDate], [t].[OrderID0], [t].[ProductID], [t].[Discount], [t].[Quantity], [t].[UnitPrice], [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [o2].[OrderID], [o2].[ProductID], [o2].[Discount], [o2].[Quantity], [o2].[UnitPrice] FROM [Customers] AS [c] LEFT JOIN ( SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], [o0].[OrderID] AS [OrderID0], [o0].[ProductID], [o0].[Discount], [o0].[Quantity], [o0].[UnitPrice] @@ -2255,16 +2255,16 @@ FROM [Orders] AS [o] LEFT JOIN [Order Details] AS [o0] ON [o].[OrderID] = [o0].[OrderID] ) AS [t] ON [c].[CustomerID] = [t].[CustomerID] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], ROW_NUMBER() OVER(PARTITION BY [o1].[CustomerID] ORDER BY [o1].[OrderDate]) AS [row] FROM [Orders] AS [o1] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [c].[CustomerID] = [t0].[CustomerID] -LEFT JOIN [Order Details] AS [o2] ON [t0].[OrderID] = [o2].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [c].[CustomerID] = [t1].[CustomerID] +LEFT JOIN [Order Details] AS [o2] ON [t1].[OrderID] = [o2].[OrderID] WHERE [c].[CustomerID] LIKE N'F%' -ORDER BY [c].[CustomerID], [t].[OrderID], [t].[OrderID0], [t].[ProductID], [t0].[OrderID], [o2].[OrderID] +ORDER BY [c].[CustomerID], [t].[OrderID], [t].[OrderID0], [t].[ProductID], [t1].[OrderID], [o2].[OrderID] """); } @@ -2276,7 +2276,7 @@ public override async Task Collection_projection_selecting_outer_element_followe """ @__p_0='10' -SELECT [t].[CustomerID], [t0].[CustomerID], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region], [t0].[OrderID], [t0].[OrderID0], [t0].[CustomerID0], [t0].[EmployeeID], [t0].[OrderDate] +SELECT [t].[CustomerID], [t1].[CustomerID], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region], [t1].[OrderID], [t1].[OrderID0], [t1].[CustomerID0], [t1].[EmployeeID], [t1].[OrderDate] FROM ( SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] FROM [Customers] AS [c] @@ -2284,16 +2284,16 @@ WHERE [c].[CustomerID] LIKE N'F%' ORDER BY [c].[CustomerID] ) AS [t] OUTER APPLY ( - SELECT [t].[CustomerID], [t].[Address], [t].[City], [t].[CompanyName], [t].[ContactName], [t].[ContactTitle], [t].[Country], [t].[Fax], [t].[Phone], [t].[PostalCode], [t].[Region], [o].[OrderID], [t1].[OrderID] AS [OrderID0], [t1].[CustomerID] AS [CustomerID0], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t].[CustomerID], [t].[Address], [t].[City], [t].[CompanyName], [t].[ContactName], [t].[ContactTitle], [t].[Country], [t].[Fax], [t].[Phone], [t].[PostalCode], [t].[Region], [o].[OrderID], [t0].[OrderID] AS [OrderID0], [t0].[CustomerID] AS [CustomerID0], [t0].[EmployeeID], [t0].[OrderDate] FROM [Orders] AS [o] OUTER APPLY ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate] FROM [Orders] AS [o0] WHERE [t].[CustomerID] = [o0].[CustomerID] - ) AS [t1] + ) AS [t0] WHERE [t].[CustomerID] = [o].[CustomerID] -) AS [t0] -ORDER BY [t].[CustomerID], [t0].[OrderID] +) AS [t1] +ORDER BY [t].[CustomerID], [t1].[OrderID] """); } @@ -2303,24 +2303,24 @@ public override async Task Take_on_top_level_and_on_collection_projection_with_o AssertSql( """ -SELECT [t].[OrderID], [t].[OrderDate], [t0].[OrderID], [t0].[ProductID], [t0].[Discontinued], [t0].[ProductName], [t0].[SupplierID], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitPrice0], [t0].[ProductID0] +SELECT [t0].[OrderID], [t0].[OrderDate], [t1].[OrderID], [t1].[ProductID], [t1].[Discontinued], [t1].[ProductName], [t1].[SupplierID], [t1].[UnitPrice], [t1].[UnitsInStock], [t1].[UnitPrice0], [t1].[ProductID0] FROM ( SELECT TOP(1) [o].[OrderID], [o].[OrderDate] FROM [Orders] AS [o] WHERE [o].[CustomerID] LIKE N'F%' -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[OrderID], [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock], [t1].[UnitPrice] AS [UnitPrice0], [t1].[ProductID] AS [ProductID0] + SELECT [t].[OrderID], [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock], [t].[UnitPrice] AS [UnitPrice0], [t].[ProductID] AS [ProductID0] FROM ( SELECT [o0].[OrderID], [o0].[ProductID], [o0].[UnitPrice] FROM [Order Details] AS [o0] - WHERE [t].[OrderID] = [o0].[OrderID] + WHERE [t0].[OrderID] = [o0].[OrderID] ORDER BY [o0].[OrderID] DESC OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY - ) AS [t1] - INNER JOIN [Products] AS [p] ON [t1].[ProductID] = [p].[ProductID] -) AS [t0] -ORDER BY [t].[OrderID], [t0].[OrderID] DESC, [t0].[ProductID0] + ) AS [t] + INNER JOIN [Products] AS [p] ON [t].[ProductID] = [p].[ProductID] +) AS [t1] +ORDER BY [t0].[OrderID], [t1].[OrderID] DESC, [t1].[ProductID0] """); } @@ -2330,27 +2330,27 @@ public override async Task Take_on_correlated_collection_in_first(bool async) AssertSql( """ -SELECT [t].[CustomerID], [t0].[Title], [t0].[OrderID], [t0].[CustomerID] +SELECT [t0].[CustomerID], [t1].[Title], [t1].[OrderID], [t1].[CustomerID] FROM ( SELECT TOP(1) [c].[CustomerID] FROM [Customers] AS [c] WHERE [c].[CustomerID] LIKE N'F%' ORDER BY [c].[CustomerID] -) AS [t] +) AS [t0] OUTER APPLY ( SELECT CASE - WHEN [t1].[CustomerID] = [c0].[CustomerID] OR ([t1].[CustomerID] IS NULL AND [c0].[CustomerID] IS NULL) THEN N'A' + WHEN [t].[CustomerID] = [c0].[CustomerID] OR ([t].[CustomerID] IS NULL AND [c0].[CustomerID] IS NULL) THEN N'A' ELSE N'B' - END AS [Title], [t1].[OrderID], [c0].[CustomerID], [t1].[OrderDate] + END AS [Title], [t].[OrderID], [c0].[CustomerID], [t].[OrderDate] FROM ( SELECT TOP(1) [o].[OrderID], [o].[CustomerID], [o].[OrderDate] FROM [Orders] AS [o] - WHERE [t].[CustomerID] = [o].[CustomerID] + WHERE [t0].[CustomerID] = [o].[CustomerID] ORDER BY [o].[OrderDate] - ) AS [t1] - LEFT JOIN [Customers] AS [c0] ON [t1].[CustomerID] = [c0].[CustomerID] -) AS [t0] -ORDER BY [t].[CustomerID], [t0].[OrderDate], [t0].[OrderID] + ) AS [t] + LEFT JOIN [Customers] AS [c0] ON [t].[CustomerID] = [c0].[CustomerID] +) AS [t1] +ORDER BY [t0].[CustomerID], [t1].[OrderDate], [t1].[OrderID] """); } @@ -2360,16 +2360,16 @@ public override async Task Client_projection_via_ctor_arguments(bool async) AssertSql( """ -SELECT [t].[CustomerID], [t].[City], [o0].[OrderID], [o0].[OrderDate], [t].[c] +SELECT [t].[CustomerID], [t].[City], [o].[OrderID], [o].[OrderDate], [t].[c] FROM ( SELECT TOP(2) [c].[CustomerID], [c].[City], ( SELECT COUNT(*) - FROM [Orders] AS [o] - WHERE [c].[CustomerID] = [o].[CustomerID]) AS [c] + FROM [Orders] AS [o0] + WHERE [c].[CustomerID] = [o0].[CustomerID]) AS [c] FROM [Customers] AS [c] WHERE [c].[CustomerID] = N'ALFKI' ) AS [t] -LEFT JOIN [Orders] AS [o0] ON [t].[CustomerID] = [o0].[CustomerID] +LEFT JOIN [Orders] AS [o] ON [t].[CustomerID] = [o].[CustomerID] ORDER BY [t].[CustomerID] """); } @@ -2701,22 +2701,22 @@ public override async Task List_from_result_of_single_result_3(bool async) AssertSql( """ -SELECT [t].[CustomerID], [t0].[OrderID], [o0].[ProductID], [o0].[OrderID], [t0].[c] +SELECT [t].[CustomerID], [t1].[OrderID], [o0].[ProductID], [o0].[OrderID], [t1].[c] FROM ( SELECT TOP(1) [c].[CustomerID] FROM [Customers] AS [c] ORDER BY [c].[CustomerID] ) AS [t] LEFT JOIN ( - SELECT [t1].[c], [t1].[OrderID], [t1].[CustomerID] + SELECT [t0].[c], [t0].[OrderID], [t0].[CustomerID] FROM ( SELECT 1 AS [c], [o].[OrderID], [o].[CustomerID], ROW_NUMBER() OVER(PARTITION BY [o].[CustomerID] ORDER BY [o].[OrderDate]) AS [row] FROM [Orders] AS [o] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[CustomerID] = [t0].[CustomerID] -LEFT JOIN [Order Details] AS [o0] ON [t0].[OrderID] = [o0].[OrderID] -ORDER BY [t].[CustomerID], [t0].[OrderID], [o0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[CustomerID] = [t1].[CustomerID] +LEFT JOIN [Order Details] AS [o0] ON [t1].[OrderID] = [o0].[OrderID] +ORDER BY [t].[CustomerID], [t1].[OrderID], [o0].[OrderID] """); } @@ -2748,25 +2748,25 @@ public override async Task Set_operation_in_pending_collection(bool async) await base.Set_operation_in_pending_collection(async); AssertSql( -""" + """ @__p_0='5' -SELECT [t].[CustomerID], [t0].[OrderID] +SELECT [t0].[CustomerID], [t].[OrderID] FROM ( SELECT TOP(@__p_0) [c].[CustomerID] FROM [Customers] AS [c] ORDER BY [c].[CustomerID] -) AS [t] +) AS [t0] OUTER APPLY ( SELECT [o].[OrderID] FROM [Orders] AS [o] - WHERE [o].[CustomerID] = [t].[CustomerID] + WHERE [o].[CustomerID] = [t0].[CustomerID] UNION SELECT [o0].[OrderID] FROM [Orders] AS [o0] - WHERE [o0].[CustomerID] = [t].[CustomerID] -) AS [t0] -ORDER BY [t].[CustomerID] + WHERE [o0].[CustomerID] = [t0].[CustomerID] +) AS [t] +ORDER BY [t0].[CustomerID] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSetOperationsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSetOperationsQuerySqlServerTest.cs index ded5240008b..707f84a084c 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSetOperationsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSetOperationsQuerySqlServerTest.cs @@ -1065,12 +1065,12 @@ public override async Task Union_over_OrderBy_Take2(bool async) SELECT [o].[OrderID] FROM [Orders] AS [o] UNION -SELECT [t0].[OrderID] +SELECT [t].[OrderID] FROM ( SELECT TOP(@__p_0) [o0].[OrderID] FROM [Orders] AS [o0] ORDER BY [o0].[OrderDate] -) AS [t0] +) AS [t] """); } @@ -1103,12 +1103,12 @@ FROM [Customers] AS [c] ORDER BY [c].[ContactName] ) AS [t] UNION -SELECT [t1].[CustomerID], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] +SELECT [t0].[CustomerID], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT TOP(@__p_0) [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region] FROM [Customers] AS [c0] ORDER BY [c0].[ContactName] -) AS [t1] +) AS [t0] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSplitIncludeNoTrackingQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSplitIncludeNoTrackingQuerySqlServerTest.cs index d9502a7b27f..21048a2bbba 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSplitIncludeNoTrackingQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSplitIncludeNoTrackingQuerySqlServerTest.cs @@ -37,7 +37,7 @@ public override async Task Include_reference_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -45,15 +45,15 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o0].[OrderID] ORDER BY [o0].[OrderID]) AS [row] FROM [Orders] AS [o0] LEFT JOIN [Customers] AS [c] ON [o0].[CustomerID] = [c].[CustomerID] WHERE [o0].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -246,7 +246,7 @@ OFFSET @__p_0 ROWS FETCH NEXT 1 ROWS ONLY """ @__p_0='1' -SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], [t].[CustomerID] +SELECT [o3].[OrderID], [o3].[CustomerID], [o3].[EmployeeID], [o3].[OrderDate], [t].[CustomerID] FROM ( SELECT [c].[CustomerID] FROM [Customers] AS [c] @@ -254,14 +254,14 @@ WHERE [c].[CustomerID] LIKE N'A%' ORDER BY [c].[CustomerID] OFFSET @__p_0 ROWS FETCH NEXT 1 ROWS ONLY ) AS [t] -INNER JOIN [Orders] AS [o] ON [t].[CustomerID] = [o].[CustomerID] -ORDER BY [t].[CustomerID], [o].[OrderID] +INNER JOIN [Orders] AS [o3] ON [t].[CustomerID] = [o3].[CustomerID] +ORDER BY [t].[CustomerID], [o3].[OrderID] """, // """ @__p_0='1' -SELECT [o0].[OrderID], [o0].[ProductID], [o0].[Discount], [o0].[Quantity], [o0].[UnitPrice], [t].[CustomerID], [o].[OrderID] +SELECT [o4].[OrderID], [o4].[ProductID], [o4].[Discount], [o4].[Quantity], [o4].[UnitPrice], [t].[CustomerID], [o3].[OrderID] FROM ( SELECT [c].[CustomerID] FROM [Customers] AS [c] @@ -269,9 +269,9 @@ WHERE [c].[CustomerID] LIKE N'A%' ORDER BY [c].[CustomerID] OFFSET @__p_0 ROWS FETCH NEXT 1 ROWS ONLY ) AS [t] -INNER JOIN [Orders] AS [o] ON [t].[CustomerID] = [o].[CustomerID] -INNER JOIN [Order Details] AS [o0] ON [o].[OrderID] = [o0].[OrderID] -ORDER BY [t].[CustomerID], [o].[OrderID] +INNER JOIN [Orders] AS [o3] ON [t].[CustomerID] = [o3].[CustomerID] +INNER JOIN [Order Details] AS [o4] ON [o3].[OrderID] = [o4].[OrderID] +ORDER BY [t].[CustomerID], [o3].[OrderID] """); } @@ -356,7 +356,7 @@ ORDER BY [t].[CustomerID] @__p_1='1' @__p_0='2' -SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], [t1].[CustomerID], [t1].[CustomerID0] +SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], [t2].[CustomerID], [t2].[CustomerID0] FROM ( SELECT TOP(@__p_1) [t].[CustomerID], [t0].[CustomerID] AS [CustomerID0] FROM ( @@ -371,9 +371,9 @@ ORDER BY [c0].[CustomerID] OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY ) AS [t0] ORDER BY [t].[CustomerID] -) AS [t1] -INNER JOIN [Orders] AS [o] ON [t1].[CustomerID0] = [o].[CustomerID] -ORDER BY [t1].[CustomerID], [t1].[CustomerID0] +) AS [t2] +INNER JOIN [Orders] AS [o0] ON [t2].[CustomerID0] = [o0].[CustomerID] +ORDER BY [t2].[CustomerID], [t2].[CustomerID0] """); } @@ -562,7 +562,7 @@ public override async Task Include_collection_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -570,19 +570,19 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], ROW_NUMBER() OVER(PARTITION BY [o0].[OrderID] ORDER BY [o0].[OrderID]) AS [row] FROM [Orders] AS [o0] WHERE [o0].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID] """, // """ -SELECT [o1].[OrderID], [o1].[ProductID], [o1].[Discount], [o1].[Quantity], [o1].[UnitPrice], [t].[OrderID], [t0].[OrderID] +SELECT [o6].[OrderID], [o6].[ProductID], [o6].[Discount], [o6].[Quantity], [o6].[UnitPrice], [t].[OrderID], [t1].[OrderID] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -590,16 +590,16 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID] + SELECT [t0].[OrderID] FROM ( - SELECT [o0].[OrderID], ROW_NUMBER() OVER(PARTITION BY [o0].[OrderID] ORDER BY [o0].[OrderID]) AS [row] - FROM [Orders] AS [o0] - WHERE [o0].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -INNER JOIN [Order Details] AS [o1] ON [t0].[OrderID] = [o1].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID] + SELECT [o5].[OrderID], ROW_NUMBER() OVER(PARTITION BY [o5].[OrderID] ORDER BY [o5].[OrderID]) AS [row] + FROM [Orders] AS [o5] + WHERE [o5].[OrderID] = 10248 + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +INNER JOIN [Order Details] AS [o6] ON [t1].[OrderID] = [o6].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID] """); } @@ -609,7 +609,7 @@ public override async Task Join_Include_collection_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -618,20 +618,20 @@ FROM [Order Details] AS [o] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [o1].[OrderID] AS [OrderID0], [o1].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] INNER JOIN [Orders] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID] """, // """ -SELECT [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID] +SELECT [o11].[OrderID], [o11].[ProductID], [o11].[Discount], [o11].[Quantity], [o11].[UnitPrice], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -640,17 +640,17 @@ FROM [Order Details] AS [o] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] FROM ( - SELECT [o2].[OrderID], [o1].[OrderID] AS [OrderID0], [o1].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] - FROM [Order Details] AS [o1] - INNER JOIN [Orders] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] - WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -INNER JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID] + SELECT [o10].[OrderID], [o9].[OrderID] AS [OrderID0], [o9].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o10].[OrderID] ORDER BY [o10].[OrderID]) AS [row] + FROM [Order Details] AS [o9] + INNER JOIN [Orders] AS [o10] ON [o9].[OrderID] = [o10].[OrderID] + WHERE [o9].[OrderID] = 10248 + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +INNER JOIN [Order Details] AS [o11] ON [t1].[OrderID] = [o11].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID] """); } @@ -742,7 +742,7 @@ public override async Task Join_Include_reference_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -750,15 +750,15 @@ FROM [Order Details] AS [o] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] INNER JOIN [Orders] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] LEFT JOIN [Customers] AS [c] ON [o2].[CustomerID] = [c].[CustomerID] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -768,7 +768,7 @@ public override async Task SelectMany_Include_collection_GroupBy_Select(bool asy AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -777,20 +777,20 @@ CROSS JOIN [Orders] AS [o0] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [o1].[OrderID] AS [OrderID0], [o1].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] CROSS JOIN [Orders] AS [o2] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID] """, // """ -SELECT [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID] +SELECT [o11].[OrderID], [o11].[ProductID], [o11].[Discount], [o11].[Quantity], [o11].[UnitPrice], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -799,17 +799,17 @@ CROSS JOIN [Orders] AS [o0] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] FROM ( - SELECT [o2].[OrderID], [o1].[OrderID] AS [OrderID0], [o1].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] - FROM [Order Details] AS [o1] - CROSS JOIN [Orders] AS [o2] - WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -INNER JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID] + SELECT [o10].[OrderID], [o9].[OrderID] AS [OrderID0], [o9].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o10].[OrderID] ORDER BY [o10].[OrderID]) AS [row] + FROM [Order Details] AS [o9] + CROSS JOIN [Orders] AS [o10] + WHERE [o9].[OrderID] = 10248 + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +INNER JOIN [Order Details] AS [o11] ON [t1].[OrderID] = [o11].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID] """); } @@ -833,7 +833,7 @@ public override async Task Include_collection_SelectMany_GroupBy_Select(bool asy AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -842,20 +842,20 @@ CROSS JOIN [Order Details] AS [o0] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [o2].[OrderID] AS [OrderID0], [o2].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] CROSS JOIN [Order Details] AS [o2] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] """, // """ -SELECT [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice], [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] +SELECT [o11].[OrderID], [o11].[ProductID], [o11].[Discount], [o11].[Quantity], [o11].[UnitPrice], [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -864,17 +864,17 @@ CROSS JOIN [Order Details] AS [o0] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] FROM ( - SELECT [o1].[OrderID], [o2].[OrderID] AS [OrderID0], [o2].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] - FROM [Orders] AS [o1] - CROSS JOIN [Order Details] AS [o2] - WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -INNER JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] + SELECT [o9].[OrderID], [o10].[OrderID] AS [OrderID0], [o10].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o9].[OrderID] ORDER BY [o9].[OrderID]) AS [row] + FROM [Orders] AS [o9] + CROSS JOIN [Order Details] AS [o10] + WHERE [o9].[OrderID] = 10248 + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +INNER JOIN [Order Details] AS [o11] ON [t1].[OrderID] = [o11].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] """); } @@ -1038,17 +1038,17 @@ WHERE [c].[CustomerID] LIKE N'F%' """, // """ -SELECT [o0].[OrderID], [o0].[ProductID], [o0].[Discount], [o0].[Quantity], [o0].[UnitPrice], [c].[CustomerID], [t0].[OrderID] +SELECT [o4].[OrderID], [o4].[ProductID], [o4].[Discount], [o4].[Quantity], [o4].[UnitPrice], [c].[CustomerID], [t0].[OrderID] FROM [Customers] AS [c] LEFT JOIN ( SELECT [t].[OrderID], [t].[CustomerID] FROM ( - SELECT [o].[OrderID], [o].[CustomerID], ROW_NUMBER() OVER(PARTITION BY [o].[CustomerID] ORDER BY [o].[OrderDate]) AS [row] - FROM [Orders] AS [o] + SELECT [o3].[OrderID], [o3].[CustomerID], ROW_NUMBER() OVER(PARTITION BY [o3].[CustomerID] ORDER BY [o3].[OrderDate]) AS [row] + FROM [Orders] AS [o3] ) AS [t] WHERE [t].[row] <= 1 ) AS [t0] ON [c].[CustomerID] = [t0].[CustomerID] -INNER JOIN [Order Details] AS [o0] ON [t0].[OrderID] = [o0].[OrderID] +INNER JOIN [Order Details] AS [o4] ON [t0].[OrderID] = [o4].[OrderID] WHERE [c].[CustomerID] LIKE N'F%' ORDER BY [c].[CustomerID], [t0].[OrderID] """); @@ -1220,7 +1220,7 @@ ORDER BY [t].[CustomerID] """ @__p_0='1' -SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], [t0].[CustomerID] +SELECT [o3].[OrderID], [o3].[CustomerID], [o3].[EmployeeID], [o3].[OrderDate], [t0].[CustomerID] FROM ( SELECT TOP(1) [t].[CustomerID] FROM ( @@ -1231,14 +1231,14 @@ ORDER BY [c].[CustomerID] ) AS [t] ORDER BY [t].[CustomerID] ) AS [t0] -INNER JOIN [Orders] AS [o] ON [t0].[CustomerID] = [o].[CustomerID] -ORDER BY [t0].[CustomerID], [o].[OrderID] +INNER JOIN [Orders] AS [o3] ON [t0].[CustomerID] = [o3].[CustomerID] +ORDER BY [t0].[CustomerID], [o3].[OrderID] """, // """ @__p_0='1' -SELECT [o0].[OrderID], [o0].[ProductID], [o0].[Discount], [o0].[Quantity], [o0].[UnitPrice], [t0].[CustomerID], [o].[OrderID] +SELECT [o4].[OrderID], [o4].[ProductID], [o4].[Discount], [o4].[Quantity], [o4].[UnitPrice], [t0].[CustomerID], [o3].[OrderID] FROM ( SELECT TOP(1) [t].[CustomerID] FROM ( @@ -1249,9 +1249,9 @@ ORDER BY [c].[CustomerID] ) AS [t] ORDER BY [t].[CustomerID] ) AS [t0] -INNER JOIN [Orders] AS [o] ON [t0].[CustomerID] = [o].[CustomerID] -INNER JOIN [Order Details] AS [o0] ON [o].[OrderID] = [o0].[OrderID] -ORDER BY [t0].[CustomerID], [o].[OrderID] +INNER JOIN [Orders] AS [o3] ON [t0].[CustomerID] = [o3].[CustomerID] +INNER JOIN [Order Details] AS [o4] ON [o3].[OrderID] = [o4].[OrderID] +ORDER BY [t0].[CustomerID], [o3].[OrderID] """); } @@ -1527,7 +1527,7 @@ OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY """ @__p_0='2' -SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], [t].[CustomerID], [t0].[CustomerID] +SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], [t].[CustomerID], [t0].[CustomerID] FROM ( SELECT TOP(@__p_0) [c].[CustomerID] FROM [Customers] AS [c] @@ -1539,7 +1539,7 @@ FROM [Customers] AS [c0] ORDER BY [c0].[CustomerID] OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY ) AS [t0] -INNER JOIN [Orders] AS [o] ON [t0].[CustomerID] = [o].[CustomerID] +INNER JOIN [Orders] AS [o0] ON [t0].[CustomerID] = [o0].[CustomerID] ORDER BY [t].[CustomerID], [t0].[CustomerID] """); } @@ -1830,7 +1830,7 @@ ORDER BY [t].[CustomerID] """ @__p_0='1' -SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], [t0].[CustomerID] +SELECT [o3].[OrderID], [o3].[CustomerID], [o3].[EmployeeID], [o3].[OrderDate], [t0].[CustomerID] FROM ( SELECT TOP(1) [t].[CustomerID] FROM ( @@ -1842,14 +1842,14 @@ OFFSET @__p_0 ROWS FETCH NEXT @__p_0 ROWS ONLY ) AS [t] ORDER BY [t].[CustomerID] ) AS [t0] -INNER JOIN [Orders] AS [o] ON [t0].[CustomerID] = [o].[CustomerID] -ORDER BY [t0].[CustomerID], [o].[OrderID] +INNER JOIN [Orders] AS [o3] ON [t0].[CustomerID] = [o3].[CustomerID] +ORDER BY [t0].[CustomerID], [o3].[OrderID] """, // """ @__p_0='1' -SELECT [o0].[OrderID], [o0].[ProductID], [o0].[Discount], [o0].[Quantity], [o0].[UnitPrice], [t0].[CustomerID], [o].[OrderID] +SELECT [o4].[OrderID], [o4].[ProductID], [o4].[Discount], [o4].[Quantity], [o4].[UnitPrice], [t0].[CustomerID], [o3].[OrderID] FROM ( SELECT TOP(1) [t].[CustomerID] FROM ( @@ -1861,9 +1861,9 @@ OFFSET @__p_0 ROWS FETCH NEXT @__p_0 ROWS ONLY ) AS [t] ORDER BY [t].[CustomerID] ) AS [t0] -INNER JOIN [Orders] AS [o] ON [t0].[CustomerID] = [o].[CustomerID] -INNER JOIN [Order Details] AS [o0] ON [o].[OrderID] = [o0].[OrderID] -ORDER BY [t0].[CustomerID], [o].[OrderID] +INNER JOIN [Orders] AS [o3] ON [t0].[CustomerID] = [o3].[CustomerID] +INNER JOIN [Order Details] AS [o4] ON [o3].[OrderID] = [o4].[OrderID] +ORDER BY [t0].[CustomerID], [o3].[OrderID] """); } @@ -2041,7 +2041,7 @@ public override async Task Include_reference_Join_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -2050,16 +2050,16 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] INNER JOIN [Order Details] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] LEFT JOIN [Customers] AS [c] ON [o1].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -2346,7 +2346,7 @@ public override async Task SelectMany_Include_reference_GroupBy_Select(bool asyn AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -2355,16 +2355,16 @@ CROSS JOIN [Orders] AS [o0] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] CROSS JOIN [Orders] AS [o2] LEFT JOIN [Customers] AS [c] ON [o2].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -2374,7 +2374,7 @@ public override async Task Include_reference_SelectMany_GroupBy_Select(bool asyn AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -2383,16 +2383,16 @@ CROSS JOIN [Order Details] AS [o0] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] CROSS JOIN [Order Details] AS [o2] LEFT JOIN [Customers] AS [c] ON [o1].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -2671,7 +2671,7 @@ public override async Task Include_collection_Join_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -2680,20 +2680,20 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [o2].[OrderID] AS [OrderID0], [o2].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] INNER JOIN [Order Details] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] """, // """ -SELECT [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice], [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] +SELECT [o11].[OrderID], [o11].[ProductID], [o11].[Discount], [o11].[Quantity], [o11].[UnitPrice], [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -2702,17 +2702,17 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] FROM ( - SELECT [o1].[OrderID], [o2].[OrderID] AS [OrderID0], [o2].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] - FROM [Orders] AS [o1] - INNER JOIN [Order Details] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] - WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -INNER JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] + SELECT [o9].[OrderID], [o10].[OrderID] AS [OrderID0], [o10].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o9].[OrderID] ORDER BY [o9].[OrderID]) AS [row] + FROM [Orders] AS [o9] + INNER JOIN [Order Details] AS [o10] ON [o9].[OrderID] = [o10].[OrderID] + WHERE [o9].[OrderID] = 10248 + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +INNER JOIN [Order Details] AS [o11] ON [t1].[OrderID] = [o11].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSplitIncludeQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSplitIncludeQuerySqlServerTest.cs index 3e8d28a6a36..5049d2f26a9 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSplitIncludeQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSplitIncludeQuerySqlServerTest.cs @@ -944,7 +944,7 @@ OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY """ @__p_0='2' -SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], [t].[CustomerID], [t0].[CustomerID] +SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], [t].[CustomerID], [t0].[CustomerID] FROM ( SELECT TOP(@__p_0) [c].[CustomerID] FROM [Customers] AS [c] @@ -956,7 +956,7 @@ FROM [Customers] AS [c0] ORDER BY [c0].[CustomerID] OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY ) AS [t0] -INNER JOIN [Orders] AS [o] ON [t0].[CustomerID] = [o].[CustomerID] +INNER JOIN [Orders] AS [o0] ON [t0].[CustomerID] = [o0].[CustomerID] ORDER BY [t].[CustomerID], [t0].[CustomerID] """); } @@ -1013,7 +1013,7 @@ ORDER BY [t].[CustomerID] @__p_1='1' @__p_0='2' -SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], [t1].[CustomerID], [t1].[CustomerID0] +SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], [t2].[CustomerID], [t2].[CustomerID0] FROM ( SELECT TOP(@__p_1) [t].[CustomerID], [t0].[CustomerID] AS [CustomerID0] FROM ( @@ -1028,9 +1028,9 @@ ORDER BY [c0].[CustomerID] OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY ) AS [t0] ORDER BY [t].[CustomerID] -) AS [t1] -INNER JOIN [Orders] AS [o] ON [t1].[CustomerID0] = [o].[CustomerID] -ORDER BY [t1].[CustomerID], [t1].[CustomerID0] +) AS [t2] +INNER JOIN [Orders] AS [o0] ON [t2].[CustomerID0] = [o0].[CustomerID] +ORDER BY [t2].[CustomerID], [t2].[CustomerID0] """); } @@ -1594,7 +1594,7 @@ public override async Task Include_collection_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1602,19 +1602,19 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], ROW_NUMBER() OVER(PARTITION BY [o0].[OrderID] ORDER BY [o0].[OrderID]) AS [row] FROM [Orders] AS [o0] WHERE [o0].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID] """, // """ -SELECT [o1].[OrderID], [o1].[ProductID], [o1].[Discount], [o1].[Quantity], [o1].[UnitPrice], [t].[OrderID], [t0].[OrderID] +SELECT [o6].[OrderID], [o6].[ProductID], [o6].[Discount], [o6].[Quantity], [o6].[UnitPrice], [t].[OrderID], [t1].[OrderID] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1622,16 +1622,16 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID] + SELECT [t0].[OrderID] FROM ( - SELECT [o0].[OrderID], ROW_NUMBER() OVER(PARTITION BY [o0].[OrderID] ORDER BY [o0].[OrderID]) AS [row] - FROM [Orders] AS [o0] - WHERE [o0].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -INNER JOIN [Order Details] AS [o1] ON [t0].[OrderID] = [o1].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID] + SELECT [o5].[OrderID], ROW_NUMBER() OVER(PARTITION BY [o5].[OrderID] ORDER BY [o5].[OrderID]) AS [row] + FROM [Orders] AS [o5] + WHERE [o5].[OrderID] = 10248 + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +INNER JOIN [Order Details] AS [o6] ON [t1].[OrderID] = [o6].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID] """); } @@ -1641,7 +1641,7 @@ public override async Task Include_reference_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1649,15 +1649,15 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o0].[OrderID] ORDER BY [o0].[OrderID]) AS [row] FROM [Orders] AS [o0] LEFT JOIN [Customers] AS [c] ON [o0].[CustomerID] = [c].[CustomerID] WHERE [o0].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1667,7 +1667,7 @@ public override async Task Include_collection_Join_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1676,20 +1676,20 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [o2].[OrderID] AS [OrderID0], [o2].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] INNER JOIN [Order Details] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] """, // """ -SELECT [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice], [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] +SELECT [o11].[OrderID], [o11].[ProductID], [o11].[Discount], [o11].[Quantity], [o11].[UnitPrice], [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1698,17 +1698,17 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] FROM ( - SELECT [o1].[OrderID], [o2].[OrderID] AS [OrderID0], [o2].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] - FROM [Orders] AS [o1] - INNER JOIN [Order Details] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] - WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -INNER JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] + SELECT [o9].[OrderID], [o10].[OrderID] AS [OrderID0], [o10].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o9].[OrderID] ORDER BY [o9].[OrderID]) AS [row] + FROM [Orders] AS [o9] + INNER JOIN [Order Details] AS [o10] ON [o9].[OrderID] = [o10].[OrderID] + WHERE [o9].[OrderID] = 10248 + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +INNER JOIN [Order Details] AS [o11] ON [t1].[OrderID] = [o11].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] """); } @@ -1718,7 +1718,7 @@ public override async Task Include_reference_Join_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1727,16 +1727,16 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] INNER JOIN [Order Details] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] LEFT JOIN [Customers] AS [c] ON [o1].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1746,7 +1746,7 @@ public override async Task Join_Include_collection_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1755,20 +1755,20 @@ FROM [Order Details] AS [o] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [o1].[OrderID] AS [OrderID0], [o1].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] INNER JOIN [Orders] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID] """, // """ -SELECT [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID] +SELECT [o11].[OrderID], [o11].[ProductID], [o11].[Discount], [o11].[Quantity], [o11].[UnitPrice], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1777,17 +1777,17 @@ FROM [Order Details] AS [o] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] FROM ( - SELECT [o2].[OrderID], [o1].[OrderID] AS [OrderID0], [o1].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] - FROM [Order Details] AS [o1] - INNER JOIN [Orders] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] - WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -INNER JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID] + SELECT [o10].[OrderID], [o9].[OrderID] AS [OrderID0], [o9].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o10].[OrderID] ORDER BY [o10].[OrderID]) AS [row] + FROM [Order Details] AS [o9] + INNER JOIN [Orders] AS [o10] ON [o9].[OrderID] = [o10].[OrderID] + WHERE [o9].[OrderID] = 10248 + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +INNER JOIN [Order Details] AS [o11] ON [t1].[OrderID] = [o11].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID] """); } @@ -1797,7 +1797,7 @@ public override async Task Join_Include_reference_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1805,15 +1805,15 @@ FROM [Order Details] AS [o] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] INNER JOIN [Orders] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] LEFT JOIN [Customers] AS [c] ON [o2].[CustomerID] = [c].[CustomerID] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1823,7 +1823,7 @@ public override async Task Include_collection_SelectMany_GroupBy_Select(bool asy AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1832,20 +1832,20 @@ CROSS JOIN [Order Details] AS [o0] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [o2].[OrderID] AS [OrderID0], [o2].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] CROSS JOIN [Order Details] AS [o2] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] """, // """ -SELECT [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice], [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] +SELECT [o11].[OrderID], [o11].[ProductID], [o11].[Discount], [o11].[Quantity], [o11].[UnitPrice], [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1854,17 +1854,17 @@ CROSS JOIN [Order Details] AS [o0] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] FROM ( - SELECT [o1].[OrderID], [o2].[OrderID] AS [OrderID0], [o2].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] - FROM [Orders] AS [o1] - CROSS JOIN [Order Details] AS [o2] - WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -INNER JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] + SELECT [o9].[OrderID], [o10].[OrderID] AS [OrderID0], [o10].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o9].[OrderID] ORDER BY [o9].[OrderID]) AS [row] + FROM [Orders] AS [o9] + CROSS JOIN [Order Details] AS [o10] + WHERE [o9].[OrderID] = 10248 + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +INNER JOIN [Order Details] AS [o11] ON [t1].[OrderID] = [o11].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] """); } @@ -1874,7 +1874,7 @@ public override async Task Include_reference_SelectMany_GroupBy_Select(bool asyn AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1883,16 +1883,16 @@ CROSS JOIN [Order Details] AS [o0] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] CROSS JOIN [Order Details] AS [o2] LEFT JOIN [Customers] AS [c] ON [o1].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1902,7 +1902,7 @@ public override async Task SelectMany_Include_collection_GroupBy_Select(bool asy AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1911,20 +1911,20 @@ CROSS JOIN [Orders] AS [o0] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [o1].[OrderID] AS [OrderID0], [o1].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] CROSS JOIN [Orders] AS [o2] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID] """, // """ -SELECT [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID] +SELECT [o11].[OrderID], [o11].[ProductID], [o11].[Discount], [o11].[Quantity], [o11].[UnitPrice], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1933,17 +1933,17 @@ CROSS JOIN [Orders] AS [o0] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID] FROM ( - SELECT [o2].[OrderID], [o1].[OrderID] AS [OrderID0], [o1].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] - FROM [Order Details] AS [o1] - CROSS JOIN [Orders] AS [o2] - WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -INNER JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID] + SELECT [o10].[OrderID], [o9].[OrderID] AS [OrderID0], [o9].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o10].[OrderID] ORDER BY [o10].[OrderID]) AS [row] + FROM [Order Details] AS [o9] + CROSS JOIN [Orders] AS [o10] + WHERE [o9].[OrderID] = 10248 + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +INNER JOIN [Order Details] AS [o11] ON [t1].[OrderID] = [o11].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID] """); } @@ -1953,7 +1953,7 @@ public override async Task SelectMany_Include_reference_GroupBy_Select(bool asyn AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1962,16 +1962,16 @@ CROSS JOIN [Orders] AS [o0] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] CROSS JOIN [Orders] AS [o2] LEFT JOIN [Customers] AS [c] ON [o2].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -2278,7 +2278,7 @@ OFFSET @__p_0 ROWS FETCH NEXT 1 ROWS ONLY """ @__p_0='1' -SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], [t].[CustomerID] +SELECT [o3].[OrderID], [o3].[CustomerID], [o3].[EmployeeID], [o3].[OrderDate], [t].[CustomerID] FROM ( SELECT [c].[CustomerID] FROM [Customers] AS [c] @@ -2286,14 +2286,14 @@ WHERE [c].[CustomerID] LIKE N'A%' ORDER BY [c].[CustomerID] OFFSET @__p_0 ROWS FETCH NEXT 1 ROWS ONLY ) AS [t] -INNER JOIN [Orders] AS [o] ON [t].[CustomerID] = [o].[CustomerID] -ORDER BY [t].[CustomerID], [o].[OrderID] +INNER JOIN [Orders] AS [o3] ON [t].[CustomerID] = [o3].[CustomerID] +ORDER BY [t].[CustomerID], [o3].[OrderID] """, // """ @__p_0='1' -SELECT [o0].[OrderID], [o0].[ProductID], [o0].[Discount], [o0].[Quantity], [o0].[UnitPrice], [t].[CustomerID], [o].[OrderID] +SELECT [o4].[OrderID], [o4].[ProductID], [o4].[Discount], [o4].[Quantity], [o4].[UnitPrice], [t].[CustomerID], [o3].[OrderID] FROM ( SELECT [c].[CustomerID] FROM [Customers] AS [c] @@ -2301,9 +2301,9 @@ WHERE [c].[CustomerID] LIKE N'A%' ORDER BY [c].[CustomerID] OFFSET @__p_0 ROWS FETCH NEXT 1 ROWS ONLY ) AS [t] -INNER JOIN [Orders] AS [o] ON [t].[CustomerID] = [o].[CustomerID] -INNER JOIN [Order Details] AS [o0] ON [o].[OrderID] = [o0].[OrderID] -ORDER BY [t].[CustomerID], [o].[OrderID] +INNER JOIN [Orders] AS [o3] ON [t].[CustomerID] = [o3].[CustomerID] +INNER JOIN [Order Details] AS [o4] ON [o3].[OrderID] = [o4].[OrderID] +ORDER BY [t].[CustomerID], [o3].[OrderID] """); } @@ -2328,7 +2328,7 @@ ORDER BY [t].[CustomerID] """ @__p_0='1' -SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], [t0].[CustomerID] +SELECT [o3].[OrderID], [o3].[CustomerID], [o3].[EmployeeID], [o3].[OrderDate], [t0].[CustomerID] FROM ( SELECT TOP(1) [t].[CustomerID] FROM ( @@ -2339,14 +2339,14 @@ ORDER BY [c].[CustomerID] ) AS [t] ORDER BY [t].[CustomerID] ) AS [t0] -INNER JOIN [Orders] AS [o] ON [t0].[CustomerID] = [o].[CustomerID] -ORDER BY [t0].[CustomerID], [o].[OrderID] +INNER JOIN [Orders] AS [o3] ON [t0].[CustomerID] = [o3].[CustomerID] +ORDER BY [t0].[CustomerID], [o3].[OrderID] """, // """ @__p_0='1' -SELECT [o0].[OrderID], [o0].[ProductID], [o0].[Discount], [o0].[Quantity], [o0].[UnitPrice], [t0].[CustomerID], [o].[OrderID] +SELECT [o4].[OrderID], [o4].[ProductID], [o4].[Discount], [o4].[Quantity], [o4].[UnitPrice], [t0].[CustomerID], [o3].[OrderID] FROM ( SELECT TOP(1) [t].[CustomerID] FROM ( @@ -2357,9 +2357,9 @@ ORDER BY [c].[CustomerID] ) AS [t] ORDER BY [t].[CustomerID] ) AS [t0] -INNER JOIN [Orders] AS [o] ON [t0].[CustomerID] = [o].[CustomerID] -INNER JOIN [Order Details] AS [o0] ON [o].[OrderID] = [o0].[OrderID] -ORDER BY [t0].[CustomerID], [o].[OrderID] +INNER JOIN [Orders] AS [o3] ON [t0].[CustomerID] = [o3].[CustomerID] +INNER JOIN [Order Details] AS [o4] ON [o3].[OrderID] = [o4].[OrderID] +ORDER BY [t0].[CustomerID], [o3].[OrderID] """); } @@ -2385,7 +2385,7 @@ ORDER BY [t].[CustomerID] """ @__p_0='1' -SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate], [t0].[CustomerID] +SELECT [o3].[OrderID], [o3].[CustomerID], [o3].[EmployeeID], [o3].[OrderDate], [t0].[CustomerID] FROM ( SELECT TOP(1) [t].[CustomerID] FROM ( @@ -2397,14 +2397,14 @@ OFFSET @__p_0 ROWS FETCH NEXT @__p_0 ROWS ONLY ) AS [t] ORDER BY [t].[CustomerID] ) AS [t0] -INNER JOIN [Orders] AS [o] ON [t0].[CustomerID] = [o].[CustomerID] -ORDER BY [t0].[CustomerID], [o].[OrderID] +INNER JOIN [Orders] AS [o3] ON [t0].[CustomerID] = [o3].[CustomerID] +ORDER BY [t0].[CustomerID], [o3].[OrderID] """, // """ @__p_0='1' -SELECT [o0].[OrderID], [o0].[ProductID], [o0].[Discount], [o0].[Quantity], [o0].[UnitPrice], [t0].[CustomerID], [o].[OrderID] +SELECT [o4].[OrderID], [o4].[ProductID], [o4].[Discount], [o4].[Quantity], [o4].[UnitPrice], [t0].[CustomerID], [o3].[OrderID] FROM ( SELECT TOP(1) [t].[CustomerID] FROM ( @@ -2416,9 +2416,9 @@ OFFSET @__p_0 ROWS FETCH NEXT @__p_0 ROWS ONLY ) AS [t] ORDER BY [t].[CustomerID] ) AS [t0] -INNER JOIN [Orders] AS [o] ON [t0].[CustomerID] = [o].[CustomerID] -INNER JOIN [Order Details] AS [o0] ON [o].[OrderID] = [o0].[OrderID] -ORDER BY [t0].[CustomerID], [o].[OrderID] +INNER JOIN [Orders] AS [o3] ON [t0].[CustomerID] = [o3].[CustomerID] +INNER JOIN [Order Details] AS [o4] ON [o3].[OrderID] = [o4].[OrderID] +ORDER BY [t0].[CustomerID], [o3].[OrderID] """); } @@ -2493,17 +2493,17 @@ WHERE [c].[CustomerID] LIKE N'F%' """, // """ -SELECT [o0].[OrderID], [o0].[ProductID], [o0].[Discount], [o0].[Quantity], [o0].[UnitPrice], [c].[CustomerID], [t0].[OrderID] +SELECT [o4].[OrderID], [o4].[ProductID], [o4].[Discount], [o4].[Quantity], [o4].[UnitPrice], [c].[CustomerID], [t0].[OrderID] FROM [Customers] AS [c] LEFT JOIN ( SELECT [t].[OrderID], [t].[CustomerID] FROM ( - SELECT [o].[OrderID], [o].[CustomerID], ROW_NUMBER() OVER(PARTITION BY [o].[CustomerID] ORDER BY [o].[OrderDate]) AS [row] - FROM [Orders] AS [o] + SELECT [o3].[OrderID], [o3].[CustomerID], ROW_NUMBER() OVER(PARTITION BY [o3].[CustomerID] ORDER BY [o3].[OrderDate]) AS [row] + FROM [Orders] AS [o3] ) AS [t] WHERE [t].[row] <= 1 ) AS [t0] ON [c].[CustomerID] = [t0].[CustomerID] -INNER JOIN [Order Details] AS [o0] ON [t0].[OrderID] = [o0].[OrderID] +INNER JOIN [Order Details] AS [o4] ON [t0].[OrderID] = [o4].[OrderID] WHERE [c].[CustomerID] LIKE N'F%' ORDER BY [c].[CustomerID], [t0].[OrderID] """); diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindStringIncludeQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindStringIncludeQuerySqlServerTest.cs index 7b9d53602d4..f94edb46408 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindStringIncludeQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindStringIncludeQuerySqlServerTest.cs @@ -186,7 +186,7 @@ public override async Task Join_Include_reference_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -194,15 +194,15 @@ FROM [Order Details] AS [o] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] INNER JOIN [Orders] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] LEFT JOIN [Customers] AS [c] ON [o2].[CustomerID] = [c].[CustomerID] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -559,7 +559,7 @@ public override async Task Include_reference_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -567,15 +567,15 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o0].[OrderID] ORDER BY [o0].[OrderID]) AS [row] FROM [Orders] AS [o0] LEFT JOIN [Customers] AS [c] ON [o0].[CustomerID] = [c].[CustomerID] WHERE [o0].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1203,7 +1203,7 @@ public override async Task Include_reference_Join_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1212,16 +1212,16 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] INNER JOIN [Order Details] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] LEFT JOIN [Customers] AS [c] ON [o1].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1242,7 +1242,7 @@ public override async Task Include_reference_SelectMany_GroupBy_Select(bool asyn AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1251,16 +1251,16 @@ CROSS JOIN [Order Details] AS [o0] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] CROSS JOIN [Order Details] AS [o2] LEFT JOIN [Customers] AS [c] ON [o1].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1302,7 +1302,7 @@ public override async Task SelectMany_Include_reference_GroupBy_Select(bool asyn AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1311,16 +1311,16 @@ CROSS JOIN [Orders] AS [o0] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[CustomerID0], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[CustomerID0], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [c].[CustomerID] AS [CustomerID0], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] CROSS JOIN [Orders] AS [o2] LEFT JOIN [Customers] AS [c] ON [o2].[CustomerID] = [c].[CustomerID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] """); } @@ -1330,7 +1330,7 @@ public override async Task Include_collection_SelectMany_GroupBy_Select(bool asy AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1339,17 +1339,17 @@ CROSS JOIN [Order Details] AS [o0] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [o2].[OrderID] AS [OrderID0], [o2].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] CROSS JOIN [Order Details] AS [o2] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o3] ON [t1].[OrderID] = [o3].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID] """); } @@ -1588,7 +1588,7 @@ public override async Task Include_collection_Join_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1597,17 +1597,17 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate], [o2].[OrderID] AS [OrderID0], [o2].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o1].[OrderID] ORDER BY [o1].[OrderID]) AS [row] FROM [Orders] AS [o1] INNER JOIN [Order Details] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o3] ON [t1].[OrderID] = [o3].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID] """); } @@ -1617,7 +1617,7 @@ public override async Task Include_collection_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [o1].[OrderID], [o1].[ProductID], [o1].[Discount], [o1].[Quantity], [o1].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [o1].[OrderID], [o1].[ProductID], [o1].[Discount], [o1].[Quantity], [o1].[UnitPrice] FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -1625,16 +1625,16 @@ FROM [Orders] AS [o] GROUP BY [o].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate] FROM ( SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], ROW_NUMBER() OVER(PARTITION BY [o0].[OrderID] ORDER BY [o0].[OrderID]) AS [row] FROM [Orders] AS [o0] WHERE [o0].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o1] ON [t0].[OrderID] = [o1].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID], [o1].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o1] ON [t1].[OrderID] = [o1].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID], [o1].[OrderID] """); } @@ -1663,7 +1663,7 @@ public override async Task Join_Include_collection_GroupBy_Select(bool async) AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1672,17 +1672,17 @@ FROM [Order Details] AS [o] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [o1].[OrderID] AS [OrderID0], [o1].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] INNER JOIN [Orders] AS [o2] ON [o1].[OrderID] = [o2].[OrderID] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID], [o3].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o3] ON [t1].[OrderID] = [o3].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID], [o3].[OrderID] """); } @@ -1792,7 +1792,7 @@ public override async Task SelectMany_Include_collection_GroupBy_Select(bool asy AssertSql( """ -SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] +SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [o3].[OrderID], [o3].[ProductID], [o3].[Discount], [o3].[Quantity], [o3].[UnitPrice] FROM ( SELECT [o0].[OrderID] FROM [Order Details] AS [o] @@ -1801,17 +1801,17 @@ CROSS JOIN [Orders] AS [o0] GROUP BY [o0].[OrderID] ) AS [t] LEFT JOIN ( - SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[OrderID0], [t1].[ProductID] + SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[OrderID0], [t0].[ProductID] FROM ( SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate], [o1].[OrderID] AS [OrderID0], [o1].[ProductID], ROW_NUMBER() OVER(PARTITION BY [o2].[OrderID] ORDER BY [o2].[OrderID]) AS [row] FROM [Order Details] AS [o1] CROSS JOIN [Orders] AS [o2] WHERE [o1].[OrderID] = 10248 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[OrderID] = [t0].[OrderID] -LEFT JOIN [Order Details] AS [o3] ON [t0].[OrderID] = [o3].[OrderID] -ORDER BY [t].[OrderID], [t0].[OrderID0], [t0].[ProductID], [t0].[OrderID], [o3].[OrderID] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[OrderID] = [t1].[OrderID] +LEFT JOIN [Order Details] AS [o3] ON [t1].[OrderID] = [o3].[OrderID] +ORDER BY [t].[OrderID], [t1].[OrderID0], [t1].[ProductID], [t1].[OrderID], [o3].[OrderID] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/OwnedEntityQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/OwnedEntityQuerySqlServerTest.cs index 9a8b9e3b375..5af3affe380 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/OwnedEntityQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/OwnedEntityQuerySqlServerTest.cs @@ -249,15 +249,15 @@ public virtual async Task Collection_include_on_owner_with_owned_type_mapped_to_ Assert.Equal("B", owner.Owned2.Value); AssertSql( -""" + """ SELECT TOP(2) [o].[Id], [o0].[Owner23211Id], [o0].[Value], [o1].[Owner23211Id], [o1].[Value] FROM [Owner23211] AS [o] LEFT JOIN [Owned1_23211] AS [o0] ON [o].[Id] = [o0].[Owner23211Id] LEFT JOIN [Owned2_23211] AS [o1] ON [o].[Id] = [o1].[Owner23211Id] ORDER BY [o].[Id], [o0].[Owner23211Id], [o1].[Owner23211Id] """, - // - """ + // + """ SELECT [d].[Id], [d].[Owner23211Id], [t].[Id], [t].[Owner23211Id], [t].[Owner23211Id0] FROM ( SELECT TOP(1) [o].[Id], [o0].[Owner23211Id], [o1].[Owner23211Id] AS [Owner23211Id0] @@ -423,30 +423,30 @@ public override async Task Owned_entity_multiple_level_in_aggregate() await base.Owned_entity_multiple_level_in_aggregate(); AssertSql( -""" -SELECT [t].[Id], [t].[FirstValueObject_Value], [t2].[Id], [t2].[AggregateId], [t2].[FourthValueObject_Value], [t2].[Id0], [t2].[AnyValue], [t2].[SecondValueObjectId], [t2].[Id1], [t2].[SecondValueObjectId0], [t2].[FourthValueObject_Value0], [t2].[Id00], [t2].[AnyValue0], [t2].[ThirdValueObjectId] + """ +SELECT [t1].[Id], [t1].[FirstValueObject_Value], [t3].[Id], [t3].[AggregateId], [t3].[FourthValueObject_Value], [t3].[Id0], [t3].[AnyValue], [t3].[SecondValueObjectId], [t3].[Id1], [t3].[SecondValueObjectId0], [t3].[FourthValueObject_Value0], [t3].[Id00], [t3].[AnyValue0], [t3].[ThirdValueObjectId] FROM ( SELECT TOP(1) [a].[Id], [a].[FirstValueObject_Value] FROM [Aggregate] AS [a] ORDER BY [a].[Id] DESC -) AS [t] +) AS [t1] LEFT JOIN ( - SELECT [s].[Id], [s].[AggregateId], [s].[FourthValueObject_Value], [s0].[Id] AS [Id0], [s0].[AnyValue], [s0].[SecondValueObjectId], [t1].[Id] AS [Id1], [t1].[SecondValueObjectId] AS [SecondValueObjectId0], [t1].[FourthValueObject_Value] AS [FourthValueObject_Value0], [t1].[Id0] AS [Id00], [t1].[AnyValue] AS [AnyValue0], [t1].[ThirdValueObjectId] + SELECT [s].[Id], [s].[AggregateId], [s].[FourthValueObject_Value], [s0].[Id] AS [Id0], [s0].[AnyValue], [s0].[SecondValueObjectId], [t2].[Id] AS [Id1], [t2].[SecondValueObjectId] AS [SecondValueObjectId0], [t2].[FourthValueObject_Value] AS [FourthValueObject_Value0], [t2].[Id0] AS [Id00], [t2].[AnyValue] AS [AnyValue0], [t2].[ThirdValueObjectId] FROM [SecondValueObject] AS [s] LEFT JOIN [SecondValueObject_FifthValueObjects] AS [s0] ON CASE WHEN [s].[FourthValueObject_Value] IS NOT NULL THEN [s].[Id] END = [s0].[SecondValueObjectId] LEFT JOIN ( - SELECT [t0].[Id], [t0].[SecondValueObjectId], [t0].[FourthValueObject_Value], [t3].[Id] AS [Id0], [t3].[AnyValue], [t3].[ThirdValueObjectId] - FROM [ThirdValueObject] AS [t0] - LEFT JOIN [ThirdValueObject_FifthValueObjects] AS [t3] ON CASE - WHEN [t0].[FourthValueObject_Value] IS NOT NULL THEN [t0].[Id] - END = [t3].[ThirdValueObjectId] - ) AS [t1] ON [s].[Id] = [t1].[SecondValueObjectId] -) AS [t2] ON CASE - WHEN [t].[FirstValueObject_Value] IS NOT NULL THEN [t].[Id] -END = [t2].[AggregateId] -ORDER BY [t].[Id] DESC, [t2].[Id], [t2].[Id0], [t2].[Id1] + SELECT [t].[Id], [t].[SecondValueObjectId], [t].[FourthValueObject_Value], [t0].[Id] AS [Id0], [t0].[AnyValue], [t0].[ThirdValueObjectId] + FROM [ThirdValueObject] AS [t] + LEFT JOIN [ThirdValueObject_FifthValueObjects] AS [t0] ON CASE + WHEN [t].[FourthValueObject_Value] IS NOT NULL THEN [t].[Id] + END = [t0].[ThirdValueObjectId] + ) AS [t2] ON [s].[Id] = [t2].[SecondValueObjectId] +) AS [t3] ON CASE + WHEN [t1].[FirstValueObject_Value] IS NOT NULL THEN [t1].[Id] +END = [t3].[AggregateId] +ORDER BY [t1].[Id] DESC, [t3].[Id], [t3].[Id0], [t3].[Id1] """); } @@ -455,8 +455,8 @@ public override async Task Multiple_single_result_in_projection_containing_owned await base.Multiple_single_result_in_projection_containing_owned_types(async); AssertSql( -""" -SELECT [e].[Id], [t0].[Id], [t0].[EntityId], [t0].[Owned_IsDeleted], [t0].[Owned_Value], [t0].[Type], [t0].[c], [t1].[Id], [t1].[EntityId], [t1].[Owned_IsDeleted], [t1].[Owned_Value], [t1].[Type], [t1].[c] + """ +SELECT [e].[Id], [t0].[Id], [t0].[EntityId], [t0].[Owned_IsDeleted], [t0].[Owned_Value], [t0].[Type], [t0].[c], [t2].[Id], [t2].[EntityId], [t2].[Owned_IsDeleted], [t2].[Owned_Value], [t2].[Type], [t2].[c] FROM [Entities] AS [e] LEFT JOIN ( SELECT [t].[Id], [t].[EntityId], [t].[Owned_IsDeleted], [t].[Owned_Value], [t].[Type], [t].[c] @@ -468,14 +468,14 @@ FROM [Child] AS [c] WHERE [t].[row] <= 1 ) AS [t0] ON [e].[Id] = [t0].[EntityId] LEFT JOIN ( - SELECT [t2].[Id], [t2].[EntityId], [t2].[Owned_IsDeleted], [t2].[Owned_Value], [t2].[Type], [t2].[c] + SELECT [t1].[Id], [t1].[EntityId], [t1].[Owned_IsDeleted], [t1].[Owned_Value], [t1].[Type], [t1].[c] FROM ( SELECT [c0].[Id], [c0].[EntityId], [c0].[Owned_IsDeleted], [c0].[Owned_Value], [c0].[Type], 1 AS [c], ROW_NUMBER() OVER(PARTITION BY [c0].[EntityId] ORDER BY [c0].[EntityId], [c0].[Id]) AS [row] FROM [Child] AS [c0] WHERE [c0].[Type] = 2 - ) AS [t2] - WHERE [t2].[row] <= 1 -) AS [t1] ON [e].[Id] = [t1].[EntityId] + ) AS [t1] + WHERE [t1].[row] <= 1 +) AS [t2] ON [e].[Id] = [t2].[EntityId] """); } @@ -519,7 +519,7 @@ public override async Task Multiple_owned_reference_mapped_to_own_table_containi await base.Multiple_owned_reference_mapped_to_own_table_containing_owned_collection_in_split_query(async); AssertSql( -""" + """ SELECT TOP(2) [r].[Id], [m].[Id], [m].[Enabled], [m].[RootId], [m0].[Id], [m0].[RootId] FROM [Root] AS [r] LEFT JOIN [MiddleB] AS [m] ON [r].[Id] = [m].[RootId] @@ -527,9 +527,9 @@ FROM [Root] AS [r] WHERE [r].[Id] = 3 ORDER BY [r].[Id], [m].[Id], [m0].[Id] """, - // - """ -SELECT [l].[ModdleAId], [l].[UnitThreshold], [t].[Id], [t].[Id0], [t].[Id1] + // + """ +SELECT [l0].[ModdleAId], [l0].[UnitThreshold], [t].[Id], [t].[Id0], [t].[Id1] FROM ( SELECT TOP(1) [r].[Id], [m].[Id] AS [Id0], [m0].[Id] AS [Id1] FROM [Root] AS [r] @@ -537,7 +537,7 @@ FROM [Root] AS [r] LEFT JOIN [ModdleA] AS [m0] ON [r].[Id] = [m0].[RootId] WHERE [r].[Id] = 3 ) AS [t] -INNER JOIN [Leaf] AS [l] ON [t].[Id1] = [l].[ModdleAId] +INNER JOIN [Leaf] AS [l0] ON [t].[Id1] = [l0].[ModdleAId] ORDER BY [t].[Id], [t].[Id0], [t].[Id1] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/OwnedQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/OwnedQuerySqlServerTest.cs index 5c87cdf29d5..3cb4eaad7b0 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/OwnedQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/OwnedQuerySqlServerTest.cs @@ -1042,18 +1042,18 @@ ORDER BY [o].[Id] """, // """ -SELECT [o0].[ClientId], [o0].[Id], [o0].[OrderDate], [o].[Id] +SELECT [o1].[ClientId], [o1].[Id], [o1].[OrderDate], [o].[Id] FROM [OwnedPerson] AS [o] -INNER JOIN [Order] AS [o0] ON [o].[Id] = [o0].[ClientId] -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +INNER JOIN [Order] AS [o1] ON [o].[Id] = [o1].[ClientId] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """, // """ -SELECT [o1].[OrderClientId], [o1].[OrderId], [o1].[Id], [o1].[Detail], [o].[Id], [o0].[ClientId], [o0].[Id] +SELECT [o3].[OrderClientId], [o3].[OrderId], [o3].[Id], [o3].[Detail], [o].[Id], [o1].[ClientId], [o1].[Id] FROM [OwnedPerson] AS [o] -INNER JOIN [Order] AS [o0] ON [o].[Id] = [o0].[ClientId] -INNER JOIN [OrderDetail] AS [o1] ON [o0].[ClientId] = [o1].[OrderClientId] AND [o0].[Id] = [o1].[OrderId] -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +INNER JOIN [Order] AS [o1] ON [o].[Id] = [o1].[ClientId] +INNER JOIN [OrderDetail] AS [o3] ON [o1].[ClientId] = [o3].[OrderClientId] AND [o1].[Id] = [o3].[OrderId] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """); } @@ -1070,20 +1070,20 @@ ORDER BY [o].[Id] """, // """ -SELECT [o0].[ClientId], [o0].[Id], [o0].[OrderDate], [o].[Id] +SELECT [o1].[ClientId], [o1].[Id], [o1].[OrderDate], [o].[Id] FROM [OwnedPerson] AS [o] -INNER JOIN [Order] AS [o0] ON [o].[Id] = [o0].[ClientId] +INNER JOIN [Order] AS [o1] ON [o].[Id] = [o1].[ClientId] WHERE [o].[Discriminator] IN (N'Branch', N'LeafA') -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """, // """ -SELECT [o1].[OrderClientId], [o1].[OrderId], [o1].[Id], [o1].[Detail], [o].[Id], [o0].[ClientId], [o0].[Id] +SELECT [o3].[OrderClientId], [o3].[OrderId], [o3].[Id], [o3].[Detail], [o].[Id], [o1].[ClientId], [o1].[Id] FROM [OwnedPerson] AS [o] -INNER JOIN [Order] AS [o0] ON [o].[Id] = [o0].[ClientId] -INNER JOIN [OrderDetail] AS [o1] ON [o0].[ClientId] = [o1].[OrderClientId] AND [o0].[Id] = [o1].[OrderId] +INNER JOIN [Order] AS [o1] ON [o].[Id] = [o1].[ClientId] +INNER JOIN [OrderDetail] AS [o3] ON [o1].[ClientId] = [o3].[OrderClientId] AND [o1].[Id] = [o3].[OrderId] WHERE [o].[Discriminator] IN (N'Branch', N'LeafA') -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """); } @@ -1106,7 +1106,7 @@ ORDER BY [t].[Id] """ @__p_0='5' -SELECT [o0].[ClientId], [o0].[Id], [o0].[OrderDate], [t0].[Id] +SELECT [o1].[ClientId], [o1].[Id], [o1].[OrderDate], [t0].[Id] FROM ( SELECT TOP(@__p_0) [t].[Id] FROM ( @@ -1115,14 +1115,14 @@ FROM [OwnedPerson] AS [o] ) AS [t] ORDER BY [t].[Id] ) AS [t0] -INNER JOIN [Order] AS [o0] ON [t0].[Id] = [o0].[ClientId] -ORDER BY [t0].[Id], [o0].[ClientId], [o0].[Id] +INNER JOIN [Order] AS [o1] ON [t0].[Id] = [o1].[ClientId] +ORDER BY [t0].[Id], [o1].[ClientId], [o1].[Id] """, // """ @__p_0='5' -SELECT [o1].[OrderClientId], [o1].[OrderId], [o1].[Id], [o1].[Detail], [t0].[Id], [o0].[ClientId], [o0].[Id] +SELECT [o3].[OrderClientId], [o3].[OrderId], [o3].[Id], [o3].[Detail], [t0].[Id], [o1].[ClientId], [o1].[Id] FROM ( SELECT TOP(@__p_0) [t].[Id] FROM ( @@ -1131,9 +1131,9 @@ FROM [OwnedPerson] AS [o] ) AS [t] ORDER BY [t].[Id] ) AS [t0] -INNER JOIN [Order] AS [o0] ON [t0].[Id] = [o0].[ClientId] -INNER JOIN [OrderDetail] AS [o1] ON [o0].[ClientId] = [o1].[OrderClientId] AND [o0].[Id] = [o1].[OrderId] -ORDER BY [t0].[Id], [o0].[ClientId], [o0].[Id] +INNER JOIN [Order] AS [o1] ON [t0].[Id] = [o1].[ClientId] +INNER JOIN [OrderDetail] AS [o3] ON [o1].[ClientId] = [o3].[OrderClientId] AND [o1].[Id] = [o3].[OrderId] +ORDER BY [t0].[Id], [o1].[ClientId], [o1].[Id] """); } @@ -1150,20 +1150,20 @@ FROM [OwnedPerson] AS [o] """, // """ -SELECT [o0].[ClientId], [o0].[Id], [o0].[OrderDate], [o].[Id], [p].[Id] +SELECT [o1].[ClientId], [o1].[Id], [o1].[OrderDate], [o].[Id], [p].[Id] FROM [OwnedPerson] AS [o] LEFT JOIN [Planet] AS [p] ON [o].[PersonAddress_Country_PlanetId] = [p].[Id] -INNER JOIN [Order] AS [o0] ON [o].[Id] = [o0].[ClientId] -ORDER BY [o].[Id], [p].[Id], [o0].[ClientId], [o0].[Id] +INNER JOIN [Order] AS [o1] ON [o].[Id] = [o1].[ClientId] +ORDER BY [o].[Id], [p].[Id], [o1].[ClientId], [o1].[Id] """, // """ -SELECT [o1].[OrderClientId], [o1].[OrderId], [o1].[Id], [o1].[Detail], [o].[Id], [p].[Id], [o0].[ClientId], [o0].[Id] +SELECT [o3].[OrderClientId], [o3].[OrderId], [o3].[Id], [o3].[Detail], [o].[Id], [p].[Id], [o1].[ClientId], [o1].[Id] FROM [OwnedPerson] AS [o] LEFT JOIN [Planet] AS [p] ON [o].[PersonAddress_Country_PlanetId] = [p].[Id] -INNER JOIN [Order] AS [o0] ON [o].[Id] = [o0].[ClientId] -INNER JOIN [OrderDetail] AS [o1] ON [o0].[ClientId] = [o1].[OrderClientId] AND [o0].[Id] = [o1].[OrderId] -ORDER BY [o].[Id], [p].[Id], [o0].[ClientId], [o0].[Id] +INNER JOIN [Order] AS [o1] ON [o].[Id] = [o1].[ClientId] +INNER JOIN [OrderDetail] AS [o3] ON [o1].[ClientId] = [o3].[OrderClientId] AND [o1].[Id] = [o3].[OrderId] +ORDER BY [o].[Id], [p].[Id], [o1].[ClientId], [o1].[Id] """); } @@ -1201,20 +1201,20 @@ ORDER BY [o].[Id] """, // """ -SELECT [o0].[ClientId], [o0].[Id], [o0].[OrderDate], [o].[Id] +SELECT [o1].[ClientId], [o1].[Id], [o1].[OrderDate], [o].[Id] FROM [OwnedPerson] AS [o] -INNER JOIN [Order] AS [o0] ON [o].[Id] = [o0].[ClientId] +INNER JOIN [Order] AS [o1] ON [o].[Id] = [o1].[ClientId] WHERE [o].[Discriminator] = N'LeafA' -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """, // """ -SELECT [o1].[OrderClientId], [o1].[OrderId], [o1].[Id], [o1].[Detail], [o].[Id], [o0].[ClientId], [o0].[Id] +SELECT [o3].[OrderClientId], [o3].[OrderId], [o3].[Id], [o3].[Detail], [o].[Id], [o1].[ClientId], [o1].[Id] FROM [OwnedPerson] AS [o] -INNER JOIN [Order] AS [o0] ON [o].[Id] = [o0].[ClientId] -INNER JOIN [OrderDetail] AS [o1] ON [o0].[ClientId] = [o1].[OrderClientId] AND [o0].[Id] = [o1].[OrderId] +INNER JOIN [Order] AS [o1] ON [o].[Id] = [o1].[ClientId] +INNER JOIN [OrderDetail] AS [o3] ON [o1].[ClientId] = [o3].[OrderClientId] AND [o1].[Id] = [o3].[OrderId] WHERE [o].[Discriminator] = N'LeafA' -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """); } @@ -1231,20 +1231,20 @@ ORDER BY [o].[Id] """, // """ -SELECT [o0].[ClientId], [o0].[Id], [o0].[OrderDate], [o].[Id] +SELECT [o1].[ClientId], [o1].[Id], [o1].[OrderDate], [o].[Id] FROM [OwnedPerson] AS [o] -INNER JOIN [Order] AS [o0] ON [o].[Id] = [o0].[ClientId] +INNER JOIN [Order] AS [o1] ON [o].[Id] = [o1].[ClientId] WHERE [o].[Id] = 1 -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """, // """ -SELECT [o1].[OrderClientId], [o1].[OrderId], [o1].[Id], [o1].[Detail], [o].[Id], [o0].[ClientId], [o0].[Id] +SELECT [o3].[OrderClientId], [o3].[OrderId], [o3].[Id], [o3].[Detail], [o].[Id], [o1].[ClientId], [o1].[Id] FROM [OwnedPerson] AS [o] -INNER JOIN [Order] AS [o0] ON [o].[Id] = [o0].[ClientId] -INNER JOIN [OrderDetail] AS [o1] ON [o0].[ClientId] = [o1].[OrderClientId] AND [o0].[Id] = [o1].[OrderId] +INNER JOIN [Order] AS [o1] ON [o].[Id] = [o1].[ClientId] +INNER JOIN [OrderDetail] AS [o3] ON [o1].[ClientId] = [o3].[OrderClientId] AND [o1].[Id] = [o3].[OrderId] WHERE [o].[Id] = 1 -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """); } @@ -1261,20 +1261,20 @@ ORDER BY [o].[Id] """, // """ -SELECT [o0].[ClientId], [o0].[Id], [o0].[OrderDate], [o].[Id] +SELECT [o1].[ClientId], [o1].[Id], [o1].[OrderDate], [o].[Id] FROM [OwnedPerson] AS [o] -INNER JOIN [Order] AS [o0] ON [o].[Id] = [o0].[ClientId] +INNER JOIN [Order] AS [o1] ON [o].[Id] = [o1].[ClientId] WHERE [o].[Name] = N'Mona Cy' -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """, // """ -SELECT [o1].[OrderClientId], [o1].[OrderId], [o1].[Id], [o1].[Detail], [o].[Id], [o0].[ClientId], [o0].[Id] +SELECT [o3].[OrderClientId], [o3].[OrderId], [o3].[Id], [o3].[Detail], [o].[Id], [o1].[ClientId], [o1].[Id] FROM [OwnedPerson] AS [o] -INNER JOIN [Order] AS [o0] ON [o].[Id] = [o0].[ClientId] -INNER JOIN [OrderDetail] AS [o1] ON [o0].[ClientId] = [o1].[OrderClientId] AND [o0].[Id] = [o1].[OrderId] +INNER JOIN [Order] AS [o1] ON [o].[Id] = [o1].[ClientId] +INNER JOIN [OrderDetail] AS [o3] ON [o1].[ClientId] = [o3].[OrderClientId] AND [o1].[Id] = [o3].[OrderId] WHERE [o].[Name] = N'Mona Cy' -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/PrimitiveCollectionsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/PrimitiveCollectionsQuerySqlServerTest.cs index 6501e17b113..b563d63a9de 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/PrimitiveCollectionsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/PrimitiveCollectionsQuerySqlServerTest.cs @@ -1200,17 +1200,17 @@ SELECT [t1].[value] FROM ( SELECT TOP(20) [t0].[value] FROM ( - SELECT DISTINCT [t2].[value] + SELECT DISTINCT [t].[value] FROM ( SELECT [i].[value] FROM OPENJSON([p].[Ints]) WITH ([value] int '$') AS [i] ORDER BY [i].[value] OFFSET 1 ROWS - ) AS [t2] + ) AS [t] ) AS [t0] ORDER BY [t0].[value] DESC ) AS [t1] - ) AS [t]) = 3 + ) AS [t2]) = 3 """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs index ea469ea8d6a..61eeb46391e 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs @@ -2521,7 +2521,7 @@ FROM [Gears] AS [g0] UNION ALL SELECT 1 AS empty FROM [Officers] AS [o0] -) AS [t0] +) AS [t] """); } @@ -2544,7 +2544,7 @@ FROM [Gears] AS [g0] UNION ALL SELECT 1 AS empty FROM [Officers] AS [o0] -) AS [t0] +) AS [t] """); } @@ -2572,8 +2572,8 @@ FROM [Gears] AS [g0] UNION ALL SELECT 1 AS empty FROM [Officers] AS [o0] - ) AS [t1] -) AS [t0] + ) AS [t0] +) AS [t1] """); } @@ -2662,26 +2662,26 @@ public override async Task Union_with_collection_navigations(bool async) SELECT ( SELECT COUNT(*) FROM ( - SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[AssignedCityName], [o0].[CityOfBirthName], [o0].[FullName], [o0].[HasSoulPatch], [o0].[LeaderNickname], [o0].[LeaderSquadId], [o0].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o0] - ) AS [t1] - WHERE [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId] + ) AS [t0] + WHERE [t].[Nickname] = [t0].[LeaderNickname] AND [t].[SquadId] = [t0].[LeaderSquadId] UNION - SELECT [t2].[Nickname], [t2].[SquadId], [t2].[AssignedCityName], [t2].[CityOfBirthName], [t2].[FullName], [t2].[HasSoulPatch], [t2].[LeaderNickname], [t2].[LeaderSquadId], [t2].[Rank], [t2].[Discriminator] + SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g0] UNION ALL SELECT [o1].[Nickname], [o1].[SquadId], [o1].[AssignedCityName], [o1].[CityOfBirthName], [o1].[FullName], [o1].[HasSoulPatch], [o1].[LeaderNickname], [o1].[LeaderSquadId], [o1].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o1] - ) AS [t2] - WHERE [t].[Nickname] = [t2].[LeaderNickname] AND [t].[SquadId] = [t2].[LeaderSquadId] - ) AS [t0]) + ) AS [t1] + WHERE [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId] + ) AS [t2]) FROM ( SELECT [o].[Nickname], [o].[SquadId] FROM [Officers] AS [o] @@ -2757,7 +2757,7 @@ public override async Task Join_navigation_translated_to_subquery_composite_key( AssertSql( """ -SELECT [t].[FullName], [t1].[Note] +SELECT [t].[FullName], [t2].[Note] FROM ( SELECT [g].[FullName] FROM [Gears] AS [g] @@ -2766,7 +2766,7 @@ SELECT [o].[FullName] FROM [Officers] AS [o] ) AS [t] INNER JOIN ( - SELECT [t0].[Note], [t2].[FullName] + SELECT [t0].[Note], [t1].[FullName] FROM [Tags] AS [t0] LEFT JOIN ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[FullName] @@ -2774,8 +2774,8 @@ FROM [Gears] AS [g0] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[FullName] FROM [Officers] AS [o0] - ) AS [t2] ON [t0].[GearNickName] = [t2].[Nickname] AND [t0].[GearSquadId] = [t2].[SquadId] -) AS [t1] ON [t].[FullName] = [t1].[FullName] + ) AS [t1] ON [t0].[GearNickName] = [t1].[Nickname] AND [t0].[GearSquadId] = [t1].[SquadId] +) AS [t2] ON [t].[FullName] = [t2].[FullName] """); } @@ -2785,7 +2785,7 @@ public override async Task Join_with_order_by_on_inner_sequence_navigation_trans AssertSql( """ -SELECT [t].[FullName], [t1].[Note] +SELECT [t].[FullName], [t2].[Note] FROM ( SELECT [g].[FullName] FROM [Gears] AS [g] @@ -2794,7 +2794,7 @@ SELECT [o].[FullName] FROM [Officers] AS [o] ) AS [t] INNER JOIN ( - SELECT [t0].[Note], [t2].[FullName] + SELECT [t0].[Note], [t1].[FullName] FROM [Tags] AS [t0] LEFT JOIN ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[FullName] @@ -2802,8 +2802,8 @@ FROM [Gears] AS [g0] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[FullName] FROM [Officers] AS [o0] - ) AS [t2] ON [t0].[GearNickName] = [t2].[Nickname] AND [t0].[GearSquadId] = [t2].[SquadId] -) AS [t1] ON [t].[FullName] = [t1].[FullName] + ) AS [t1] ON [t0].[GearNickName] = [t1].[Nickname] AND [t0].[GearSquadId] = [t1].[SquadId] +) AS [t2] ON [t].[FullName] = [t2].[FullName] """); } @@ -3626,23 +3626,23 @@ public override async Task Select_correlated_filtered_collection_with_composite_ AssertSql( """ -SELECT [t].[Nickname], [t].[SquadId], [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator] +SELECT [t].[Nickname], [t].[SquadId], [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator] FROM ( SELECT [o].[Nickname], [o].[SquadId] FROM [Officers] AS [o] ) AS [t] LEFT JOIN ( - SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[AssignedCityName], [o0].[CityOfBirthName], [o0].[FullName], [o0].[HasSoulPatch], [o0].[LeaderNickname], [o0].[LeaderSquadId], [o0].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o0] - ) AS [t1] - WHERE [t1].[Nickname] <> N'Dom' -) AS [t0] ON [t].[Nickname] = [t0].[LeaderNickname] AND [t].[SquadId] = [t0].[LeaderSquadId] -ORDER BY [t].[Nickname], [t].[SquadId], [t0].[Nickname] + ) AS [t0] + WHERE [t0].[Nickname] <> N'Dom' +) AS [t1] ON [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId] +ORDER BY [t].[Nickname], [t].[SquadId], [t1].[Nickname] """); } @@ -4996,7 +4996,7 @@ public override async Task Include_reference_on_derived_type_using_string_nested AssertSql( """ -SELECT [t].[Name], [t].[LocustHordeId], [t].[ThreatLevel], [t].[ThreatLevelByte], [t].[ThreatLevelNullableByte], [t].[DefeatedByNickname], [t].[DefeatedBySquadId], [t].[HighCommandId], [t].[Discriminator], [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator], [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator], [t1].[Name], [t1].[Location], [t1].[Nation] +SELECT [t].[Name], [t].[LocustHordeId], [t].[ThreatLevel], [t].[ThreatLevelByte], [t].[ThreatLevelNullableByte], [t].[DefeatedByNickname], [t].[DefeatedBySquadId], [t].[HighCommandId], [t].[Discriminator], [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator], [t2].[Nickname], [t2].[SquadId], [t2].[AssignedCityName], [t2].[CityOfBirthName], [t2].[FullName], [t2].[HasSoulPatch], [t2].[LeaderNickname], [t2].[LeaderSquadId], [t2].[Rank], [t2].[Discriminator], [t2].[Name], [t2].[Location], [t2].[Nation] FROM ( SELECT [l].[Name], [l].[LocustHordeId], [l].[ThreatLevel], [l].[ThreatLevelByte], [l].[ThreatLevelNullableByte], NULL AS [DefeatedByNickname], NULL AS [DefeatedBySquadId], NULL AS [HighCommandId], N'LocustLeader' AS [Discriminator] FROM [LocustLeaders] AS [l] @@ -5012,17 +5012,17 @@ UNION ALL FROM [Officers] AS [o] ) AS [t0] ON [t].[DefeatedByNickname] = [t0].[Nickname] AND [t].[DefeatedBySquadId] = [t0].[SquadId] LEFT JOIN ( - SELECT [t2].[Nickname], [t2].[SquadId], [t2].[AssignedCityName], [t2].[CityOfBirthName], [t2].[FullName], [t2].[HasSoulPatch], [t2].[LeaderNickname], [t2].[LeaderSquadId], [t2].[Rank], [t2].[Discriminator], [c].[Name], [c].[Location], [c].[Nation] + SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator], [c].[Name], [c].[Location], [c].[Nation] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g0] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[AssignedCityName], [o0].[CityOfBirthName], [o0].[FullName], [o0].[HasSoulPatch], [o0].[LeaderNickname], [o0].[LeaderSquadId], [o0].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o0] - ) AS [t2] - INNER JOIN [Cities] AS [c] ON [t2].[CityOfBirthName] = [c].[Name] -) AS [t1] ON ([t0].[Nickname] = [t1].[LeaderNickname] OR ([t0].[Nickname] IS NULL AND [t1].[LeaderNickname] IS NULL)) AND [t0].[SquadId] = [t1].[LeaderSquadId] -ORDER BY [t].[Name], [t0].[Nickname], [t0].[SquadId], [t1].[Nickname], [t1].[SquadId] + ) AS [t1] + INNER JOIN [Cities] AS [c] ON [t1].[CityOfBirthName] = [c].[Name] +) AS [t2] ON ([t0].[Nickname] = [t2].[LeaderNickname] OR ([t0].[Nickname] IS NULL AND [t2].[LeaderNickname] IS NULL)) AND [t0].[SquadId] = [t2].[LeaderSquadId] +ORDER BY [t].[Name], [t0].[Nickname], [t0].[SquadId], [t2].[Nickname], [t2].[SquadId] """); } @@ -5246,7 +5246,7 @@ public override async Task ThenInclude_collection_on_derived_after_derived_colle AssertSql( """ -SELECT [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOfBirthName], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank], [t].[Discriminator], [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator], [t1].[Nickname0], [t1].[SquadId0], [t1].[AssignedCityName0], [t1].[CityOfBirthName0], [t1].[FullName0], [t1].[HasSoulPatch0], [t1].[LeaderNickname0], [t1].[LeaderSquadId0], [t1].[Rank0], [t1].[Discriminator0] +SELECT [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOfBirthName], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank], [t].[Discriminator], [t2].[Nickname], [t2].[SquadId], [t2].[AssignedCityName], [t2].[CityOfBirthName], [t2].[FullName], [t2].[HasSoulPatch], [t2].[LeaderNickname], [t2].[LeaderSquadId], [t2].[Rank], [t2].[Discriminator], [t2].[Nickname0], [t2].[SquadId0], [t2].[AssignedCityName0], [t2].[CityOfBirthName0], [t2].[FullName0], [t2].[HasSoulPatch0], [t2].[LeaderNickname0], [t2].[LeaderSquadId0], [t2].[Rank0], [t2].[Discriminator0] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g] @@ -5255,7 +5255,7 @@ UNION ALL FROM [Officers] AS [o] ) AS [t] LEFT JOIN ( - SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator], [t2].[Nickname] AS [Nickname0], [t2].[SquadId] AS [SquadId0], [t2].[AssignedCityName] AS [AssignedCityName0], [t2].[CityOfBirthName] AS [CityOfBirthName0], [t2].[FullName] AS [FullName0], [t2].[HasSoulPatch] AS [HasSoulPatch0], [t2].[LeaderNickname] AS [LeaderNickname0], [t2].[LeaderSquadId] AS [LeaderSquadId0], [t2].[Rank] AS [Rank0], [t2].[Discriminator] AS [Discriminator0] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator], [t1].[Nickname] AS [Nickname0], [t1].[SquadId] AS [SquadId0], [t1].[AssignedCityName] AS [AssignedCityName0], [t1].[CityOfBirthName] AS [CityOfBirthName0], [t1].[FullName] AS [FullName0], [t1].[HasSoulPatch] AS [HasSoulPatch0], [t1].[LeaderNickname] AS [LeaderNickname0], [t1].[LeaderSquadId] AS [LeaderSquadId0], [t1].[Rank] AS [Rank0], [t1].[Discriminator] AS [Discriminator0] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g0] @@ -5269,9 +5269,9 @@ FROM [Gears] AS [g1] UNION ALL SELECT [o1].[Nickname], [o1].[SquadId], [o1].[AssignedCityName], [o1].[CityOfBirthName], [o1].[FullName], [o1].[HasSoulPatch], [o1].[LeaderNickname], [o1].[LeaderSquadId], [o1].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o1] - ) AS [t2] ON [t0].[Nickname] = [t2].[LeaderNickname] AND [t0].[SquadId] = [t2].[LeaderSquadId] -) AS [t1] ON [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId] -ORDER BY [t].[Nickname], [t].[SquadId], [t1].[Nickname], [t1].[SquadId], [t1].[Nickname0] + ) AS [t1] ON [t0].[Nickname] = [t1].[LeaderNickname] AND [t0].[SquadId] = [t1].[LeaderSquadId] +) AS [t2] ON [t].[Nickname] = [t2].[LeaderNickname] AND [t].[SquadId] = [t2].[LeaderSquadId] +ORDER BY [t].[Nickname], [t].[SquadId], [t2].[Nickname], [t2].[SquadId], [t2].[Nickname0] """); } @@ -5337,7 +5337,7 @@ public override async Task Include_on_derived_multi_level(bool async) AssertSql( """ -SELECT [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOfBirthName], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank], [t].[Discriminator], [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator], [t0].[Id], [t0].[Banner], [t0].[Banner5], [t0].[InternalNumber], [t0].[Name], [t0].[SquadId0], [t0].[MissionId] +SELECT [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOfBirthName], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank], [t].[Discriminator], [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator], [t1].[Id], [t1].[Banner], [t1].[Banner5], [t1].[InternalNumber], [t1].[Name], [t1].[SquadId0], [t1].[MissionId] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g] @@ -5346,18 +5346,18 @@ UNION ALL FROM [Officers] AS [o] ) AS [t] LEFT JOIN ( - SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator], [s].[Id], [s].[Banner], [s].[Banner5], [s].[InternalNumber], [s].[Name], [s0].[SquadId] AS [SquadId0], [s0].[MissionId] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator], [s].[Id], [s].[Banner], [s].[Banner5], [s].[InternalNumber], [s].[Name], [s0].[SquadId] AS [SquadId0], [s0].[MissionId] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g0] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[AssignedCityName], [o0].[CityOfBirthName], [o0].[FullName], [o0].[HasSoulPatch], [o0].[LeaderNickname], [o0].[LeaderSquadId], [o0].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o0] - ) AS [t1] - INNER JOIN [Squads] AS [s] ON [t1].[SquadId] = [s].[Id] + ) AS [t0] + INNER JOIN [Squads] AS [s] ON [t0].[SquadId] = [s].[Id] LEFT JOIN [SquadMissions] AS [s0] ON [s].[Id] = [s0].[SquadId] -) AS [t0] ON [t].[Nickname] = [t0].[LeaderNickname] AND [t].[SquadId] = [t0].[LeaderSquadId] -ORDER BY [t].[Nickname], [t].[SquadId], [t0].[Nickname], [t0].[SquadId], [t0].[Id], [t0].[SquadId0] +) AS [t1] ON [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId] +ORDER BY [t].[Nickname], [t].[SquadId], [t1].[Nickname], [t1].[SquadId], [t1].[Id], [t1].[SquadId0] """); } @@ -5564,24 +5564,24 @@ public override async Task Correlated_collections_basic_projection_composite_key AssertSql( """ -SELECT [t].[Nickname], [t].[SquadId], [t0].[Nickname], [t0].[FullName], [t0].[SquadId] +SELECT [t].[Nickname], [t].[SquadId], [t1].[Nickname], [t1].[FullName], [t1].[SquadId] FROM ( SELECT [o].[Nickname], [o].[SquadId] FROM [Officers] AS [o] ) AS [t] LEFT JOIN ( - SELECT [t1].[Nickname], [t1].[FullName], [t1].[SquadId], [t1].[LeaderNickname], [t1].[LeaderSquadId] + SELECT [t0].[Nickname], [t0].[FullName], [t0].[SquadId], [t0].[LeaderNickname], [t0].[LeaderSquadId] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId] FROM [Gears] AS [g] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[FullName], [o0].[HasSoulPatch], [o0].[LeaderNickname], [o0].[LeaderSquadId] FROM [Officers] AS [o0] - ) AS [t1] - WHERE [t1].[HasSoulPatch] = CAST(0 AS bit) -) AS [t0] ON [t].[Nickname] = [t0].[LeaderNickname] AND [t].[SquadId] = [t0].[LeaderSquadId] + ) AS [t0] + WHERE [t0].[HasSoulPatch] = CAST(0 AS bit) +) AS [t1] ON [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId] WHERE [t].[Nickname] <> N'Foo' -ORDER BY [t].[Nickname], [t].[SquadId], [t0].[Nickname] +ORDER BY [t].[Nickname], [t].[SquadId], [t1].[Nickname] """); } @@ -5777,13 +5777,13 @@ public override async Task Correlated_collections_nested_with_custom_ordering(bo AssertSql( """ -SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t1].[FullName], [t1].[Nickname], [t1].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] +SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t2].[FullName], [t2].[Nickname], [t2].[SquadId], [t2].[Id], [t2].[AmmunitionType], [t2].[IsAutomatic], [t2].[Name], [t2].[OwnerFullName], [t2].[SynergyWithId] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName], [o].[HasSoulPatch] FROM [Officers] AS [o] ) AS [t] LEFT JOIN ( - SELECT [t0].[FullName], [t0].[Nickname], [t0].[SquadId], [t2].[Id], [t2].[AmmunitionType], [t2].[IsAutomatic], [t2].[Name], [t2].[OwnerFullName], [t2].[SynergyWithId], [t0].[Rank], [t0].[LeaderNickname], [t0].[LeaderSquadId] + SELECT [t0].[FullName], [t0].[Nickname], [t0].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId], [t0].[Rank], [t0].[LeaderNickname], [t0].[LeaderSquadId] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank] FROM [Gears] AS [g] @@ -5795,10 +5795,10 @@ LEFT JOIN ( SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] WHERE [w].[Name] <> N'Bar' OR [w].[Name] IS NULL - ) AS [t2] ON [t0].[FullName] = [t2].[OwnerFullName] + ) AS [t1] ON [t0].[FullName] = [t1].[OwnerFullName] WHERE [t0].[FullName] <> N'Foo' -) AS [t1] ON [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId] -ORDER BY [t].[HasSoulPatch] DESC, [t].[Nickname], [t].[SquadId], [t1].[Rank], [t1].[Nickname], [t1].[SquadId], [t1].[IsAutomatic] +) AS [t2] ON [t].[Nickname] = [t2].[LeaderNickname] AND [t].[SquadId] = [t2].[LeaderSquadId] +ORDER BY [t].[HasSoulPatch] DESC, [t].[Nickname], [t].[SquadId], [t2].[Rank], [t2].[Nickname], [t2].[SquadId], [t2].[IsAutomatic] """); } @@ -5864,7 +5864,7 @@ public override async Task Correlated_collections_different_collections_projecte AssertSql( """ -SELECT [t].[Nickname], [t].[SquadId], [t0].[Name], [t0].[IsAutomatic], [t0].[Id], [t1].[Nickname], [t1].[Rank], [t1].[SquadId] +SELECT [t].[Nickname], [t].[SquadId], [t1].[Name], [t1].[IsAutomatic], [t1].[Id], [t0].[Nickname], [t0].[Rank], [t0].[SquadId] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName] FROM [Officers] AS [o] @@ -5873,15 +5873,15 @@ LEFT JOIN ( SELECT [w].[Name], [w].[IsAutomatic], [w].[Id], [w].[OwnerFullName] FROM [Weapons] AS [w] WHERE [w].[IsAutomatic] = CAST(1 AS bit) -) AS [t0] ON [t].[FullName] = [t0].[OwnerFullName] +) AS [t1] ON [t].[FullName] = [t1].[OwnerFullName] LEFT JOIN ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank] FROM [Gears] AS [g] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[FullName], [o0].[LeaderNickname], [o0].[LeaderSquadId], [o0].[Rank] FROM [Officers] AS [o0] -) AS [t1] ON [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId] -ORDER BY [t].[FullName], [t].[Nickname], [t].[SquadId], [t0].[Id], [t1].[FullName], [t1].[Nickname] +) AS [t0] ON [t].[Nickname] = [t0].[LeaderNickname] AND [t].[SquadId] = [t0].[LeaderSquadId] +ORDER BY [t].[FullName], [t].[Nickname], [t].[SquadId], [t1].[Id], [t0].[FullName], [t0].[Nickname] """); } @@ -5917,7 +5917,7 @@ public override async Task Multiple_orderby_with_navigation_expansion_on_one_of_ AssertSql( """ -SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t0].[Id], [t2].[Nickname], [t2].[SquadId], [t3].[Id], [t3].[AmmunitionType], [t3].[IsAutomatic], [t3].[Name], [t3].[OwnerFullName], [t3].[SynergyWithId], [t3].[Nickname], [t3].[SquadId] +SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t0].[Id], [t2].[Nickname], [t2].[SquadId], [t4].[Id], [t4].[AmmunitionType], [t4].[IsAutomatic], [t4].[Name], [t4].[OwnerFullName], [t4].[SynergyWithId], [t4].[Nickname], [t4].[SquadId] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName], [o].[HasSoulPatch] FROM [Officers] AS [o] @@ -5931,7 +5931,7 @@ UNION ALL FROM [Officers] AS [o0] ) AS [t2] ON [t0].[GearNickName] = [t2].[Nickname] AND [t0].[GearSquadId] = [t2].[SquadId] LEFT JOIN ( - SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], [t4].[Nickname], [t4].[SquadId] + SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], [t3].[Nickname], [t3].[SquadId] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[FullName] @@ -5939,8 +5939,8 @@ FROM [Gears] AS [g0] UNION ALL SELECT [o1].[Nickname], [o1].[SquadId], [o1].[FullName] FROM [Officers] AS [o1] - ) AS [t4] ON [w].[OwnerFullName] = [t4].[FullName] -) AS [t3] ON [t2].[FullName] = [t3].[OwnerFullName] + ) AS [t3] ON [w].[OwnerFullName] = [t3].[FullName] +) AS [t4] ON [t2].[FullName] = [t4].[OwnerFullName] WHERE EXISTS ( SELECT 1 FROM ( @@ -5951,7 +5951,7 @@ UNION ALL FROM [Officers] AS [o2] ) AS [t1] WHERE [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId]) -ORDER BY [t].[HasSoulPatch] DESC, [t0].[Note], [t].[Nickname], [t].[SquadId], [t0].[Id], [t2].[Nickname], [t2].[SquadId], [t3].[IsAutomatic], [t3].[Nickname] DESC, [t3].[Id] +ORDER BY [t].[HasSoulPatch] DESC, [t0].[Note], [t].[Nickname], [t].[SquadId], [t0].[Id], [t2].[Nickname], [t2].[SquadId], [t4].[IsAutomatic], [t4].[Nickname] DESC, [t4].[Id] """); } @@ -5962,7 +5962,7 @@ public override async Task Multiple_orderby_with_navigation_expansion_on_one_of_ AssertSql( """ -SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t0].[Id], [t2].[Nickname], [t2].[SquadId], [t3].[Id], [t3].[AmmunitionType], [t3].[IsAutomatic], [t3].[Name], [t3].[OwnerFullName], [t3].[SynergyWithId], [t3].[Nickname], [t3].[SquadId] +SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t0].[Id], [t2].[Nickname], [t2].[SquadId], [t4].[Id], [t4].[AmmunitionType], [t4].[IsAutomatic], [t4].[Name], [t4].[OwnerFullName], [t4].[SynergyWithId], [t4].[Nickname], [t4].[SquadId] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName], [o].[HasSoulPatch] FROM [Officers] AS [o] @@ -5976,7 +5976,7 @@ UNION ALL FROM [Officers] AS [o0] ) AS [t2] ON [t0].[GearNickName] = [t2].[Nickname] AND [t0].[GearSquadId] = [t2].[SquadId] LEFT JOIN ( - SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], [t4].[Nickname], [t4].[SquadId] + SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], [t3].[Nickname], [t3].[SquadId] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[FullName] @@ -5984,8 +5984,8 @@ FROM [Gears] AS [g0] UNION ALL SELECT [o1].[Nickname], [o1].[SquadId], [o1].[FullName] FROM [Officers] AS [o1] - ) AS [t4] ON [w].[OwnerFullName] = [t4].[FullName] -) AS [t3] ON [t2].[FullName] = [t3].[OwnerFullName] + ) AS [t3] ON [w].[OwnerFullName] = [t3].[FullName] +) AS [t4] ON [t2].[FullName] = [t4].[OwnerFullName] WHERE EXISTS ( SELECT 1 FROM ( @@ -5996,7 +5996,7 @@ UNION ALL FROM [Officers] AS [o2] ) AS [t1] WHERE [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId]) -ORDER BY [t].[HasSoulPatch] DESC, [t0].[Note], [t].[Nickname], [t].[SquadId], [t0].[Id], [t2].[Nickname], [t2].[SquadId], [t3].[IsAutomatic], [t3].[Nickname] DESC, [t3].[Id] +ORDER BY [t].[HasSoulPatch] DESC, [t0].[Note], [t].[Nickname], [t].[SquadId], [t0].[Id], [t2].[Nickname], [t2].[SquadId], [t4].[IsAutomatic], [t4].[Nickname] DESC, [t4].[Id] """); } @@ -6007,7 +6007,7 @@ public override async Task Multiple_orderby_with_navigation_expansion_on_one_of_ AssertSql( """ -SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t0].[Id], [t2].[Nickname], [t2].[SquadId], [t3].[Id], [t3].[AmmunitionType], [t3].[IsAutomatic], [t3].[Name], [t3].[OwnerFullName], [t3].[SynergyWithId], [t3].[Nickname], [t3].[SquadId] +SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t0].[Id], [t2].[Nickname], [t2].[SquadId], [t4].[Id], [t4].[AmmunitionType], [t4].[IsAutomatic], [t4].[Name], [t4].[OwnerFullName], [t4].[SynergyWithId], [t4].[Nickname], [t4].[SquadId] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName], [o].[HasSoulPatch] FROM [Officers] AS [o] @@ -6021,10 +6021,10 @@ UNION ALL FROM [Officers] AS [o0] ) AS [t2] ON [t0].[GearNickName] = [t2].[Nickname] AND [t0].[GearSquadId] = [t2].[SquadId] LEFT JOIN ( - SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], [t4].[Nickname], [t4].[SquadId], ( + SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], [t3].[Nickname], [t3].[SquadId], ( SELECT COUNT(*) FROM [Weapons] AS [w0] - WHERE [t4].[FullName] IS NOT NULL AND [t4].[FullName] = [w0].[OwnerFullName]) AS [c] + WHERE [t3].[FullName] IS NOT NULL AND [t3].[FullName] = [w0].[OwnerFullName]) AS [c] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[FullName] @@ -6032,8 +6032,8 @@ FROM [Gears] AS [g0] UNION ALL SELECT [o1].[Nickname], [o1].[SquadId], [o1].[FullName] FROM [Officers] AS [o1] - ) AS [t4] ON [w].[OwnerFullName] = [t4].[FullName] -) AS [t3] ON [t2].[FullName] = [t3].[OwnerFullName] + ) AS [t3] ON [w].[OwnerFullName] = [t3].[FullName] +) AS [t4] ON [t2].[FullName] = [t4].[OwnerFullName] WHERE EXISTS ( SELECT 1 FROM ( @@ -6044,7 +6044,7 @@ UNION ALL FROM [Officers] AS [o2] ) AS [t1] WHERE [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId]) -ORDER BY [t].[HasSoulPatch] DESC, [t0].[Note], [t].[Nickname], [t].[SquadId], [t0].[Id], [t2].[Nickname], [t2].[SquadId], [t3].[Id] DESC, [t3].[c], [t3].[Nickname] +ORDER BY [t].[HasSoulPatch] DESC, [t0].[Note], [t].[Nickname], [t].[SquadId], [t0].[Id], [t2].[Nickname], [t2].[SquadId], [t4].[Id] DESC, [t4].[c], [t4].[Nickname] """); } @@ -6054,7 +6054,7 @@ public override async Task Correlated_collections_multiple_nested_complex_collec AssertSql( """ -SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t0].[Id], [t2].[Nickname], [t2].[SquadId], [t3].[FullName], [t3].[Nickname], [t3].[SquadId], [t3].[Id], [t3].[Nickname0], [t3].[SquadId0], [t3].[Id0], [t3].[Name], [t3].[IsAutomatic], [t3].[Id1], [t3].[Nickname00], [t3].[HasSoulPatch], [t3].[SquadId00], [t8].[Id], [t8].[AmmunitionType], [t8].[IsAutomatic], [t8].[Name], [t8].[OwnerFullName], [t8].[SynergyWithId], [t8].[Nickname], [t8].[SquadId] +SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t0].[Id], [t2].[Nickname], [t2].[SquadId], [t8].[FullName], [t8].[Nickname], [t8].[SquadId], [t8].[Id], [t8].[Nickname0], [t8].[SquadId0], [t8].[Id0], [t8].[Name], [t8].[IsAutomatic], [t8].[Id1], [t8].[Nickname00], [t8].[HasSoulPatch], [t8].[SquadId00], [t9].[Id], [t9].[AmmunitionType], [t9].[IsAutomatic], [t9].[Name], [t9].[OwnerFullName], [t9].[SynergyWithId], [t9].[Nickname], [t9].[SquadId] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName], [o].[HasSoulPatch] FROM [Officers] AS [o] @@ -6068,16 +6068,16 @@ UNION ALL FROM [Officers] AS [o0] ) AS [t2] ON [t0].[GearNickName] = [t2].[Nickname] AND [t0].[GearSquadId] = [t2].[SquadId] LEFT JOIN ( - SELECT [t4].[FullName], [t4].[Nickname], [t4].[SquadId], [t5].[Id], [t5].[Nickname] AS [Nickname0], [t5].[SquadId] AS [SquadId0], [t5].[Id0], [t5].[Name], [t5].[IsAutomatic], [t5].[Id1], [t5].[Nickname0] AS [Nickname00], [t5].[HasSoulPatch], [t5].[SquadId0] AS [SquadId00], [t4].[Rank], [t5].[IsAutomatic0], [t4].[LeaderNickname], [t4].[LeaderSquadId] + SELECT [t3].[FullName], [t3].[Nickname], [t3].[SquadId], [t7].[Id], [t7].[Nickname] AS [Nickname0], [t7].[SquadId] AS [SquadId0], [t7].[Id0], [t7].[Name], [t7].[IsAutomatic], [t7].[Id1], [t7].[Nickname0] AS [Nickname00], [t7].[HasSoulPatch], [t7].[SquadId0] AS [SquadId00], [t3].[Rank], [t7].[IsAutomatic0], [t3].[LeaderNickname], [t3].[LeaderSquadId] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[FullName], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank] FROM [Gears] AS [g0] UNION ALL SELECT [o1].[Nickname], [o1].[SquadId], [o1].[FullName], [o1].[LeaderNickname], [o1].[LeaderSquadId], [o1].[Rank] FROM [Officers] AS [o1] - ) AS [t4] + ) AS [t3] LEFT JOIN ( - SELECT [w].[Id], [t6].[Nickname], [t6].[SquadId], [s].[Id] AS [Id0], [w0].[Name], [w0].[IsAutomatic], [w0].[Id] AS [Id1], [t7].[Nickname] AS [Nickname0], [t7].[HasSoulPatch], [t7].[SquadId] AS [SquadId0], [w].[IsAutomatic] AS [IsAutomatic0], [w].[OwnerFullName] + SELECT [w].[Id], [t4].[Nickname], [t4].[SquadId], [s].[Id] AS [Id0], [w0].[Name], [w0].[IsAutomatic], [w0].[Id] AS [Id1], [t5].[Nickname] AS [Nickname0], [t5].[HasSoulPatch], [t5].[SquadId] AS [SquadId0], [w].[IsAutomatic] AS [IsAutomatic0], [w].[OwnerFullName] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g1].[Nickname], [g1].[SquadId], [g1].[FullName] @@ -6085,22 +6085,22 @@ FROM [Gears] AS [g1] UNION ALL SELECT [o2].[Nickname], [o2].[SquadId], [o2].[FullName] FROM [Officers] AS [o2] - ) AS [t6] ON [w].[OwnerFullName] = [t6].[FullName] - LEFT JOIN [Squads] AS [s] ON [t6].[SquadId] = [s].[Id] - LEFT JOIN [Weapons] AS [w0] ON [t6].[FullName] = [w0].[OwnerFullName] + ) AS [t4] ON [w].[OwnerFullName] = [t4].[FullName] + LEFT JOIN [Squads] AS [s] ON [t4].[SquadId] = [s].[Id] + LEFT JOIN [Weapons] AS [w0] ON [t4].[FullName] = [w0].[OwnerFullName] LEFT JOIN ( SELECT [g2].[Nickname], [g2].[SquadId], [g2].[HasSoulPatch] FROM [Gears] AS [g2] UNION ALL SELECT [o3].[Nickname], [o3].[SquadId], [o3].[HasSoulPatch] FROM [Officers] AS [o3] - ) AS [t7] ON [s].[Id] = [t7].[SquadId] + ) AS [t5] ON [s].[Id] = [t5].[SquadId] WHERE [w].[Name] <> N'Bar' OR [w].[Name] IS NULL - ) AS [t5] ON [t4].[FullName] = [t5].[OwnerFullName] - WHERE [t4].[FullName] <> N'Foo' -) AS [t3] ON [t].[Nickname] = [t3].[LeaderNickname] AND [t].[SquadId] = [t3].[LeaderSquadId] + ) AS [t7] ON [t3].[FullName] = [t7].[OwnerFullName] + WHERE [t3].[FullName] <> N'Foo' +) AS [t8] ON [t].[Nickname] = [t8].[LeaderNickname] AND [t].[SquadId] = [t8].[LeaderSquadId] LEFT JOIN ( - SELECT [w1].[Id], [w1].[AmmunitionType], [w1].[IsAutomatic], [w1].[Name], [w1].[OwnerFullName], [w1].[SynergyWithId], [t9].[Nickname], [t9].[SquadId] + SELECT [w1].[Id], [w1].[AmmunitionType], [w1].[IsAutomatic], [w1].[Name], [w1].[OwnerFullName], [w1].[SynergyWithId], [t6].[Nickname], [t6].[SquadId] FROM [Weapons] AS [w1] LEFT JOIN ( SELECT [g3].[Nickname], [g3].[SquadId], [g3].[FullName] @@ -6108,8 +6108,8 @@ FROM [Gears] AS [g3] UNION ALL SELECT [o4].[Nickname], [o4].[SquadId], [o4].[FullName] FROM [Officers] AS [o4] - ) AS [t9] ON [w1].[OwnerFullName] = [t9].[FullName] -) AS [t8] ON [t2].[FullName] = [t8].[OwnerFullName] + ) AS [t6] ON [w1].[OwnerFullName] = [t6].[FullName] +) AS [t9] ON [t2].[FullName] = [t9].[OwnerFullName] WHERE EXISTS ( SELECT 1 FROM ( @@ -6120,7 +6120,7 @@ UNION ALL FROM [Officers] AS [o5] ) AS [t1] WHERE [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId]) -ORDER BY [t].[HasSoulPatch] DESC, [t0].[Note], [t].[Nickname], [t].[SquadId], [t0].[Id], [t2].[Nickname], [t2].[SquadId], [t3].[Rank], [t3].[Nickname], [t3].[SquadId], [t3].[IsAutomatic0], [t3].[Id], [t3].[Nickname0], [t3].[SquadId0], [t3].[Id0], [t3].[Id1], [t3].[Nickname00], [t3].[SquadId00], [t8].[IsAutomatic], [t8].[Nickname] DESC, [t8].[Id] +ORDER BY [t].[HasSoulPatch] DESC, [t0].[Note], [t].[Nickname], [t].[SquadId], [t0].[Id], [t2].[Nickname], [t2].[SquadId], [t8].[Rank], [t8].[Nickname], [t8].[SquadId], [t8].[IsAutomatic0], [t8].[Id], [t8].[Nickname0], [t8].[SquadId0], [t8].[Id0], [t8].[Id1], [t8].[Nickname00], [t8].[SquadId00], [t9].[IsAutomatic], [t9].[Nickname] DESC, [t9].[Id] """); } @@ -6130,23 +6130,23 @@ public override async Task Correlated_collections_inner_subquery_selector_refere AssertSql( """ -SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t0].[ReportName], [t0].[OfficerName], [t0].[Nickname], [t0].[SquadId] +SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t1].[ReportName], [t1].[OfficerName], [t1].[Nickname], [t1].[SquadId] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName] FROM [Officers] AS [o] ) AS [t] OUTER APPLY ( - SELECT [t1].[FullName] AS [ReportName], [t].[FullName] AS [OfficerName], [t1].[Nickname], [t1].[SquadId] + SELECT [t0].[FullName] AS [ReportName], [t].[FullName] AS [OfficerName], [t0].[Nickname], [t0].[SquadId] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId] FROM [Gears] AS [g] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[FullName], [o0].[LeaderNickname], [o0].[LeaderSquadId] FROM [Officers] AS [o0] - ) AS [t1] - WHERE [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId] -) AS [t0] -ORDER BY [t].[Nickname], [t].[SquadId], [t0].[Nickname] + ) AS [t0] + WHERE [t].[Nickname] = [t0].[LeaderNickname] AND [t].[SquadId] = [t0].[LeaderSquadId] +) AS [t1] +ORDER BY [t].[Nickname], [t].[SquadId], [t1].[Nickname] """); } @@ -6156,23 +6156,23 @@ public override async Task Correlated_collections_inner_subquery_predicate_refer AssertSql( """ -SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t0].[ReportName], [t0].[Nickname], [t0].[SquadId] +SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t1].[ReportName], [t1].[Nickname], [t1].[SquadId] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName] FROM [Officers] AS [o] ) AS [t] OUTER APPLY ( - SELECT [t1].[FullName] AS [ReportName], [t1].[Nickname], [t1].[SquadId] + SELECT [t0].[FullName] AS [ReportName], [t0].[Nickname], [t0].[SquadId] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId] FROM [Gears] AS [g] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[FullName], [o0].[LeaderNickname], [o0].[LeaderSquadId] FROM [Officers] AS [o0] - ) AS [t1] - WHERE [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId] AND [t].[FullName] <> N'Foo' -) AS [t0] -ORDER BY [t].[Nickname], [t].[SquadId], [t0].[Nickname] + ) AS [t0] + WHERE [t].[Nickname] = [t0].[LeaderNickname] AND [t].[SquadId] = [t0].[LeaderSquadId] AND [t].[FullName] <> N'Foo' +) AS [t1] +ORDER BY [t].[Nickname], [t].[SquadId], [t1].[Nickname] """); } @@ -6182,13 +6182,13 @@ public override async Task Correlated_collections_nested_inner_subquery_referenc AssertSql( """ -SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t1].[FullName], [t1].[Nickname], [t1].[SquadId], [t1].[Name], [t1].[Nickname0], [t1].[Id] +SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t2].[FullName], [t2].[Nickname], [t2].[SquadId], [t2].[Name], [t2].[Nickname0], [t2].[Id] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName] FROM [Officers] AS [o] ) AS [t] LEFT JOIN ( - SELECT [t0].[FullName], [t0].[Nickname], [t0].[SquadId], [t2].[Name], [t2].[Nickname] AS [Nickname0], [t2].[Id], [t0].[LeaderNickname], [t0].[LeaderSquadId] + SELECT [t0].[FullName], [t0].[Nickname], [t0].[SquadId], [t1].[Name], [t1].[Nickname] AS [Nickname0], [t1].[Id], [t0].[LeaderNickname], [t0].[LeaderSquadId] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId] FROM [Gears] AS [g] @@ -6200,10 +6200,10 @@ OUTER APPLY ( SELECT [w].[Name], [t0].[Nickname], [w].[Id] FROM [Weapons] AS [w] WHERE [t0].[FullName] = [w].[OwnerFullName] AND ([w].[Name] <> N'Bar' OR [w].[Name] IS NULL) - ) AS [t2] + ) AS [t1] WHERE [t0].[FullName] <> N'Foo' -) AS [t1] ON [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId] -ORDER BY [t].[Nickname], [t].[SquadId], [t1].[Nickname], [t1].[SquadId] +) AS [t2] ON [t].[Nickname] = [t2].[LeaderNickname] AND [t].[SquadId] = [t2].[LeaderSquadId] +ORDER BY [t].[Nickname], [t].[SquadId], [t2].[Nickname], [t2].[SquadId] """); } @@ -6213,13 +6213,13 @@ public override async Task Correlated_collections_nested_inner_subquery_referenc AssertSql( """ -SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t1].[FullName], [t1].[Nickname], [t1].[SquadId], [t1].[Name], [t1].[Nickname0], [t1].[Id] +SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t2].[FullName], [t2].[Nickname], [t2].[SquadId], [t2].[Name], [t2].[Nickname0], [t2].[Id] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName] FROM [Officers] AS [o] ) AS [t] OUTER APPLY ( - SELECT [t0].[FullName], [t0].[Nickname], [t0].[SquadId], [t2].[Name], [t2].[Nickname] AS [Nickname0], [t2].[Id] + SELECT [t0].[FullName], [t0].[Nickname], [t0].[SquadId], [t1].[Name], [t1].[Nickname] AS [Nickname0], [t1].[Id] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId] FROM [Gears] AS [g] @@ -6231,10 +6231,10 @@ LEFT JOIN ( SELECT [w].[Name], [t].[Nickname], [w].[Id], [w].[OwnerFullName] FROM [Weapons] AS [w] WHERE [w].[Name] <> N'Bar' OR [w].[Name] IS NULL - ) AS [t2] ON [t0].[FullName] = [t2].[OwnerFullName] + ) AS [t1] ON [t0].[FullName] = [t1].[OwnerFullName] WHERE [t].[Nickname] = [t0].[LeaderNickname] AND [t].[SquadId] = [t0].[LeaderSquadId] AND [t0].[FullName] <> N'Foo' -) AS [t1] -ORDER BY [t].[Nickname], [t].[SquadId], [t1].[Nickname], [t1].[SquadId] +) AS [t2] +ORDER BY [t].[Nickname], [t].[SquadId], [t2].[Nickname], [t2].[SquadId] """); } @@ -6244,7 +6244,7 @@ public override async Task Correlated_collections_on_select_many(bool async) AssertSql( """ -SELECT [t].[Nickname], [s].[Name], [t].[SquadId], [s].[Id], [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[SynergyWithId], [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator] +SELECT [t].[Nickname], [s].[Name], [t].[SquadId], [s].[Id], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId], [t2].[Nickname], [t2].[SquadId], [t2].[AssignedCityName], [t2].[CityOfBirthName], [t2].[FullName], [t2].[HasSoulPatch], [t2].[LeaderNickname], [t2].[LeaderSquadId], [t2].[Rank], [t2].[Discriminator] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName], [g].[HasSoulPatch] FROM [Gears] AS [g] @@ -6257,20 +6257,20 @@ LEFT JOIN ( SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] WHERE [w].[IsAutomatic] = CAST(1 AS bit) OR [w].[Name] <> N'foo' OR [w].[Name] IS NULL -) AS [t0] ON [t].[FullName] = [t0].[OwnerFullName] +) AS [t1] ON [t].[FullName] = [t1].[OwnerFullName] LEFT JOIN ( - SELECT [t2].[Nickname], [t2].[SquadId], [t2].[AssignedCityName], [t2].[CityOfBirthName], [t2].[FullName], [t2].[HasSoulPatch], [t2].[LeaderNickname], [t2].[LeaderSquadId], [t2].[Rank], [t2].[Discriminator] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g0] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[AssignedCityName], [o0].[CityOfBirthName], [o0].[FullName], [o0].[HasSoulPatch], [o0].[LeaderNickname], [o0].[LeaderSquadId], [o0].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o0] - ) AS [t2] - WHERE [t2].[HasSoulPatch] = CAST(0 AS bit) -) AS [t1] ON [s].[Id] = [t1].[SquadId] + ) AS [t0] + WHERE [t0].[HasSoulPatch] = CAST(0 AS bit) +) AS [t2] ON [s].[Id] = [t2].[SquadId] WHERE [t].[HasSoulPatch] = CAST(1 AS bit) -ORDER BY [t].[Nickname], [s].[Id] DESC, [t].[SquadId], [t0].[Id], [t1].[Nickname] +ORDER BY [t].[Nickname], [s].[Id] DESC, [t].[SquadId], [t1].[Id], [t2].[Nickname] """); } @@ -6446,7 +6446,7 @@ public override async Task Correlated_collections_deeply_nested_left_join(bool a AssertSql( """ -SELECT [t].[Id], [t0].[Nickname], [t0].[SquadId], [s].[Id], [t1].[Nickname], [t1].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] +SELECT [t].[Id], [t0].[Nickname], [t0].[SquadId], [s].[Id], [t3].[Nickname], [t3].[SquadId], [t3].[Id], [t3].[AmmunitionType], [t3].[IsAutomatic], [t3].[Name], [t3].[OwnerFullName], [t3].[SynergyWithId] FROM [Tags] AS [t] LEFT JOIN ( SELECT [g].[Nickname], [g].[SquadId] @@ -6457,22 +6457,22 @@ FROM [Officers] AS [o] ) AS [t0] ON [t].[GearNickName] = [t0].[Nickname] LEFT JOIN [Squads] AS [s] ON [t0].[SquadId] = [s].[Id] LEFT JOIN ( - SELECT [t2].[Nickname], [t2].[SquadId], [t3].[Id], [t3].[AmmunitionType], [t3].[IsAutomatic], [t3].[Name], [t3].[OwnerFullName], [t3].[SynergyWithId] + SELECT [t1].[Nickname], [t1].[SquadId], [t2].[Id], [t2].[AmmunitionType], [t2].[IsAutomatic], [t2].[Name], [t2].[OwnerFullName], [t2].[SynergyWithId] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[FullName], [g0].[HasSoulPatch] FROM [Gears] AS [g0] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[FullName], [o0].[HasSoulPatch] FROM [Officers] AS [o0] - ) AS [t2] + ) AS [t1] LEFT JOIN ( SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] WHERE [w].[IsAutomatic] = CAST(1 AS bit) - ) AS [t3] ON [t2].[FullName] = [t3].[OwnerFullName] - WHERE [t2].[HasSoulPatch] = CAST(1 AS bit) -) AS [t1] ON [s].[Id] = [t1].[SquadId] -ORDER BY [t].[Note], [t0].[Nickname] DESC, [t].[Id], [t0].[SquadId], [s].[Id], [t1].[Nickname], [t1].[SquadId] + ) AS [t2] ON [t1].[FullName] = [t2].[OwnerFullName] + WHERE [t1].[HasSoulPatch] = CAST(1 AS bit) +) AS [t3] ON [s].[Id] = [t3].[SquadId] +ORDER BY [t].[Note], [t0].[Nickname] DESC, [t].[Id], [t0].[SquadId], [s].[Id], [t3].[Nickname], [t3].[SquadId] """); } @@ -6482,7 +6482,7 @@ public override async Task Correlated_collections_from_left_join_with_additional AssertSql( """ -SELECT [w].[Id], [t].[Nickname], [t].[SquadId], [s].[Id], [t1].[Nickname], [t1].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId], [t1].[Rank] +SELECT [w].[Id], [t].[Nickname], [t].[SquadId], [s].[Id], [t2].[Nickname], [t2].[SquadId], [t2].[Id], [t2].[AmmunitionType], [t2].[IsAutomatic], [t2].[Name], [t2].[OwnerFullName], [t2].[SynergyWithId], [t2].[Rank] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName] @@ -6493,7 +6493,7 @@ FROM [Officers] AS [o] ) AS [t] ON [w].[OwnerFullName] = [t].[FullName] LEFT JOIN [Squads] AS [s] ON [t].[SquadId] = [s].[Id] LEFT JOIN ( - SELECT [t0].[Nickname], [t0].[SquadId], [t2].[Id], [t2].[AmmunitionType], [t2].[IsAutomatic], [t2].[Name], [t2].[OwnerFullName], [t2].[SynergyWithId], [t0].[Rank], [t0].[FullName] + SELECT [t0].[Nickname], [t0].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId], [t0].[Rank], [t0].[FullName] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[FullName], [g0].[Rank] FROM [Gears] AS [g0] @@ -6505,9 +6505,9 @@ LEFT JOIN ( SELECT [w0].[Id], [w0].[AmmunitionType], [w0].[IsAutomatic], [w0].[Name], [w0].[OwnerFullName], [w0].[SynergyWithId] FROM [Weapons] AS [w0] WHERE [w0].[IsAutomatic] = CAST(0 AS bit) - ) AS [t2] ON [t0].[FullName] = [t2].[OwnerFullName] -) AS [t1] ON [s].[Id] = [t1].[SquadId] -ORDER BY [w].[Name], [w].[Id], [t].[Nickname], [t].[SquadId], [s].[Id], [t1].[FullName] DESC, [t1].[Nickname], [t1].[SquadId], [t1].[Id] + ) AS [t1] ON [t0].[FullName] = [t1].[OwnerFullName] +) AS [t2] ON [s].[Id] = [t2].[SquadId] +ORDER BY [w].[Name], [w].[Id], [t].[Nickname], [t].[SquadId], [s].[Id], [t2].[FullName] DESC, [t2].[Nickname], [t2].[SquadId], [t2].[Id] """); } @@ -6517,7 +6517,7 @@ public override async Task Correlated_collections_complex_scenario1(bool async) AssertSql( """ -SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t1].[Id], [t1].[Nickname], [t1].[SquadId], [t1].[Id0], [t1].[Nickname0], [t1].[HasSoulPatch], [t1].[SquadId0] +SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t2].[Id], [t2].[Nickname], [t2].[SquadId], [t2].[Id0], [t2].[Nickname0], [t2].[HasSoulPatch], [t2].[SquadId0] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName] FROM [Gears] AS [g] @@ -6526,7 +6526,7 @@ UNION ALL FROM [Officers] AS [o] ) AS [t] LEFT JOIN ( - SELECT [w].[Id], [t0].[Nickname], [t0].[SquadId], [s].[Id] AS [Id0], [t2].[Nickname] AS [Nickname0], [t2].[HasSoulPatch], [t2].[SquadId] AS [SquadId0], [w].[OwnerFullName] + SELECT [w].[Id], [t0].[Nickname], [t0].[SquadId], [s].[Id] AS [Id0], [t1].[Nickname] AS [Nickname0], [t1].[HasSoulPatch], [t1].[SquadId] AS [SquadId0], [w].[OwnerFullName] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[FullName] @@ -6542,9 +6542,9 @@ FROM [Gears] AS [g1] UNION ALL SELECT [o1].[Nickname], [o1].[SquadId], [o1].[HasSoulPatch] FROM [Officers] AS [o1] - ) AS [t2] ON [s].[Id] = [t2].[SquadId] -) AS [t1] ON [t].[FullName] = [t1].[OwnerFullName] -ORDER BY [t].[Nickname], [t].[SquadId], [t1].[Id], [t1].[Nickname], [t1].[SquadId], [t1].[Id0], [t1].[Nickname0] + ) AS [t1] ON [s].[Id] = [t1].[SquadId] +) AS [t2] ON [t].[FullName] = [t2].[OwnerFullName] +ORDER BY [t].[Nickname], [t].[SquadId], [t2].[Id], [t2].[Nickname], [t2].[SquadId], [t2].[Id0], [t2].[Nickname0] """); } @@ -6554,13 +6554,13 @@ public override async Task Correlated_collections_complex_scenario2(bool async) AssertSql( """ -SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t3].[FullName], [t3].[Nickname], [t3].[SquadId], [t3].[Id], [t3].[Nickname0], [t3].[SquadId0], [t3].[Id0], [t3].[Nickname00], [t3].[HasSoulPatch], [t3].[SquadId00] +SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t4].[FullName], [t4].[Nickname], [t4].[SquadId], [t4].[Id], [t4].[Nickname0], [t4].[SquadId0], [t4].[Id0], [t4].[Nickname00], [t4].[HasSoulPatch], [t4].[SquadId00] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName] FROM [Officers] AS [o] ) AS [t] LEFT JOIN ( - SELECT [t0].[FullName], [t0].[Nickname], [t0].[SquadId], [t1].[Id], [t1].[Nickname] AS [Nickname0], [t1].[SquadId] AS [SquadId0], [t1].[Id0], [t1].[Nickname0] AS [Nickname00], [t1].[HasSoulPatch], [t1].[SquadId0] AS [SquadId00], [t0].[LeaderNickname], [t0].[LeaderSquadId] + SELECT [t0].[FullName], [t0].[Nickname], [t0].[SquadId], [t3].[Id], [t3].[Nickname] AS [Nickname0], [t3].[SquadId] AS [SquadId0], [t3].[Id0], [t3].[Nickname0] AS [Nickname00], [t3].[HasSoulPatch], [t3].[SquadId0] AS [SquadId00], [t0].[LeaderNickname], [t0].[LeaderSquadId] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId] FROM [Gears] AS [g] @@ -6569,7 +6569,7 @@ UNION ALL FROM [Officers] AS [o0] ) AS [t0] LEFT JOIN ( - SELECT [w].[Id], [t2].[Nickname], [t2].[SquadId], [s].[Id] AS [Id0], [t4].[Nickname] AS [Nickname0], [t4].[HasSoulPatch], [t4].[SquadId] AS [SquadId0], [w].[OwnerFullName] + SELECT [w].[Id], [t1].[Nickname], [t1].[SquadId], [s].[Id] AS [Id0], [t2].[Nickname] AS [Nickname0], [t2].[HasSoulPatch], [t2].[SquadId] AS [SquadId0], [w].[OwnerFullName] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[FullName] @@ -6577,18 +6577,18 @@ FROM [Gears] AS [g0] UNION ALL SELECT [o1].[Nickname], [o1].[SquadId], [o1].[FullName] FROM [Officers] AS [o1] - ) AS [t2] ON [w].[OwnerFullName] = [t2].[FullName] - LEFT JOIN [Squads] AS [s] ON [t2].[SquadId] = [s].[Id] + ) AS [t1] ON [w].[OwnerFullName] = [t1].[FullName] + LEFT JOIN [Squads] AS [s] ON [t1].[SquadId] = [s].[Id] LEFT JOIN ( SELECT [g1].[Nickname], [g1].[SquadId], [g1].[HasSoulPatch] FROM [Gears] AS [g1] UNION ALL SELECT [o2].[Nickname], [o2].[SquadId], [o2].[HasSoulPatch] FROM [Officers] AS [o2] - ) AS [t4] ON [s].[Id] = [t4].[SquadId] - ) AS [t1] ON [t0].[FullName] = [t1].[OwnerFullName] -) AS [t3] ON [t].[Nickname] = [t3].[LeaderNickname] AND [t].[SquadId] = [t3].[LeaderSquadId] -ORDER BY [t].[Nickname], [t].[SquadId], [t3].[Nickname], [t3].[SquadId], [t3].[Id], [t3].[Nickname0], [t3].[SquadId0], [t3].[Id0], [t3].[Nickname00] + ) AS [t2] ON [s].[Id] = [t2].[SquadId] + ) AS [t3] ON [t0].[FullName] = [t3].[OwnerFullName] +) AS [t4] ON [t].[Nickname] = [t4].[LeaderNickname] AND [t].[SquadId] = [t4].[LeaderSquadId] +ORDER BY [t].[Nickname], [t].[SquadId], [t4].[Nickname], [t4].[SquadId], [t4].[Id], [t4].[Nickname0], [t4].[SquadId0], [t4].[Id0], [t4].[Nickname00] """); } @@ -6598,7 +6598,7 @@ public override async Task Correlated_collections_with_funky_orderby_complex_sce AssertSql( """ -SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t1].[Id], [t1].[Nickname], [t1].[SquadId], [t1].[Id0], [t1].[Nickname0], [t1].[HasSoulPatch], [t1].[SquadId0] +SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t2].[Id], [t2].[Nickname], [t2].[SquadId], [t2].[Id0], [t2].[Nickname0], [t2].[HasSoulPatch], [t2].[SquadId0] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName] FROM [Gears] AS [g] @@ -6607,7 +6607,7 @@ UNION ALL FROM [Officers] AS [o] ) AS [t] LEFT JOIN ( - SELECT [w].[Id], [t0].[Nickname], [t0].[SquadId], [s].[Id] AS [Id0], [t2].[Nickname] AS [Nickname0], [t2].[HasSoulPatch], [t2].[SquadId] AS [SquadId0], [w].[OwnerFullName] + SELECT [w].[Id], [t0].[Nickname], [t0].[SquadId], [s].[Id] AS [Id0], [t1].[Nickname] AS [Nickname0], [t1].[HasSoulPatch], [t1].[SquadId] AS [SquadId0], [w].[OwnerFullName] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[FullName] @@ -6623,9 +6623,9 @@ FROM [Gears] AS [g1] UNION ALL SELECT [o1].[Nickname], [o1].[SquadId], [o1].[HasSoulPatch] FROM [Officers] AS [o1] - ) AS [t2] ON [s].[Id] = [t2].[SquadId] -) AS [t1] ON [t].[FullName] = [t1].[OwnerFullName] -ORDER BY [t].[FullName], [t].[Nickname] DESC, [t].[SquadId], [t1].[Id], [t1].[Nickname], [t1].[SquadId], [t1].[Id0], [t1].[Nickname0] + ) AS [t1] ON [s].[Id] = [t1].[SquadId] +) AS [t2] ON [t].[FullName] = [t2].[OwnerFullName] +ORDER BY [t].[FullName], [t].[Nickname] DESC, [t].[SquadId], [t2].[Id], [t2].[Nickname], [t2].[SquadId], [t2].[Id0], [t2].[Nickname0] """); } @@ -6635,13 +6635,13 @@ public override async Task Correlated_collections_with_funky_orderby_complex_sce AssertSql( """ -SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t3].[FullName], [t3].[Nickname], [t3].[SquadId], [t3].[Id], [t3].[Nickname0], [t3].[SquadId0], [t3].[Id0], [t3].[Nickname00], [t3].[HasSoulPatch], [t3].[SquadId00] +SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t4].[FullName], [t4].[Nickname], [t4].[SquadId], [t4].[Id], [t4].[Nickname0], [t4].[SquadId0], [t4].[Id0], [t4].[Nickname00], [t4].[HasSoulPatch], [t4].[SquadId00] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName], [o].[HasSoulPatch], [o].[LeaderNickname] FROM [Officers] AS [o] ) AS [t] LEFT JOIN ( - SELECT [t0].[FullName], [t0].[Nickname], [t0].[SquadId], [t1].[Id], [t1].[Nickname] AS [Nickname0], [t1].[SquadId] AS [SquadId0], [t1].[Id0], [t1].[Nickname0] AS [Nickname00], [t1].[HasSoulPatch], [t1].[SquadId0] AS [SquadId00], [t0].[HasSoulPatch] AS [HasSoulPatch0], [t1].[IsAutomatic], [t1].[Name], [t0].[LeaderNickname], [t0].[LeaderSquadId] + SELECT [t0].[FullName], [t0].[Nickname], [t0].[SquadId], [t3].[Id], [t3].[Nickname] AS [Nickname0], [t3].[SquadId] AS [SquadId0], [t3].[Id0], [t3].[Nickname0] AS [Nickname00], [t3].[HasSoulPatch], [t3].[SquadId0] AS [SquadId00], [t0].[HasSoulPatch] AS [HasSoulPatch0], [t3].[IsAutomatic], [t3].[Name], [t0].[LeaderNickname], [t0].[LeaderSquadId] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId] FROM [Gears] AS [g] @@ -6650,7 +6650,7 @@ UNION ALL FROM [Officers] AS [o0] ) AS [t0] LEFT JOIN ( - SELECT [w].[Id], [t2].[Nickname], [t2].[SquadId], [s].[Id] AS [Id0], [t4].[Nickname] AS [Nickname0], [t4].[HasSoulPatch], [t4].[SquadId] AS [SquadId0], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName] + SELECT [w].[Id], [t1].[Nickname], [t1].[SquadId], [s].[Id] AS [Id0], [t2].[Nickname] AS [Nickname0], [t2].[HasSoulPatch], [t2].[SquadId] AS [SquadId0], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[FullName] @@ -6658,18 +6658,18 @@ FROM [Gears] AS [g0] UNION ALL SELECT [o1].[Nickname], [o1].[SquadId], [o1].[FullName] FROM [Officers] AS [o1] - ) AS [t2] ON [w].[OwnerFullName] = [t2].[FullName] - LEFT JOIN [Squads] AS [s] ON [t2].[SquadId] = [s].[Id] + ) AS [t1] ON [w].[OwnerFullName] = [t1].[FullName] + LEFT JOIN [Squads] AS [s] ON [t1].[SquadId] = [s].[Id] LEFT JOIN ( SELECT [g1].[Nickname], [g1].[SquadId], [g1].[HasSoulPatch] FROM [Gears] AS [g1] UNION ALL SELECT [o2].[Nickname], [o2].[SquadId], [o2].[HasSoulPatch] FROM [Officers] AS [o2] - ) AS [t4] ON [s].[Id] = [t4].[SquadId] - ) AS [t1] ON [t0].[FullName] = [t1].[OwnerFullName] -) AS [t3] ON [t].[Nickname] = [t3].[LeaderNickname] AND [t].[SquadId] = [t3].[LeaderSquadId] -ORDER BY [t].[HasSoulPatch], [t].[LeaderNickname], [t].[FullName], [t].[Nickname], [t].[SquadId], [t3].[FullName], [t3].[HasSoulPatch0] DESC, [t3].[Nickname], [t3].[SquadId], [t3].[IsAutomatic], [t3].[Name] DESC, [t3].[Id], [t3].[Nickname0], [t3].[SquadId0], [t3].[Id0], [t3].[Nickname00] + ) AS [t2] ON [s].[Id] = [t2].[SquadId] + ) AS [t3] ON [t0].[FullName] = [t3].[OwnerFullName] +) AS [t4] ON [t].[Nickname] = [t4].[LeaderNickname] AND [t].[SquadId] = [t4].[LeaderSquadId] +ORDER BY [t].[HasSoulPatch], [t].[LeaderNickname], [t].[FullName], [t].[Nickname], [t].[SquadId], [t4].[FullName], [t4].[HasSoulPatch0] DESC, [t4].[Nickname], [t4].[SquadId], [t4].[IsAutomatic], [t4].[Name] DESC, [t4].[Id], [t4].[Nickname0], [t4].[SquadId0], [t4].[Id0], [t4].[Nickname00] """); } @@ -6899,13 +6899,13 @@ public override async Task Outer_parameter_in_join_key(bool async) AssertSql( """ -SELECT [t].[Nickname], [t].[SquadId], [t1].[Note], [t1].[Id], [t1].[Nickname], [t1].[SquadId] +SELECT [t].[Nickname], [t].[SquadId], [t2].[Note], [t2].[Id], [t2].[Nickname], [t2].[SquadId] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName] FROM [Officers] AS [o] ) AS [t] OUTER APPLY ( - SELECT [t0].[Note], [t0].[Id], [t2].[Nickname], [t2].[SquadId] + SELECT [t0].[Note], [t0].[Id], [t1].[Nickname], [t1].[SquadId] FROM [Tags] AS [t0] INNER JOIN ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName] @@ -6913,9 +6913,9 @@ FROM [Gears] AS [g] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[FullName] FROM [Officers] AS [o0] - ) AS [t2] ON [t].[FullName] = [t2].[FullName] -) AS [t1] -ORDER BY [t].[Nickname], [t].[SquadId], [t1].[Id], [t1].[Nickname] + ) AS [t1] ON [t].[FullName] = [t1].[FullName] +) AS [t2] +ORDER BY [t].[Nickname], [t].[SquadId], [t2].[Id], [t2].[Nickname] """); } @@ -6925,13 +6925,13 @@ public override async Task Outer_parameter_in_join_key_inner_and_outer(bool asyn AssertSql( """ -SELECT [t].[Nickname], [t].[SquadId], [t1].[Note], [t1].[Id], [t1].[Nickname], [t1].[SquadId] +SELECT [t].[Nickname], [t].[SquadId], [t2].[Note], [t2].[Id], [t2].[Nickname], [t2].[SquadId] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName] FROM [Officers] AS [o] ) AS [t] OUTER APPLY ( - SELECT [t0].[Note], [t0].[Id], [t2].[Nickname], [t2].[SquadId] + SELECT [t0].[Note], [t0].[Id], [t1].[Nickname], [t1].[SquadId] FROM [Tags] AS [t0] INNER JOIN ( SELECT [g].[Nickname], [g].[SquadId] @@ -6939,9 +6939,9 @@ FROM [Gears] AS [g] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId] FROM [Officers] AS [o0] - ) AS [t2] ON [t].[FullName] = [t].[Nickname] -) AS [t1] -ORDER BY [t].[Nickname], [t].[SquadId], [t1].[Id], [t1].[Nickname] + ) AS [t1] ON [t].[FullName] = [t].[Nickname] +) AS [t2] +ORDER BY [t].[Nickname], [t].[SquadId], [t2].[Id], [t2].[Nickname] """); } @@ -6951,13 +6951,13 @@ public override async Task Outer_parameter_in_group_join_with_DefaultIfEmpty(boo AssertSql( """ -SELECT [t].[Nickname], [t].[SquadId], [t1].[Note], [t1].[Id], [t1].[Nickname], [t1].[SquadId] +SELECT [t].[Nickname], [t].[SquadId], [t2].[Note], [t2].[Id], [t2].[Nickname], [t2].[SquadId] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName] FROM [Officers] AS [o] ) AS [t] OUTER APPLY ( - SELECT [t0].[Note], [t0].[Id], [t2].[Nickname], [t2].[SquadId] + SELECT [t0].[Note], [t0].[Id], [t1].[Nickname], [t1].[SquadId] FROM [Tags] AS [t0] LEFT JOIN ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName] @@ -6965,9 +6965,9 @@ FROM [Gears] AS [g] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[FullName] FROM [Officers] AS [o0] - ) AS [t2] ON [t].[FullName] = [t2].[FullName] -) AS [t1] -ORDER BY [t].[Nickname], [t].[SquadId], [t1].[Id], [t1].[Nickname] + ) AS [t1] ON [t].[FullName] = [t1].[FullName] +) AS [t2] +ORDER BY [t].[Nickname], [t].[SquadId], [t2].[Id], [t2].[Nickname] """); } @@ -7167,7 +7167,7 @@ public override async Task Join_on_entity_qsre_keys_inner_key_is_navigation_comp AssertSql( """ -SELECT [t].[Nickname], [t1].[Note] +SELECT [t].[Nickname], [t2].[Note] FROM ( SELECT [g].[Nickname], [g].[SquadId] FROM [Gears] AS [g] @@ -7176,7 +7176,7 @@ UNION ALL FROM [Officers] AS [o] ) AS [t] INNER JOIN ( - SELECT [t0].[Note], [t2].[Nickname], [t2].[SquadId] + SELECT [t0].[Note], [t1].[Nickname], [t1].[SquadId] FROM [Tags] AS [t0] LEFT JOIN ( SELECT [g0].[Nickname], [g0].[SquadId] @@ -7184,9 +7184,9 @@ FROM [Gears] AS [g0] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId] FROM [Officers] AS [o0] - ) AS [t2] ON [t0].[GearNickName] = [t2].[Nickname] AND [t0].[GearSquadId] = [t2].[SquadId] + ) AS [t1] ON [t0].[GearNickName] = [t1].[Nickname] AND [t0].[GearSquadId] = [t1].[SquadId] WHERE [t0].[Note] IN (N'Cole''s Tag', N'Dom''s Tag') -) AS [t1] ON [t].[Nickname] = [t1].[Nickname] AND [t].[SquadId] = [t1].[SquadId] +) AS [t2] ON [t].[Nickname] = [t2].[Nickname] AND [t].[SquadId] = [t2].[SquadId] """); } @@ -7639,26 +7639,26 @@ public override async Task Correlated_collection_with_complex_OrderBy(bool async AssertSql( """ -SELECT [t].[Nickname], [t].[SquadId], [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator] +SELECT [t].[Nickname], [t].[SquadId], [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName] FROM [Officers] AS [o] ) AS [t] LEFT JOIN ( - SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[AssignedCityName], [o0].[CityOfBirthName], [o0].[FullName], [o0].[HasSoulPatch], [o0].[LeaderNickname], [o0].[LeaderSquadId], [o0].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o0] - ) AS [t1] - WHERE [t1].[HasSoulPatch] = CAST(0 AS bit) -) AS [t0] ON [t].[Nickname] = [t0].[LeaderNickname] AND [t].[SquadId] = [t0].[LeaderSquadId] + ) AS [t0] + WHERE [t0].[HasSoulPatch] = CAST(0 AS bit) +) AS [t1] ON [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId] ORDER BY ( SELECT COUNT(*) FROM [Weapons] AS [w] - WHERE [t].[FullName] = [w].[OwnerFullName]), [t].[Nickname], [t].[SquadId], [t0].[Nickname] + WHERE [t].[FullName] = [w].[OwnerFullName]), [t].[Nickname], [t].[SquadId], [t1].[Nickname] """); } @@ -7668,22 +7668,22 @@ public override async Task Correlated_collection_with_very_complex_order_by(bool AssertSql( """ -SELECT [t].[Nickname], [t].[SquadId], [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator] +SELECT [t].[Nickname], [t].[SquadId], [t2].[Nickname], [t2].[SquadId], [t2].[AssignedCityName], [t2].[CityOfBirthName], [t2].[FullName], [t2].[HasSoulPatch], [t2].[LeaderNickname], [t2].[LeaderSquadId], [t2].[Rank], [t2].[Discriminator] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName] FROM [Officers] AS [o] ) AS [t] LEFT JOIN ( - SELECT [t2].[Nickname], [t2].[SquadId], [t2].[AssignedCityName], [t2].[CityOfBirthName], [t2].[FullName], [t2].[HasSoulPatch], [t2].[LeaderNickname], [t2].[LeaderSquadId], [t2].[Rank], [t2].[Discriminator] + SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[AssignedCityName], [o0].[CityOfBirthName], [o0].[FullName], [o0].[HasSoulPatch], [o0].[LeaderNickname], [o0].[LeaderSquadId], [o0].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o0] - ) AS [t2] - WHERE [t2].[HasSoulPatch] = CAST(0 AS bit) -) AS [t1] ON [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId] + ) AS [t1] + WHERE [t1].[HasSoulPatch] = CAST(0 AS bit) +) AS [t2] ON [t].[Nickname] = [t2].[LeaderNickname] AND [t].[SquadId] = [t2].[LeaderSquadId] ORDER BY ( SELECT COUNT(*) FROM [Weapons] AS [w] @@ -7696,7 +7696,7 @@ UNION ALL SELECT [o1].[Nickname], [o1].[HasSoulPatch] FROM [Officers] AS [o1] ) AS [t0] - WHERE [t0].[Nickname] = N'Marcus'), CAST(0 AS bit))), [t].[Nickname], [t].[SquadId], [t1].[Nickname] + WHERE [t0].[Nickname] = N'Marcus'), CAST(0 AS bit))), [t].[Nickname], [t].[SquadId], [t2].[Nickname] """); } @@ -8363,7 +8363,7 @@ public override async Task Group_by_with_include_with_entity_in_result_selector( AssertSql( """ -SELECT [t0].[Rank], [t0].[c], [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator], [t1].[Name], [t1].[Location], [t1].[Nation] +SELECT [t1].[Rank], [t1].[c], [t3].[Nickname], [t3].[SquadId], [t3].[AssignedCityName], [t3].[CityOfBirthName], [t3].[FullName], [t3].[HasSoulPatch], [t3].[LeaderNickname], [t3].[LeaderSquadId], [t3].[Rank], [t3].[Discriminator], [t3].[Name], [t3].[Location], [t3].[Nation] FROM ( SELECT [t].[Rank], COUNT(*) AS [c] FROM ( @@ -8374,23 +8374,23 @@ SELECT [o].[Rank] FROM [Officers] AS [o] ) AS [t] GROUP BY [t].[Rank] -) AS [t0] +) AS [t1] LEFT JOIN ( SELECT [t2].[Nickname], [t2].[SquadId], [t2].[AssignedCityName], [t2].[CityOfBirthName], [t2].[FullName], [t2].[HasSoulPatch], [t2].[LeaderNickname], [t2].[LeaderSquadId], [t2].[Rank], [t2].[Discriminator], [t2].[Name], [t2].[Location], [t2].[Nation] FROM ( - SELECT [t3].[Nickname], [t3].[SquadId], [t3].[AssignedCityName], [t3].[CityOfBirthName], [t3].[FullName], [t3].[HasSoulPatch], [t3].[LeaderNickname], [t3].[LeaderSquadId], [t3].[Rank], [t3].[Discriminator], [c].[Name], [c].[Location], [c].[Nation], ROW_NUMBER() OVER(PARTITION BY [t3].[Rank] ORDER BY [t3].[Nickname]) AS [row] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator], [c].[Name], [c].[Location], [c].[Nation], ROW_NUMBER() OVER(PARTITION BY [t0].[Rank] ORDER BY [t0].[Nickname]) AS [row] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g0] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[AssignedCityName], [o0].[CityOfBirthName], [o0].[FullName], [o0].[HasSoulPatch], [o0].[LeaderNickname], [o0].[LeaderSquadId], [o0].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o0] - ) AS [t3] - INNER JOIN [Cities] AS [c] ON [t3].[CityOfBirthName] = [c].[Name] + ) AS [t0] + INNER JOIN [Cities] AS [c] ON [t0].[CityOfBirthName] = [c].[Name] ) AS [t2] WHERE [t2].[row] <= 1 -) AS [t1] ON [t0].[Rank] = [t1].[Rank] -ORDER BY [t0].[Rank] +) AS [t3] ON [t1].[Rank] = [t3].[Rank] +ORDER BY [t1].[Rank] """); } @@ -8418,7 +8418,7 @@ public override async Task Include_with_group_by_and_FirstOrDefault_gets_properl AssertSql( """ -SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator], [t1].[Name], [t1].[Location], [t1].[Nation] +SELECT [t3].[Nickname], [t3].[SquadId], [t3].[AssignedCityName], [t3].[CityOfBirthName], [t3].[FullName], [t3].[HasSoulPatch], [t3].[LeaderNickname], [t3].[LeaderSquadId], [t3].[Rank], [t3].[Discriminator], [t3].[Name], [t3].[Location], [t3].[Nation] FROM ( SELECT [t].[Rank] FROM ( @@ -8429,23 +8429,23 @@ SELECT [o].[Rank] FROM [Officers] AS [o] ) AS [t] GROUP BY [t].[Rank] -) AS [t0] +) AS [t1] LEFT JOIN ( SELECT [t2].[Nickname], [t2].[SquadId], [t2].[AssignedCityName], [t2].[CityOfBirthName], [t2].[FullName], [t2].[HasSoulPatch], [t2].[LeaderNickname], [t2].[LeaderSquadId], [t2].[Rank], [t2].[Discriminator], [t2].[Name], [t2].[Location], [t2].[Nation] FROM ( - SELECT [t3].[Nickname], [t3].[SquadId], [t3].[AssignedCityName], [t3].[CityOfBirthName], [t3].[FullName], [t3].[HasSoulPatch], [t3].[LeaderNickname], [t3].[LeaderSquadId], [t3].[Rank], [t3].[Discriminator], [c].[Name], [c].[Location], [c].[Nation], ROW_NUMBER() OVER(PARTITION BY [t3].[Rank] ORDER BY [t3].[Nickname], [t3].[SquadId], [c].[Name]) AS [row] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator], [c].[Name], [c].[Location], [c].[Nation], ROW_NUMBER() OVER(PARTITION BY [t0].[Rank] ORDER BY [t0].[Nickname], [t0].[SquadId], [c].[Name]) AS [row] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g0] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[AssignedCityName], [o0].[CityOfBirthName], [o0].[FullName], [o0].[HasSoulPatch], [o0].[LeaderNickname], [o0].[LeaderSquadId], [o0].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o0] - ) AS [t3] - INNER JOIN [Cities] AS [c] ON [t3].[CityOfBirthName] = [c].[Name] - WHERE [t3].[HasSoulPatch] = CAST(1 AS bit) + ) AS [t0] + INNER JOIN [Cities] AS [c] ON [t0].[CityOfBirthName] = [c].[Name] + WHERE [t0].[HasSoulPatch] = CAST(1 AS bit) ) AS [t2] WHERE [t2].[row] <= 1 -) AS [t1] ON [t0].[Rank] = [t1].[Rank] +) AS [t3] ON [t1].[Rank] = [t3].[Rank] """); } @@ -8903,7 +8903,7 @@ public override async Task Anonymous_projection_take_followed_by_projecting_sing """ @__p_0='25' -SELECT [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] +SELECT [t2].[Id], [t2].[AmmunitionType], [t2].[IsAutomatic], [t2].[Name], [t2].[OwnerFullName], [t2].[SynergyWithId] FROM ( SELECT TOP(@__p_0) [t].[FullName] FROM ( @@ -8915,13 +8915,13 @@ FROM [Officers] AS [o] ) AS [t] ) AS [t0] LEFT JOIN ( - SELECT [t2].[Id], [t2].[AmmunitionType], [t2].[IsAutomatic], [t2].[Name], [t2].[OwnerFullName], [t2].[SynergyWithId] + SELECT [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] FROM ( SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], ROW_NUMBER() OVER(PARTITION BY [w].[OwnerFullName] ORDER BY [w].[Id]) AS [row] FROM [Weapons] AS [w] - ) AS [t2] - WHERE [t2].[row] <= 1 -) AS [t1] ON [t0].[FullName] = [t1].[OwnerFullName] + ) AS [t1] + WHERE [t1].[row] <= 1 +) AS [t2] ON [t0].[FullName] = [t2].[OwnerFullName] """); } @@ -9040,7 +9040,7 @@ public override async Task Project_collection_navigation_nested_with_take_compos AssertSql( """ -SELECT [t].[Id], [t0].[Nickname], [t0].[SquadId], [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator] +SELECT [t].[Id], [t0].[Nickname], [t0].[SquadId], [t3].[Nickname], [t3].[SquadId], [t3].[AssignedCityName], [t3].[CityOfBirthName], [t3].[FullName], [t3].[HasSoulPatch], [t3].[LeaderNickname], [t3].[LeaderSquadId], [t3].[Rank], [t3].[Discriminator] FROM [Tags] AS [t] LEFT JOIN ( SELECT [g].[Nickname], [g].[SquadId], N'Gear' AS [Discriminator] @@ -9052,19 +9052,19 @@ FROM [Officers] AS [o] LEFT JOIN ( SELECT [t2].[Nickname], [t2].[SquadId], [t2].[AssignedCityName], [t2].[CityOfBirthName], [t2].[FullName], [t2].[HasSoulPatch], [t2].[LeaderNickname], [t2].[LeaderSquadId], [t2].[Rank], [t2].[Discriminator] FROM ( - SELECT [t3].[Nickname], [t3].[SquadId], [t3].[AssignedCityName], [t3].[CityOfBirthName], [t3].[FullName], [t3].[HasSoulPatch], [t3].[LeaderNickname], [t3].[LeaderSquadId], [t3].[Rank], [t3].[Discriminator], ROW_NUMBER() OVER(PARTITION BY [t3].[LeaderNickname], [t3].[LeaderSquadId] ORDER BY [t3].[Nickname], [t3].[SquadId]) AS [row] + SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator], ROW_NUMBER() OVER(PARTITION BY [t1].[LeaderNickname], [t1].[LeaderSquadId] ORDER BY [t1].[Nickname], [t1].[SquadId]) AS [row] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g0] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[AssignedCityName], [o0].[CityOfBirthName], [o0].[FullName], [o0].[HasSoulPatch], [o0].[LeaderNickname], [o0].[LeaderSquadId], [o0].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o0] - ) AS [t3] + ) AS [t1] ) AS [t2] WHERE [t2].[row] <= 50 -) AS [t1] ON ([t0].[Nickname] = [t1].[LeaderNickname] OR ([t0].[Nickname] IS NULL AND [t1].[LeaderNickname] IS NULL)) AND [t0].[SquadId] = [t1].[LeaderSquadId] +) AS [t3] ON ([t0].[Nickname] = [t3].[LeaderNickname] OR ([t0].[Nickname] IS NULL AND [t3].[LeaderNickname] IS NULL)) AND [t0].[SquadId] = [t3].[LeaderSquadId] WHERE [t0].[Discriminator] = N'Officer' -ORDER BY [t].[Id], [t0].[Nickname], [t0].[SquadId], [t1].[Nickname] +ORDER BY [t].[Id], [t0].[Nickname], [t0].[SquadId], [t3].[Nickname] """); } @@ -9391,7 +9391,7 @@ public override async Task Accessing_property_of_optional_navigation_in_child_pr SELECT CASE WHEN [t0].[Nickname] IS NOT NULL AND [t0].[SquadId] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) -END, [t].[Id], [t0].[Nickname], [t0].[SquadId], [t1].[Nickname], [t1].[Id], [t1].[SquadId] +END, [t].[Id], [t0].[Nickname], [t0].[SquadId], [t2].[Nickname], [t2].[Id], [t2].[SquadId] FROM [Tags] AS [t] LEFT JOIN ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName] @@ -9401,7 +9401,7 @@ UNION ALL FROM [Officers] AS [o] ) AS [t0] ON [t].[GearNickName] = [t0].[Nickname] AND [t].[GearSquadId] = [t0].[SquadId] LEFT JOIN ( - SELECT [t2].[Nickname], [w].[Id], [t2].[SquadId], [w].[OwnerFullName] + SELECT [t1].[Nickname], [w].[Id], [t1].[SquadId], [w].[OwnerFullName] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[FullName] @@ -9409,9 +9409,9 @@ FROM [Gears] AS [g0] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[FullName] FROM [Officers] AS [o0] - ) AS [t2] ON [w].[OwnerFullName] = [t2].[FullName] -) AS [t1] ON [t0].[FullName] = [t1].[OwnerFullName] -ORDER BY [t].[Note], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t1].[Id], [t1].[Nickname] + ) AS [t1] ON [w].[OwnerFullName] = [t1].[FullName] +) AS [t2] ON [t0].[FullName] = [t2].[OwnerFullName] +ORDER BY [t].[Note], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t2].[Id], [t2].[Nickname] """); } @@ -9465,7 +9465,7 @@ public override async Task Query_reusing_parameter_with_inner_query_doesnt_decla """ @__squadId_0='1' -SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator] +SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator] FROM ( SELECT [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOfBirthName], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank], [t].[Discriminator] FROM ( @@ -9482,22 +9482,22 @@ FROM [Squads] AS [s0] WHERE [s0].[Id] = @__squadId_0 ) UNION ALL - SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g0] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[AssignedCityName], [o0].[CityOfBirthName], [o0].[FullName], [o0].[HasSoulPatch], [o0].[LeaderNickname], [o0].[LeaderSquadId], [o0].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o0] - ) AS [t1] - INNER JOIN [Squads] AS [s1] ON [t1].[SquadId] = [s1].[Id] + ) AS [t0] + INNER JOIN [Squads] AS [s1] ON [t0].[SquadId] = [s1].[Id] WHERE [s1].[Id] IN ( SELECT [s2].[Id] FROM [Squads] AS [s2] WHERE [s2].[Id] = @__squadId_0 ) -) AS [t0] -ORDER BY [t0].[FullName] +) AS [t1] +ORDER BY [t1].[FullName] """); } @@ -9557,7 +9557,7 @@ public override async Task Complex_GroupBy_after_set_operator(bool async) AssertSql( """ -SELECT [t0].[Name], [t0].[Count], COALESCE(SUM([t0].[Count]), 0) AS [Sum] +SELECT [t1].[Name], [t1].[Count], COALESCE(SUM([t1].[Count]), 0) AS [Sum] FROM ( SELECT [c].[Name], ( SELECT COUNT(*) @@ -9575,17 +9575,17 @@ UNION ALL SELECT [c0].[Name], ( SELECT COUNT(*) FROM [Weapons] AS [w0] - WHERE [t1].[FullName] = [w0].[OwnerFullName]) AS [Count] + WHERE [t0].[FullName] = [w0].[OwnerFullName]) AS [Count] FROM ( SELECT [g0].[CityOfBirthName], [g0].[FullName] FROM [Gears] AS [g0] UNION ALL SELECT [o0].[CityOfBirthName], [o0].[FullName] FROM [Officers] AS [o0] - ) AS [t1] - INNER JOIN [Cities] AS [c0] ON [t1].[CityOfBirthName] = [c0].[Name] -) AS [t0] -GROUP BY [t0].[Name], [t0].[Count] + ) AS [t0] + INNER JOIN [Cities] AS [c0] ON [t0].[CityOfBirthName] = [c0].[Name] +) AS [t1] +GROUP BY [t1].[Name], [t1].[Count] """); } @@ -9595,7 +9595,7 @@ public override async Task Complex_GroupBy_after_set_operator_using_result_selec AssertSql( """ -SELECT [t0].[Name], [t0].[Count], COALESCE(SUM([t0].[Count]), 0) AS [Sum] +SELECT [t1].[Name], [t1].[Count], COALESCE(SUM([t1].[Count]), 0) AS [Sum] FROM ( SELECT [c].[Name], ( SELECT COUNT(*) @@ -9613,17 +9613,17 @@ UNION ALL SELECT [c0].[Name], ( SELECT COUNT(*) FROM [Weapons] AS [w0] - WHERE [t1].[FullName] = [w0].[OwnerFullName]) AS [Count] + WHERE [t0].[FullName] = [w0].[OwnerFullName]) AS [Count] FROM ( SELECT [g0].[CityOfBirthName], [g0].[FullName] FROM [Gears] AS [g0] UNION ALL SELECT [o0].[CityOfBirthName], [o0].[FullName] FROM [Officers] AS [o0] - ) AS [t1] - INNER JOIN [Cities] AS [c0] ON [t1].[CityOfBirthName] = [c0].[Name] -) AS [t0] -GROUP BY [t0].[Name], [t0].[Count] + ) AS [t0] + INNER JOIN [Cities] AS [c0] ON [t0].[CityOfBirthName] = [c0].[Name] +) AS [t1] +GROUP BY [t1].[Name], [t1].[Count] """); } @@ -10549,8 +10549,8 @@ FROM [LocustLeaders] AS [l1] UNION ALL SELECT [l2].[ThreatLevelNullableByte] FROM [LocustCommanders] AS [l2] - ) AS [t0] - WHERE [t0].[ThreatLevelNullableByte] = [t].[ThreatLevelNullableByte] OR ([t0].[ThreatLevelNullableByte] IS NULL AND [t].[ThreatLevelNullableByte] IS NULL)) + ) AS [t1] + WHERE [t1].[ThreatLevelNullableByte] = [t].[ThreatLevelNullableByte] OR ([t1].[ThreatLevelNullableByte] IS NULL AND [t].[ThreatLevelNullableByte] IS NULL)) """); } @@ -10576,8 +10576,8 @@ FROM [LocustLeaders] AS [l1] UNION ALL SELECT [l2].[ThreatLevelNullableByte] FROM [LocustCommanders] AS [l2] - ) AS [t0] - WHERE [t0].[ThreatLevelNullableByte] IS NULL) + ) AS [t1] + WHERE [t1].[ThreatLevelNullableByte] IS NULL) """); } @@ -10603,8 +10603,8 @@ FROM [LocustLeaders] AS [l1] UNION ALL SELECT [l2].[ThreatLevelNullableByte] FROM [LocustCommanders] AS [l2] - ) AS [t0] - WHERE [t0].[ThreatLevelNullableByte] IS NULL) + ) AS [t1] + WHERE [t1].[ThreatLevelNullableByte] IS NULL) """); } @@ -10728,8 +10728,8 @@ FROM [LocustLeaders] AS [l1] UNION ALL SELECT [l2].[ThreatLevelNullableByte] FROM [LocustCommanders] AS [l2] - ) AS [t2] - WHERE [t2].[ThreatLevelNullableByte] = [t].[ThreatLevelNullableByte] OR ([t2].[ThreatLevelNullableByte] IS NULL AND [t].[ThreatLevelNullableByte] IS NULL)) + ) AS [t4] + WHERE [t4].[ThreatLevelNullableByte] = [t].[ThreatLevelNullableByte] OR ([t4].[ThreatLevelNullableByte] IS NULL AND [t].[ThreatLevelNullableByte] IS NULL)) ) AS [t1] """); } @@ -10765,8 +10765,8 @@ FROM [LocustLeaders] AS [l1] UNION ALL SELECT [l2].[ThreatLevelNullableByte] FROM [LocustCommanders] AS [l2] - ) AS [t2] - WHERE [t2].[ThreatLevelNullableByte] = [t].[ThreatLevelNullableByte] OR ([t2].[ThreatLevelNullableByte] IS NULL AND [t].[ThreatLevelNullableByte] IS NULL)) + ) AS [t4] + WHERE [t4].[ThreatLevelNullableByte] = [t].[ThreatLevelNullableByte] OR ([t4].[ThreatLevelNullableByte] IS NULL AND [t].[ThreatLevelNullableByte] IS NULL)) ) AS [t1] """); } @@ -11112,23 +11112,23 @@ public override async Task Correlated_collection_with_inner_collection_reference AssertSql( """ -SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t0].[ReportName], [t0].[OfficerName], [t0].[Nickname], [t0].[SquadId] +SELECT [t].[FullName], [t].[Nickname], [t].[SquadId], [t1].[ReportName], [t1].[OfficerName], [t1].[Nickname], [t1].[SquadId] FROM ( SELECT [o].[Nickname], [o].[SquadId], [o].[FullName] FROM [Officers] AS [o] ) AS [t] OUTER APPLY ( - SELECT [t1].[FullName] AS [ReportName], [t].[FullName] AS [OfficerName], [t1].[Nickname], [t1].[SquadId] + SELECT [t0].[FullName] AS [ReportName], [t].[FullName] AS [OfficerName], [t0].[Nickname], [t0].[SquadId] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId] FROM [Gears] AS [g] UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[FullName], [o0].[LeaderNickname], [o0].[LeaderSquadId] FROM [Officers] AS [o0] - ) AS [t1] - WHERE [t].[Nickname] = [t1].[LeaderNickname] AND [t].[SquadId] = [t1].[LeaderSquadId] -) AS [t0] -ORDER BY [t].[Nickname], [t].[SquadId], [t0].[Nickname] + ) AS [t0] + WHERE [t].[Nickname] = [t0].[LeaderNickname] AND [t].[SquadId] = [t0].[LeaderSquadId] +) AS [t1] +ORDER BY [t].[Nickname], [t].[SquadId], [t1].[Nickname] """); } @@ -11193,7 +11193,7 @@ public override async Task Correlated_collection_take(bool async) AssertSql( """ -SELECT [t].[Nickname], [t].[SquadId], [c].[Name], [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[SynergyWithId], [c].[Location], [c].[Nation] +SELECT [t].[Nickname], [t].[SquadId], [c].[Name], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId], [c].[Location], [c].[Nation] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[CityOfBirthName], [g].[FullName] FROM [Gears] AS [g] @@ -11203,13 +11203,13 @@ FROM [Officers] AS [o] ) AS [t] INNER JOIN [Cities] AS [c] ON [t].[CityOfBirthName] = [c].[Name] LEFT JOIN ( - SELECT [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] + SELECT [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[SynergyWithId] FROM ( SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], ROW_NUMBER() OVER(PARTITION BY [w].[OwnerFullName] ORDER BY [w].[Id]) AS [row] FROM [Weapons] AS [w] - ) AS [t1] - WHERE [t1].[row] <= 10 -) AS [t0] ON [t].[FullName] = [t0].[OwnerFullName] + ) AS [t0] + WHERE [t0].[row] <= 10 +) AS [t1] ON [t].[FullName] = [t1].[OwnerFullName] ORDER BY [t].[Nickname], [t].[SquadId], [c].[Name] """); } @@ -11926,7 +11926,7 @@ public override async Task Join_entity_with_itself_grouped_by_key_followed_by_in SELECT [t2].[Nickname], [t2].[SquadId], [t2].[AssignedCityName], [t2].[CityOfBirthName], [t2].[FullName], [t2].[HasSoulPatch], [t2].[LeaderNickname], [t2].[LeaderSquadId], [t2].[Rank], [t2].[Discriminator], [t2].[HasSoulPatch0], [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM ( - SELECT [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOfBirthName], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank], [t].[Discriminator], [t0].[HasSoulPatch] AS [HasSoulPatch0] + SELECT [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOfBirthName], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank], [t].[Discriminator], [t1].[HasSoulPatch] AS [HasSoulPatch0] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g] @@ -11935,17 +11935,17 @@ UNION ALL FROM [Officers] AS [o] ) AS [t] INNER JOIN ( - SELECT MIN(CAST(LEN([t1].[Nickname]) AS int)) AS [c], [t1].[HasSoulPatch] + SELECT MIN(CAST(LEN([t0].[Nickname]) AS int)) AS [c], [t0].[HasSoulPatch] FROM ( SELECT [g0].[Nickname], [g0].[HasSoulPatch] FROM [Gears] AS [g0] UNION ALL SELECT [o0].[Nickname], [o0].[HasSoulPatch] FROM [Officers] AS [o0] - ) AS [t1] - WHERE [t1].[Nickname] <> N'Dom' - GROUP BY [t1].[HasSoulPatch] - ) AS [t0] ON CAST(LEN([t].[Nickname]) AS int) = [t0].[c] + ) AS [t0] + WHERE [t0].[Nickname] <> N'Dom' + GROUP BY [t0].[HasSoulPatch] + ) AS [t1] ON CAST(LEN([t].[Nickname]) AS int) = [t1].[c] ORDER BY [t].[Nickname] OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY ) AS [t2] @@ -12068,7 +12068,7 @@ public override async Task Project_entity_and_collection_element(bool async) AssertSql( """ -SELECT [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOfBirthName], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank], [t].[Discriminator], [s].[Id], [s].[Banner], [s].[Banner5], [s].[InternalNumber], [s].[Name], [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[SynergyWithId] +SELECT [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOfBirthName], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank], [t].[Discriminator], [s].[Id], [s].[Banner], [s].[Banner5], [s].[InternalNumber], [s].[Name], [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], N'Gear' AS [Discriminator] FROM [Gears] AS [g] @@ -12079,13 +12079,13 @@ FROM [Officers] AS [o] INNER JOIN [Squads] AS [s] ON [t].[SquadId] = [s].[Id] LEFT JOIN [Weapons] AS [w] ON [t].[FullName] = [w].[OwnerFullName] LEFT JOIN ( - SELECT [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] + SELECT [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[SynergyWithId] FROM ( SELECT [w0].[Id], [w0].[AmmunitionType], [w0].[IsAutomatic], [w0].[Name], [w0].[OwnerFullName], [w0].[SynergyWithId], ROW_NUMBER() OVER(PARTITION BY [w0].[OwnerFullName] ORDER BY [w0].[Id]) AS [row] FROM [Weapons] AS [w0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[FullName] = [t0].[OwnerFullName] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[FullName] = [t1].[OwnerFullName] ORDER BY [t].[Nickname], [t].[SquadId], [s].[Id] """); } @@ -12107,7 +12107,7 @@ public override async Task Correlated_collection_via_SelectMany_with_Distinct_mi AssertSql( """ -SELECT [t].[Nickname], [t].[SquadId], [t1].[HasSoulPatch] +SELECT [t].[Nickname], [t].[SquadId], [t2].[HasSoulPatch] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName] FROM [Gears] AS [g] @@ -12116,7 +12116,7 @@ UNION ALL FROM [Officers] AS [o] ) AS [t] OUTER APPLY ( - SELECT DISTINCT [t2].[HasSoulPatch] + SELECT DISTINCT [t1].[HasSoulPatch] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g0].[AssignedCityName], [g0].[FullName] @@ -12132,9 +12132,9 @@ FROM [Gears] AS [g1] UNION ALL SELECT [o1].[CityOfBirthName], [o1].[HasSoulPatch] FROM [Officers] AS [o1] - ) AS [t2] ON [c].[Name] = [t2].[CityOfBirthName] + ) AS [t1] ON [c].[Name] = [t1].[CityOfBirthName] WHERE [t].[FullName] = [w].[OwnerFullName] -) AS [t1] +) AS [t2] ORDER BY [t].[Nickname], [t].[SquadId] """); } @@ -12538,31 +12538,31 @@ public override async Task Correlated_collection_after_distinct_3_levels(bool as AssertSql( """ -SELECT [t].[Id], [t].[Name], [t2].[Nickname], [t2].[FullName], [t2].[HasSoulPatch], [t2].[Id], [t2].[Name], [t2].[Nickname0], [t2].[FullName0], [t2].[HasSoulPatch0], [t2].[Id0] +SELECT [t].[Id], [t].[Name], [t3].[Nickname], [t3].[FullName], [t3].[HasSoulPatch], [t3].[Id], [t3].[Name], [t3].[Nickname0], [t3].[FullName0], [t3].[HasSoulPatch0], [t3].[Id0] FROM ( SELECT DISTINCT [s].[Id], [s].[Name] FROM [Squads] AS [s] ) AS [t] OUTER APPLY ( - SELECT [t0].[Nickname], [t0].[FullName], [t0].[HasSoulPatch], [t1].[Id], [t1].[Name], [t1].[Nickname] AS [Nickname0], [t1].[FullName] AS [FullName0], [t1].[HasSoulPatch] AS [HasSoulPatch0], [t1].[Id0] + SELECT [t1].[Nickname], [t1].[FullName], [t1].[HasSoulPatch], [t2].[Id], [t2].[Name], [t2].[Nickname] AS [Nickname0], [t2].[FullName] AS [FullName0], [t2].[HasSoulPatch] AS [HasSoulPatch0], [t2].[Id0] FROM ( - SELECT DISTINCT [t3].[Nickname], [t3].[FullName], [t3].[HasSoulPatch] + SELECT DISTINCT [t0].[Nickname], [t0].[FullName], [t0].[HasSoulPatch] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName], [g].[HasSoulPatch] FROM [Gears] AS [g] UNION ALL SELECT [o].[Nickname], [o].[SquadId], [o].[FullName], [o].[HasSoulPatch] FROM [Officers] AS [o] - ) AS [t3] - WHERE [t3].[SquadId] = [t].[Id] - ) AS [t0] + ) AS [t0] + WHERE [t0].[SquadId] = [t].[Id] + ) AS [t1] OUTER APPLY ( - SELECT [t].[Id], [t].[Name], [t0].[Nickname], [t0].[FullName], [t0].[HasSoulPatch], [w].[Id] AS [Id0] + SELECT [t].[Id], [t].[Name], [t1].[Nickname], [t1].[FullName], [t1].[HasSoulPatch], [w].[Id] AS [Id0] FROM [Weapons] AS [w] - WHERE [w].[OwnerFullName] = [t0].[FullName] - ) AS [t1] -) AS [t2] -ORDER BY [t].[Id], [t2].[Nickname], [t2].[FullName], [t2].[HasSoulPatch] + WHERE [w].[OwnerFullName] = [t1].[FullName] + ) AS [t2] +) AS [t3] +ORDER BY [t].[Id], [t3].[Nickname], [t3].[FullName], [t3].[HasSoulPatch] """); } @@ -12685,7 +12685,7 @@ await base AssertSql( """ -SELECT [t].[Nickname], [t].[SquadId], [t0].[Key], [t0].[Count] +SELECT [t].[Nickname], [t].[SquadId], [t1].[Key], [t1].[Count] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName] FROM [Gears] AS [g] @@ -12694,14 +12694,14 @@ UNION ALL FROM [Officers] AS [o] ) AS [t] OUTER APPLY ( - SELECT [t1].[Key], COUNT(*) AS [Count] + SELECT [t0].[Key], COUNT(*) AS [Count] FROM ( SELECT CAST(LEN([w].[Name]) AS int) AS [Key] FROM [Weapons] AS [w] WHERE [t].[FullName] = [w].[OwnerFullName] - ) AS [t1] - GROUP BY [t1].[Key] -) AS [t0] + ) AS [t0] + GROUP BY [t0].[Key] +) AS [t1] ORDER BY [t].[Nickname], [t].[SquadId] """); } @@ -13318,9 +13318,9 @@ FROM [Gears] AS [g0] UNION ALL SELECT [o0].[SquadId], [o0].[CityOfBirthName] FROM [Officers] AS [o0] - ) AS [t3] - INNER JOIN [Squads] AS [s0] ON [t3].[SquadId] = [s0].[Id] - INNER JOIN [Cities] AS [c] ON [t3].[CityOfBirthName] = [c].[Name] + ) AS [t1] + INNER JOIN [Squads] AS [s0] ON [t1].[SquadId] = [s0].[Id] + INNER JOIN [Cities] AS [c] ON [t1].[CityOfBirthName] = [c].[Name] WHERE N'Marcus' IN ( SELECT [g1].[Nickname] FROM [Gears] AS [g1] @@ -13405,12 +13405,12 @@ UNION ALL FROM [Officers] AS [o] ) AS [t] WHERE ( - SELECT TOP(1) [w].[Name] - FROM [Weapons] AS [w] - WHERE [t].[FullName] = [w].[OwnerFullName] - ORDER BY [w].[Id]) IN ( - SELECT [w0].[value] - FROM OPENJSON(@__weapons_0) WITH ([value] nvarchar(max) '$') AS [w0] + SELECT TOP(1) [w0].[Name] + FROM [Weapons] AS [w0] + WHERE [t].[FullName] = [w0].[OwnerFullName] + ORDER BY [w0].[Id]) IN ( + SELECT [w].[value] + FROM OPENJSON(@__weapons_0) WITH ([value] nvarchar(max) '$') AS [w] ) """); } @@ -13423,7 +13423,7 @@ public override async Task Subquery_inside_Take_argument(bool async) """ @__numbers_0='[0,1,2]' (Size = 4000) -SELECT [t].[Nickname], [t].[SquadId], [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[SynergyWithId] +SELECT [t].[Nickname], [t].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] FROM ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName] FROM [Gears] AS [g] @@ -13432,18 +13432,18 @@ UNION ALL FROM [Officers] AS [o] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] + SELECT [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[SynergyWithId] FROM ( SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], ROW_NUMBER() OVER(PARTITION BY [w].[OwnerFullName] ORDER BY [w].[Id]) AS [row] FROM [Weapons] AS [w] - ) AS [t1] - WHERE [t1].[row] <= COALESCE(( + ) AS [t0] + WHERE [t0].[row] <= COALESCE(( SELECT [n].[value] FROM OPENJSON(@__numbers_0) WITH ([value] int '$') AS [n] ORDER BY [n].[value] OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY), 0) -) AS [t0] ON [t].[FullName] = [t0].[OwnerFullName] -ORDER BY [t].[Nickname], [t].[SquadId], [t0].[OwnerFullName], [t0].[Id] +) AS [t1] ON [t].[FullName] = [t1].[OwnerFullName] +ORDER BY [t].[Nickname], [t].[SquadId], [t1].[OwnerFullName], [t1].[Id] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TPCInheritanceQuerySqlServerTestBase.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TPCInheritanceQuerySqlServerTestBase.cs index d8766f7720e..f819a5652dc 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TPCInheritanceQuerySqlServerTestBase.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TPCInheritanceQuerySqlServerTestBase.cs @@ -73,19 +73,19 @@ public override async Task Can_include_prey(bool async) AssertSql( """ -SELECT [t].[Id], [t].[CountryId], [t].[Name], [t].[Species], [t].[EagleId], [t].[IsFlightless], [t].[Group], [t0].[Id], [t0].[CountryId], [t0].[Name], [t0].[Species], [t0].[EagleId], [t0].[IsFlightless], [t0].[Group], [t0].[FoundOn], [t0].[Discriminator] +SELECT [t0].[Id], [t0].[CountryId], [t0].[Name], [t0].[Species], [t0].[EagleId], [t0].[IsFlightless], [t0].[Group], [t].[Id], [t].[CountryId], [t].[Name], [t].[Species], [t].[EagleId], [t].[IsFlightless], [t].[Group], [t].[FoundOn], [t].[Discriminator] FROM ( SELECT TOP(2) [e].[Id], [e].[CountryId], [e].[Name], [e].[Species], [e].[EagleId], [e].[IsFlightless], [e].[Group] FROM [Eagle] AS [e] -) AS [t] +) AS [t0] LEFT JOIN ( SELECT [e0].[Id], [e0].[CountryId], [e0].[Name], [e0].[Species], [e0].[EagleId], [e0].[IsFlightless], [e0].[Group], NULL AS [FoundOn], N'Eagle' AS [Discriminator] FROM [Eagle] AS [e0] UNION ALL SELECT [k].[Id], [k].[CountryId], [k].[Name], [k].[Species], [k].[EagleId], [k].[IsFlightless], NULL AS [Group], [k].[FoundOn], N'Kiwi' AS [Discriminator] FROM [Kiwi] AS [k] -) AS [t0] ON [t].[Id] = [t0].[EagleId] -ORDER BY [t].[Id] +) AS [t] ON [t0].[Id] = [t].[EagleId] +ORDER BY [t0].[Id] """); } @@ -173,8 +173,8 @@ UNION ALL SELECT [l].[Id], [l].[SortIndex], NULL AS [CaffeineGrams], NULL AS [CokeCO2], NULL AS [SugarGrams], [l].[LiltCO2], [l].[SugarGrams] AS [SugarGrams0], NULL AS [CaffeineGrams0], NULL AS [HasMilk], N'Lilt' AS [Discriminator] FROM [Lilt] AS [l] UNION ALL -SELECT [t0].[Id], [t0].[SortIndex], NULL AS [CaffeineGrams], NULL AS [CokeCO2], NULL AS [SugarGrams], NULL AS [LiltCO2], NULL AS [SugarGrams0], [t0].[CaffeineGrams] AS [CaffeineGrams0], [t0].[HasMilk], N'Tea' AS [Discriminator] -FROM [Tea] AS [t0] +SELECT [t].[Id], [t].[SortIndex], NULL AS [CaffeineGrams], NULL AS [CokeCO2], NULL AS [SugarGrams], NULL AS [LiltCO2], NULL AS [SugarGrams0], [t].[CaffeineGrams] AS [CaffeineGrams0], [t].[HasMilk], N'Tea' AS [Discriminator] +FROM [Tea] AS [t] """); } @@ -535,17 +535,17 @@ FROM [Kiwi] AS [k] WHERE EXISTS ( SELECT 1 FROM ( - SELECT TOP(1) [t1].[Discriminator] + SELECT TOP(1) [t0].[Discriminator] FROM ( SELECT [e0].[Name], N'Eagle' AS [Discriminator] FROM [Eagle] AS [e0] UNION ALL SELECT [k0].[Name], N'Kiwi' AS [Discriminator] FROM [Kiwi] AS [k0] - ) AS [t1] - WHERE [t1].[Name] = N'Great spotted kiwi' - ) AS [t0] - WHERE [t0].[Discriminator] = N'Kiwi') + ) AS [t0] + WHERE [t0].[Name] = N'Great spotted kiwi' + ) AS [t1] + WHERE [t1].[Discriminator] = N'Kiwi') ORDER BY [t].[Species] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TPCManyToManyNoTrackingQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TPCManyToManyNoTrackingQuerySqlServerTest.cs index 80b38b3ad9b..04a28a60976 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TPCManyToManyNoTrackingQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TPCManyToManyNoTrackingQuerySqlServerTest.cs @@ -349,7 +349,7 @@ public override async Task Skip_navigation_order_by_last_or_default(bool async) AssertSql( """ -SELECT [t0].[Id], [t0].[Name] +SELECT [t1].[Id], [t1].[Name] FROM ( SELECT [b].[Id] FROM [Branches] AS [b] @@ -358,14 +358,14 @@ SELECT [l].[Id] FROM [Leaves] AS [l] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Name], [t1].[EntityBranchId] + SELECT [t0].[Id], [t0].[Name], [t0].[EntityBranchId] FROM ( SELECT [e].[Id], [e].[Name], [j].[EntityBranchId], ROW_NUMBER() OVER(PARTITION BY [j].[EntityBranchId] ORDER BY [e].[Id] DESC) AS [row] FROM [JoinOneToBranch] AS [j] INNER JOIN [EntityOnes] AS [e] ON [j].[EntityOneId] = [e].[Id] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Id] = [t0].[EntityBranchId] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Id] = [t1].[EntityBranchId] """); } @@ -910,7 +910,7 @@ public override async Task Filtered_then_include_skip_navigation_where(bool asyn AssertSql( """ -SELECT [t].[Id], [t].[Name], [t].[Number], [t].[Slumber], [t].[IsGreen], [t].[IsBrown], [t].[Discriminator], [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [t0].[RootSkipSharedId], [t0].[ThreeSkipSharedId], [t0].[Id0], [t0].[Name0], [t0].[OneId], [t0].[ThreeId] +SELECT [t].[Id], [t].[Name], [t].[Number], [t].[Slumber], [t].[IsGreen], [t].[IsBrown], [t].[Discriminator], [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [t1].[RootSkipSharedId], [t1].[ThreeSkipSharedId], [t1].[Id0], [t1].[Name0], [t1].[OneId], [t1].[ThreeId] FROM ( SELECT [r].[Id], [r].[Name], NULL AS [Number], NULL AS [Slumber], NULL AS [IsGreen], NULL AS [IsBrown], N'EntityRoot' AS [Discriminator] FROM [Roots] AS [r] @@ -925,7 +925,7 @@ UNION ALL FROM [Leaf2s] AS [l0] ) AS [t] LEFT JOIN ( - SELECT [e0].[Id], [e0].[CollectionInverseId], [e0].[Name], [e0].[ReferenceInverseId], [e].[RootSkipSharedId], [e].[ThreeSkipSharedId], [t1].[Id] AS [Id0], [t1].[Name] AS [Name0], [t1].[OneId], [t1].[ThreeId] + SELECT [e0].[Id], [e0].[CollectionInverseId], [e0].[Name], [e0].[ReferenceInverseId], [e].[RootSkipSharedId], [e].[ThreeSkipSharedId], [t0].[Id] AS [Id0], [t0].[Name] AS [Name0], [t0].[OneId], [t0].[ThreeId] FROM [EntityRootEntityThree] AS [e] INNER JOIN [EntityThrees] AS [e0] ON [e].[ThreeSkipSharedId] = [e0].[Id] LEFT JOIN ( @@ -933,9 +933,9 @@ LEFT JOIN ( FROM [JoinOneToThreePayloadFullShared] AS [j] INNER JOIN [EntityOnes] AS [e1] ON [j].[OneId] = [e1].[Id] WHERE [e1].[Id] < 10 - ) AS [t1] ON [e0].[Id] = [t1].[ThreeId] -) AS [t0] ON [t].[Id] = [t0].[RootSkipSharedId] -ORDER BY [t].[Id], [t0].[RootSkipSharedId], [t0].[ThreeSkipSharedId], [t0].[Id], [t0].[OneId], [t0].[ThreeId] + ) AS [t0] ON [e0].[Id] = [t0].[ThreeId] +) AS [t1] ON [t].[Id] = [t1].[RootSkipSharedId] +ORDER BY [t].[Id], [t1].[RootSkipSharedId], [t1].[ThreeSkipSharedId], [t1].[Id], [t1].[OneId], [t1].[ThreeId] """); } @@ -945,7 +945,7 @@ public override async Task Filtered_then_include_skip_navigation_order_by_skip_t AssertSql( """ -SELECT [t].[Id], [t].[Name], [t].[Number], [t].[Slumber], [t].[IsGreen], [t].[IsBrown], [t].[Discriminator], [t1].[Key1], [t1].[Key2], [t1].[Key3], [t1].[Name], [t1].[RootSkipSharedId], [t1].[CompositeKeySkipSharedKey1], [t1].[CompositeKeySkipSharedKey2], [t1].[CompositeKeySkipSharedKey3], [t1].[Id], [t1].[CollectionInverseId], [t1].[Name0], [t1].[ReferenceInverseId], [t1].[Id0] +SELECT [t].[Id], [t].[Name], [t].[Number], [t].[Slumber], [t].[IsGreen], [t].[IsBrown], [t].[Discriminator], [t2].[Key1], [t2].[Key2], [t2].[Key3], [t2].[Name], [t2].[RootSkipSharedId], [t2].[CompositeKeySkipSharedKey1], [t2].[CompositeKeySkipSharedKey2], [t2].[CompositeKeySkipSharedKey3], [t2].[Id], [t2].[CollectionInverseId], [t2].[Name0], [t2].[ReferenceInverseId], [t2].[Id0] FROM ( SELECT [r].[Id], [r].[Name], NULL AS [Number], NULL AS [Slumber], NULL AS [IsGreen], NULL AS [IsBrown], N'EntityRoot' AS [Discriminator] FROM [Roots] AS [r] @@ -960,20 +960,20 @@ UNION ALL FROM [Leaf2s] AS [l0] ) AS [t] LEFT JOIN ( - SELECT [e0].[Key1], [e0].[Key2], [e0].[Key3], [e0].[Name], [e].[RootSkipSharedId], [e].[CompositeKeySkipSharedKey1], [e].[CompositeKeySkipSharedKey2], [e].[CompositeKeySkipSharedKey3], [t0].[Id], [t0].[CollectionInverseId], [t0].[Name] AS [Name0], [t0].[ReferenceInverseId], [t0].[Id0], [t0].[CompositeId1], [t0].[CompositeId2], [t0].[CompositeId3] + SELECT [e0].[Key1], [e0].[Key2], [e0].[Key3], [e0].[Name], [e].[RootSkipSharedId], [e].[CompositeKeySkipSharedKey1], [e].[CompositeKeySkipSharedKey2], [e].[CompositeKeySkipSharedKey3], [t1].[Id], [t1].[CollectionInverseId], [t1].[Name] AS [Name0], [t1].[ReferenceInverseId], [t1].[Id0], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3] FROM [EntityCompositeKeyEntityRoot] AS [e] INNER JOIN [EntityCompositeKeys] AS [e0] ON [e].[CompositeKeySkipSharedKey1] = [e0].[Key1] AND [e].[CompositeKeySkipSharedKey2] = [e0].[Key2] AND [e].[CompositeKeySkipSharedKey3] = [e0].[Key3] LEFT JOIN ( - SELECT [t2].[Id], [t2].[CollectionInverseId], [t2].[Name], [t2].[ReferenceInverseId], [t2].[Id0], [t2].[CompositeId1], [t2].[CompositeId2], [t2].[CompositeId3] + SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [t0].[Id0], [t0].[CompositeId1], [t0].[CompositeId2], [t0].[CompositeId3] FROM ( SELECT [e1].[Id], [e1].[CollectionInverseId], [e1].[Name], [e1].[ReferenceInverseId], [j].[Id] AS [Id0], [j].[CompositeId1], [j].[CompositeId2], [j].[CompositeId3], ROW_NUMBER() OVER(PARTITION BY [j].[CompositeId1], [j].[CompositeId2], [j].[CompositeId3] ORDER BY [e1].[Id]) AS [row] FROM [JoinThreeToCompositeKeyFull] AS [j] INNER JOIN [EntityThrees] AS [e1] ON [j].[ThreeId] = [e1].[Id] - ) AS [t2] - WHERE 1 < [t2].[row] AND [t2].[row] <= 3 - ) AS [t0] ON [e0].[Key1] = [t0].[CompositeId1] AND [e0].[Key2] = [t0].[CompositeId2] AND [e0].[Key3] = [t0].[CompositeId3] -) AS [t1] ON [t].[Id] = [t1].[RootSkipSharedId] -ORDER BY [t].[Id], [t1].[RootSkipSharedId], [t1].[CompositeKeySkipSharedKey1], [t1].[CompositeKeySkipSharedKey2], [t1].[CompositeKeySkipSharedKey3], [t1].[Key1], [t1].[Key2], [t1].[Key3], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3], [t1].[Id] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 + ) AS [t1] ON [e0].[Key1] = [t1].[CompositeId1] AND [e0].[Key2] = [t1].[CompositeId2] AND [e0].[Key3] = [t1].[CompositeId3] +) AS [t2] ON [t].[Id] = [t2].[RootSkipSharedId] +ORDER BY [t].[Id], [t2].[RootSkipSharedId], [t2].[CompositeKeySkipSharedKey1], [t2].[CompositeKeySkipSharedKey2], [t2].[CompositeKeySkipSharedKey3], [t2].[Key1], [t2].[Key2], [t2].[Key3], [t2].[CompositeId1], [t2].[CompositeId2], [t2].[CompositeId3], [t2].[Id] """); } @@ -1085,20 +1085,20 @@ public override async Task Filter_include_on_skip_navigation_combined_with_filte SELECT [e].[Id], [e].[CollectionInverseId], [e].[Name], [e].[ReferenceInverseId], [t3].[Id], [t3].[Name], [t3].[OneId], [t3].[ThreeId], [t3].[Id0], [t3].[CollectionInverseId], [t3].[ExtraId], [t3].[Name0], [t3].[ReferenceInverseId], [t3].[OneId0], [t3].[TwoId], [t3].[Id1], [t3].[Name1], [t3].[Number], [t3].[IsGreen], [t3].[Discriminator], [t3].[EntityBranchId], [t3].[EntityOneId] FROM [EntityThrees] AS [e] LEFT JOIN ( - SELECT [e0].[Id], [e0].[Name], [j].[OneId], [j].[ThreeId], [t0].[Id] AS [Id0], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name] AS [Name0], [t0].[ReferenceInverseId], [t0].[OneId] AS [OneId0], [t0].[TwoId], [t1].[Id] AS [Id1], [t1].[Name] AS [Name1], [t1].[Number], [t1].[IsGreen], [t1].[Discriminator], [t1].[EntityBranchId], [t1].[EntityOneId] + SELECT [e0].[Id], [e0].[Name], [j].[OneId], [j].[ThreeId], [t1].[Id] AS [Id0], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name] AS [Name0], [t1].[ReferenceInverseId], [t1].[OneId] AS [OneId0], [t1].[TwoId], [t2].[Id] AS [Id1], [t2].[Name] AS [Name1], [t2].[Number], [t2].[IsGreen], [t2].[Discriminator], [t2].[EntityBranchId], [t2].[EntityOneId] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] LEFT JOIN ( - SELECT [t].[Id], [t].[CollectionInverseId], [t].[ExtraId], [t].[Name], [t].[ReferenceInverseId], [t].[OneId], [t].[TwoId] + SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name], [t0].[ReferenceInverseId], [t0].[OneId], [t0].[TwoId] FROM ( SELECT [e1].[Id], [e1].[CollectionInverseId], [e1].[ExtraId], [e1].[Name], [e1].[ReferenceInverseId], [j0].[OneId], [j0].[TwoId], ROW_NUMBER() OVER(PARTITION BY [j0].[OneId] ORDER BY [e1].[Id]) AS [row] FROM [JoinOneToTwo] AS [j0] INNER JOIN [EntityTwos] AS [e1] ON [j0].[TwoId] = [e1].[Id] - ) AS [t] - WHERE 1 < [t].[row] AND [t].[row] <= 3 - ) AS [t0] ON [e0].[Id] = [t0].[OneId] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 + ) AS [t1] ON [e0].[Id] = [t1].[OneId] LEFT JOIN ( - SELECT [t2].[Id], [t2].[Name], [t2].[Number], [t2].[IsGreen], [t2].[Discriminator], [j1].[EntityBranchId], [j1].[EntityOneId] + SELECT [t].[Id], [t].[Name], [t].[Number], [t].[IsGreen], [t].[Discriminator], [j1].[EntityBranchId], [j1].[EntityOneId] FROM [JoinOneToBranch] AS [j1] INNER JOIN ( SELECT [b].[Id], [b].[Name], [b].[Number], NULL AS [IsGreen], N'EntityBranch' AS [Discriminator] @@ -1106,9 +1106,9 @@ FROM [Branches] AS [b] UNION ALL SELECT [l].[Id], [l].[Name], [l].[Number], [l].[IsGreen], N'EntityLeaf' AS [Discriminator] FROM [Leaves] AS [l] - ) AS [t2] ON [j1].[EntityBranchId] = [t2].[Id] - WHERE [t2].[Id] < 20 - ) AS [t1] ON [e0].[Id] = [t1].[EntityOneId] + ) AS [t] ON [j1].[EntityBranchId] = [t].[Id] + WHERE [t].[Id] < 20 + ) AS [t2] ON [e0].[Id] = [t2].[EntityOneId] WHERE [e0].[Id] < 10 ) AS [t3] ON [e].[Id] = [t3].[ThreeId] ORDER BY [e].[Id], [t3].[OneId], [t3].[ThreeId], [t3].[Id], [t3].[OneId0], [t3].[Id0], [t3].[TwoId], [t3].[EntityBranchId], [t3].[EntityOneId] @@ -1193,17 +1193,17 @@ INNER JOIN ( SELECT [t].[Id], [t].[Name], [t].[Number], [t].[Slumber], [t].[IsGreen], [t].[IsBrown], [t].[Discriminator], [e0].[CompositeKeySkipSharedKey1], [e0].[CompositeKeySkipSharedKey2], [e0].[CompositeKeySkipSharedKey3] FROM [EntityCompositeKeyEntityRoot] AS [e0] INNER JOIN ( - SELECT [r].[Id], [r].[Name], NULL AS [Number], NULL AS [Slumber], NULL AS [IsGreen], NULL AS [IsBrown], N'EntityRoot' AS [Discriminator] - FROM [Roots] AS [r] + SELECT [r0].[Id], [r0].[Name], NULL AS [Number], NULL AS [Slumber], NULL AS [IsGreen], NULL AS [IsBrown], N'EntityRoot' AS [Discriminator] + FROM [Roots] AS [r0] UNION ALL - SELECT [b].[Id], [b].[Name], [b].[Number], NULL AS [Slumber], NULL AS [IsGreen], NULL AS [IsBrown], N'EntityBranch' AS [Discriminator] - FROM [Branches] AS [b] + SELECT [b0].[Id], [b0].[Name], [b0].[Number], NULL AS [Slumber], NULL AS [IsGreen], NULL AS [IsBrown], N'EntityBranch' AS [Discriminator] + FROM [Branches] AS [b0] UNION ALL - SELECT [l].[Id], [l].[Name], [l].[Number], NULL AS [Slumber], [l].[IsGreen], NULL AS [IsBrown], N'EntityLeaf' AS [Discriminator] - FROM [Leaves] AS [l] + SELECT [l1].[Id], [l1].[Name], [l1].[Number], NULL AS [Slumber], [l1].[IsGreen], NULL AS [IsBrown], N'EntityLeaf' AS [Discriminator] + FROM [Leaves] AS [l1] UNION ALL - SELECT [l0].[Id], [l0].[Name], NULL AS [Number], [l0].[Slumber], NULL AS [IsGreen], [l0].[IsBrown], N'EntityLeaf2' AS [Discriminator] - FROM [Leaf2s] AS [l0] + SELECT [l2].[Id], [l2].[Name], NULL AS [Number], [l2].[Slumber], NULL AS [IsGreen], [l2].[IsBrown], N'EntityLeaf2' AS [Discriminator] + FROM [Leaf2s] AS [l2] ) AS [t] ON [e0].[RootSkipSharedId] = [t].[Id] ) AS [t0] ON [e].[Key1] = [t0].[CompositeKeySkipSharedKey1] AND [e].[Key2] = [t0].[CompositeKeySkipSharedKey2] AND [e].[Key3] = [t0].[CompositeKeySkipSharedKey3] ORDER BY [e].[Key1], [e].[Key2], [e].[Key3] @@ -1493,17 +1493,17 @@ ORDER BY [t].[Id] """ SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [t].[Id], [t0].[RootSkipSharedId], [t0].[ThreeSkipSharedId] FROM ( - SELECT [r].[Id] - FROM [Roots] AS [r] + SELECT [r1].[Id] + FROM [Roots] AS [r1] UNION ALL - SELECT [b].[Id] - FROM [Branches] AS [b] + SELECT [b1].[Id] + FROM [Branches] AS [b1] UNION ALL - SELECT [l].[Id] - FROM [Leaves] AS [l] + SELECT [l3].[Id] + FROM [Leaves] AS [l3] UNION ALL - SELECT [l0].[Id] - FROM [Leaf2s] AS [l0] + SELECT [l4].[Id] + FROM [Leaf2s] AS [l4] ) AS [t] INNER JOIN ( SELECT [e0].[Id], [e0].[CollectionInverseId], [e0].[Name], [e0].[ReferenceInverseId], [e].[RootSkipSharedId], [e].[ThreeSkipSharedId] @@ -1516,17 +1516,17 @@ FROM [EntityRootEntityThree] AS [e] """ SELECT [t1].[Id], [t1].[Name], [t].[Id], [t0].[RootSkipSharedId], [t0].[ThreeSkipSharedId], [t0].[Id] FROM ( - SELECT [r].[Id] - FROM [Roots] AS [r] + SELECT [r2].[Id] + FROM [Roots] AS [r2] UNION ALL - SELECT [b].[Id] - FROM [Branches] AS [b] + SELECT [b2].[Id] + FROM [Branches] AS [b2] UNION ALL - SELECT [l].[Id] - FROM [Leaves] AS [l] + SELECT [l5].[Id] + FROM [Leaves] AS [l5] UNION ALL - SELECT [l0].[Id] - FROM [Leaf2s] AS [l0] + SELECT [l6].[Id] + FROM [Leaf2s] AS [l6] ) AS [t] INNER JOIN ( SELECT [e0].[Id], [e].[RootSkipSharedId], [e].[ThreeSkipSharedId] @@ -1569,17 +1569,17 @@ ORDER BY [t].[Id] """ SELECT [t0].[Key1], [t0].[Key2], [t0].[Key3], [t0].[Name], [t].[Id], [t0].[RootSkipSharedId], [t0].[CompositeKeySkipSharedKey1], [t0].[CompositeKeySkipSharedKey2], [t0].[CompositeKeySkipSharedKey3] FROM ( - SELECT [r].[Id] - FROM [Roots] AS [r] + SELECT [r1].[Id] + FROM [Roots] AS [r1] UNION ALL - SELECT [b].[Id] - FROM [Branches] AS [b] + SELECT [b1].[Id] + FROM [Branches] AS [b1] UNION ALL - SELECT [l].[Id] - FROM [Leaves] AS [l] + SELECT [l3].[Id] + FROM [Leaves] AS [l3] UNION ALL - SELECT [l0].[Id] - FROM [Leaf2s] AS [l0] + SELECT [l4].[Id] + FROM [Leaf2s] AS [l4] ) AS [t] INNER JOIN ( SELECT [e0].[Key1], [e0].[Key2], [e0].[Key3], [e0].[Name], [e].[RootSkipSharedId], [e].[CompositeKeySkipSharedKey1], [e].[CompositeKeySkipSharedKey2], [e].[CompositeKeySkipSharedKey3] @@ -1590,19 +1590,19 @@ FROM [EntityCompositeKeyEntityRoot] AS [e] """, // """ -SELECT [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [t].[Id], [t0].[RootSkipSharedId], [t0].[CompositeKeySkipSharedKey1], [t0].[CompositeKeySkipSharedKey2], [t0].[CompositeKeySkipSharedKey3], [t0].[Key1], [t0].[Key2], [t0].[Key3] +SELECT [t2].[Id], [t2].[CollectionInverseId], [t2].[Name], [t2].[ReferenceInverseId], [t].[Id], [t0].[RootSkipSharedId], [t0].[CompositeKeySkipSharedKey1], [t0].[CompositeKeySkipSharedKey2], [t0].[CompositeKeySkipSharedKey3], [t0].[Key1], [t0].[Key2], [t0].[Key3] FROM ( - SELECT [r].[Id] - FROM [Roots] AS [r] + SELECT [r2].[Id] + FROM [Roots] AS [r2] UNION ALL - SELECT [b].[Id] - FROM [Branches] AS [b] + SELECT [b2].[Id] + FROM [Branches] AS [b2] UNION ALL - SELECT [l].[Id] - FROM [Leaves] AS [l] + SELECT [l5].[Id] + FROM [Leaves] AS [l5] UNION ALL - SELECT [l0].[Id] - FROM [Leaf2s] AS [l0] + SELECT [l6].[Id] + FROM [Leaf2s] AS [l6] ) AS [t] INNER JOIN ( SELECT [e0].[Key1], [e0].[Key2], [e0].[Key3], [e].[RootSkipSharedId], [e].[CompositeKeySkipSharedKey1], [e].[CompositeKeySkipSharedKey2], [e].[CompositeKeySkipSharedKey3] @@ -1610,15 +1610,15 @@ FROM [EntityCompositeKeyEntityRoot] AS [e] INNER JOIN [EntityCompositeKeys] AS [e0] ON [e].[CompositeKeySkipSharedKey1] = [e0].[Key1] AND [e].[CompositeKeySkipSharedKey2] = [e0].[Key2] AND [e].[CompositeKeySkipSharedKey3] = [e0].[Key3] ) AS [t0] ON [t].[Id] = [t0].[RootSkipSharedId] INNER JOIN ( - SELECT [t2].[Id], [t2].[CollectionInverseId], [t2].[Name], [t2].[ReferenceInverseId], [t2].[CompositeId1], [t2].[CompositeId2], [t2].[CompositeId3] + SELECT [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3] FROM ( SELECT [e1].[Id], [e1].[CollectionInverseId], [e1].[Name], [e1].[ReferenceInverseId], [j].[CompositeId1], [j].[CompositeId2], [j].[CompositeId3], ROW_NUMBER() OVER(PARTITION BY [j].[CompositeId1], [j].[CompositeId2], [j].[CompositeId3] ORDER BY [e1].[Id]) AS [row] FROM [JoinThreeToCompositeKeyFull] AS [j] INNER JOIN [EntityThrees] AS [e1] ON [j].[ThreeId] = [e1].[Id] - ) AS [t2] - WHERE 1 < [t2].[row] AND [t2].[row] <= 3 -) AS [t1] ON [t0].[Key1] = [t1].[CompositeId1] AND [t0].[Key2] = [t1].[CompositeId2] AND [t0].[Key3] = [t1].[CompositeId3] -ORDER BY [t].[Id], [t0].[RootSkipSharedId], [t0].[CompositeKeySkipSharedKey1], [t0].[CompositeKeySkipSharedKey2], [t0].[CompositeKeySkipSharedKey3], [t0].[Key1], [t0].[Key2], [t0].[Key3], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3], [t1].[Id] + ) AS [t1] + WHERE 1 < [t1].[row] AND [t1].[row] <= 3 +) AS [t2] ON [t0].[Key1] = [t2].[CompositeId1] AND [t0].[Key2] = [t2].[CompositeId2] AND [t0].[Key3] = [t2].[CompositeId3] +ORDER BY [t].[Id], [t0].[RootSkipSharedId], [t0].[CompositeKeySkipSharedKey1], [t0].[CompositeKeySkipSharedKey2], [t0].[CompositeKeySkipSharedKey3], [t0].[Key1], [t0].[Key2], [t0].[Key3], [t2].[CompositeId1], [t2].[CompositeId2], [t2].[CompositeId3], [t2].[Id] """); } @@ -1735,7 +1735,7 @@ WHERE [e0].[Id] < 10 """, // """ -SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id] +SELECT [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id] FROM [EntityOnes] AS [e] INNER JOIN ( SELECT [e0].[Id], [j].[OneId], [j].[TwoId] @@ -1744,15 +1744,15 @@ FROM [JoinOneToTwo] AS [j] WHERE [e0].[Id] < 10 ) AS [t] ON [e].[Id] = [t].[OneId] INNER JOIN ( - SELECT [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [t1].[TwoId] + SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [t0].[TwoId] FROM ( SELECT [e1].[Id], [e1].[CollectionInverseId], [e1].[Name], [e1].[ReferenceInverseId], [j0].[TwoId], ROW_NUMBER() OVER(PARTITION BY [j0].[TwoId] ORDER BY [e1].[Id]) AS [row] FROM [JoinTwoToThree] AS [j0] INNER JOIN [EntityThrees] AS [e1] ON [j0].[ThreeId] = [e1].[Id] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 3 -) AS [t0] ON [t].[Id] = [t0].[TwoId] -ORDER BY [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id], [t0].[TwoId], [t0].[Id] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 +) AS [t1] ON [t].[Id] = [t1].[TwoId] +ORDER BY [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id], [t1].[TwoId], [t1].[Id] """); } @@ -1807,26 +1807,26 @@ ORDER BY [e].[Id] """, // """ -SELECT [t].[Id], [t].[Name], [e].[Id], [t].[OneId], [t].[ThreeId] +SELECT [t0].[Id], [t0].[Name], [e].[Id], [t0].[OneId], [t0].[ThreeId] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [e0].[Id], [e0].[Name], [j].[OneId], [j].[ThreeId] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] """, // """ -SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name], [t0].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +SELECT [t2].[Id], [t2].[CollectionInverseId], [t2].[ExtraId], [t2].[Name], [t2].[ReferenceInverseId], [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [e0].[Id], [j].[OneId], [j].[ThreeId] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] INNER JOIN ( SELECT [t1].[Id], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name], [t1].[ReferenceInverseId], [t1].[OneId] FROM ( @@ -1835,32 +1835,32 @@ FROM [JoinOneToTwo] AS [j0] INNER JOIN [EntityTwos] AS [e1] ON [j0].[TwoId] = [e1].[Id] ) AS [t1] WHERE 1 < [t1].[row] AND [t1].[row] <= 3 -) AS [t0] ON [t].[Id] = [t0].[OneId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id], [t0].[OneId], [t0].[Id] +) AS [t2] ON [t0].[Id] = [t2].[OneId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id], [t2].[OneId], [t2].[Id] """, // """ -SELECT [t0].[Id], [t0].[Name], [t0].[Number], [t0].[IsGreen], [t0].[Discriminator], [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +SELECT [t3].[Id], [t3].[Name], [t3].[Number], [t3].[IsGreen], [t3].[Discriminator], [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [e0].[Id], [j].[OneId], [j].[ThreeId] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] INNER JOIN ( - SELECT [t1].[Id], [t1].[Name], [t1].[Number], [t1].[IsGreen], [t1].[Discriminator], [j0].[EntityOneId] - FROM [JoinOneToBranch] AS [j0] + SELECT [t].[Id], [t].[Name], [t].[Number], [t].[IsGreen], [t].[Discriminator], [j1].[EntityOneId] + FROM [JoinOneToBranch] AS [j1] INNER JOIN ( - SELECT [b].[Id], [b].[Name], [b].[Number], NULL AS [IsGreen], N'EntityBranch' AS [Discriminator] - FROM [Branches] AS [b] + SELECT [b0].[Id], [b0].[Name], [b0].[Number], NULL AS [IsGreen], N'EntityBranch' AS [Discriminator] + FROM [Branches] AS [b0] UNION ALL - SELECT [l].[Id], [l].[Name], [l].[Number], [l].[IsGreen], N'EntityLeaf' AS [Discriminator] - FROM [Leaves] AS [l] - ) AS [t1] ON [j0].[EntityBranchId] = [t1].[Id] - WHERE [t1].[Id] < 20 -) AS [t0] ON [t].[Id] = [t0].[EntityOneId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] + SELECT [l0].[Id], [l0].[Name], [l0].[Number], [l0].[IsGreen], N'EntityLeaf' AS [Discriminator] + FROM [Leaves] AS [l0] + ) AS [t] ON [j1].[EntityBranchId] = [t].[Id] + WHERE [t].[Id] < 20 +) AS [t3] ON [t0].[Id] = [t3].[EntityOneId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TPCManyToManyQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TPCManyToManyQuerySqlServerTest.cs index 553efce6b48..9a3c1714809 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TPCManyToManyQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TPCManyToManyQuerySqlServerTest.cs @@ -349,7 +349,7 @@ public override async Task Skip_navigation_order_by_last_or_default(bool async) AssertSql( """ -SELECT [t0].[Id], [t0].[Name] +SELECT [t1].[Id], [t1].[Name] FROM ( SELECT [b].[Id] FROM [Branches] AS [b] @@ -358,14 +358,14 @@ SELECT [l].[Id] FROM [Leaves] AS [l] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Name], [t1].[EntityBranchId] + SELECT [t0].[Id], [t0].[Name], [t0].[EntityBranchId] FROM ( SELECT [e].[Id], [e].[Name], [j].[EntityBranchId], ROW_NUMBER() OVER(PARTITION BY [j].[EntityBranchId] ORDER BY [e].[Id] DESC) AS [row] FROM [JoinOneToBranch] AS [j] INNER JOIN [EntityOnes] AS [e] ON [j].[EntityOneId] = [e].[Id] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Id] = [t0].[EntityBranchId] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Id] = [t1].[EntityBranchId] """); } @@ -910,7 +910,7 @@ public override async Task Filtered_then_include_skip_navigation_where(bool asyn AssertSql( """ -SELECT [t].[Id], [t].[Name], [t].[Number], [t].[Slumber], [t].[IsGreen], [t].[IsBrown], [t].[Discriminator], [t0].[RootSkipSharedId], [t0].[ThreeSkipSharedId], [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [t0].[OneId], [t0].[ThreeId], [t0].[Payload], [t0].[Id0], [t0].[Name0] +SELECT [t].[Id], [t].[Name], [t].[Number], [t].[Slumber], [t].[IsGreen], [t].[IsBrown], [t].[Discriminator], [t1].[RootSkipSharedId], [t1].[ThreeSkipSharedId], [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [t1].[OneId], [t1].[ThreeId], [t1].[Payload], [t1].[Id0], [t1].[Name0] FROM ( SELECT [r].[Id], [r].[Name], NULL AS [Number], NULL AS [Slumber], NULL AS [IsGreen], NULL AS [IsBrown], N'EntityRoot' AS [Discriminator] FROM [Roots] AS [r] @@ -925,7 +925,7 @@ UNION ALL FROM [Leaf2s] AS [l0] ) AS [t] LEFT JOIN ( - SELECT [e].[RootSkipSharedId], [e].[ThreeSkipSharedId], [e0].[Id], [e0].[CollectionInverseId], [e0].[Name], [e0].[ReferenceInverseId], [t1].[OneId], [t1].[ThreeId], [t1].[Payload], [t1].[Id] AS [Id0], [t1].[Name] AS [Name0] + SELECT [e].[RootSkipSharedId], [e].[ThreeSkipSharedId], [e0].[Id], [e0].[CollectionInverseId], [e0].[Name], [e0].[ReferenceInverseId], [t0].[OneId], [t0].[ThreeId], [t0].[Payload], [t0].[Id] AS [Id0], [t0].[Name] AS [Name0] FROM [EntityRootEntityThree] AS [e] INNER JOIN [EntityThrees] AS [e0] ON [e].[ThreeSkipSharedId] = [e0].[Id] LEFT JOIN ( @@ -933,9 +933,9 @@ LEFT JOIN ( FROM [JoinOneToThreePayloadFullShared] AS [j] INNER JOIN [EntityOnes] AS [e1] ON [j].[OneId] = [e1].[Id] WHERE [e1].[Id] < 10 - ) AS [t1] ON [e0].[Id] = [t1].[ThreeId] -) AS [t0] ON [t].[Id] = [t0].[RootSkipSharedId] -ORDER BY [t].[Id], [t0].[RootSkipSharedId], [t0].[ThreeSkipSharedId], [t0].[Id], [t0].[OneId], [t0].[ThreeId] + ) AS [t0] ON [e0].[Id] = [t0].[ThreeId] +) AS [t1] ON [t].[Id] = [t1].[RootSkipSharedId] +ORDER BY [t].[Id], [t1].[RootSkipSharedId], [t1].[ThreeSkipSharedId], [t1].[Id], [t1].[OneId], [t1].[ThreeId] """); } @@ -945,7 +945,7 @@ public override async Task Filtered_then_include_skip_navigation_order_by_skip_t AssertSql( """ -SELECT [t].[Id], [t].[Name], [t].[Number], [t].[Slumber], [t].[IsGreen], [t].[IsBrown], [t].[Discriminator], [t1].[RootSkipSharedId], [t1].[CompositeKeySkipSharedKey1], [t1].[CompositeKeySkipSharedKey2], [t1].[CompositeKeySkipSharedKey3], [t1].[Key1], [t1].[Key2], [t1].[Key3], [t1].[Name], [t1].[Id], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3], [t1].[ThreeId], [t1].[Id0], [t1].[CollectionInverseId], [t1].[Name0], [t1].[ReferenceInverseId] +SELECT [t].[Id], [t].[Name], [t].[Number], [t].[Slumber], [t].[IsGreen], [t].[IsBrown], [t].[Discriminator], [t2].[RootSkipSharedId], [t2].[CompositeKeySkipSharedKey1], [t2].[CompositeKeySkipSharedKey2], [t2].[CompositeKeySkipSharedKey3], [t2].[Key1], [t2].[Key2], [t2].[Key3], [t2].[Name], [t2].[Id], [t2].[CompositeId1], [t2].[CompositeId2], [t2].[CompositeId3], [t2].[ThreeId], [t2].[Id0], [t2].[CollectionInverseId], [t2].[Name0], [t2].[ReferenceInverseId] FROM ( SELECT [r].[Id], [r].[Name], NULL AS [Number], NULL AS [Slumber], NULL AS [IsGreen], NULL AS [IsBrown], N'EntityRoot' AS [Discriminator] FROM [Roots] AS [r] @@ -960,20 +960,20 @@ UNION ALL FROM [Leaf2s] AS [l0] ) AS [t] LEFT JOIN ( - SELECT [e].[RootSkipSharedId], [e].[CompositeKeySkipSharedKey1], [e].[CompositeKeySkipSharedKey2], [e].[CompositeKeySkipSharedKey3], [e0].[Key1], [e0].[Key2], [e0].[Key3], [e0].[Name], [t0].[Id], [t0].[CompositeId1], [t0].[CompositeId2], [t0].[CompositeId3], [t0].[ThreeId], [t0].[Id0], [t0].[CollectionInverseId], [t0].[Name] AS [Name0], [t0].[ReferenceInverseId] + SELECT [e].[RootSkipSharedId], [e].[CompositeKeySkipSharedKey1], [e].[CompositeKeySkipSharedKey2], [e].[CompositeKeySkipSharedKey3], [e0].[Key1], [e0].[Key2], [e0].[Key3], [e0].[Name], [t1].[Id], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3], [t1].[ThreeId], [t1].[Id0], [t1].[CollectionInverseId], [t1].[Name] AS [Name0], [t1].[ReferenceInverseId] FROM [EntityCompositeKeyEntityRoot] AS [e] INNER JOIN [EntityCompositeKeys] AS [e0] ON [e].[CompositeKeySkipSharedKey1] = [e0].[Key1] AND [e].[CompositeKeySkipSharedKey2] = [e0].[Key2] AND [e].[CompositeKeySkipSharedKey3] = [e0].[Key3] LEFT JOIN ( - SELECT [t2].[Id], [t2].[CompositeId1], [t2].[CompositeId2], [t2].[CompositeId3], [t2].[ThreeId], [t2].[Id0], [t2].[CollectionInverseId], [t2].[Name], [t2].[ReferenceInverseId] + SELECT [t0].[Id], [t0].[CompositeId1], [t0].[CompositeId2], [t0].[CompositeId3], [t0].[ThreeId], [t0].[Id0], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId] FROM ( SELECT [j].[Id], [j].[CompositeId1], [j].[CompositeId2], [j].[CompositeId3], [j].[ThreeId], [e1].[Id] AS [Id0], [e1].[CollectionInverseId], [e1].[Name], [e1].[ReferenceInverseId], ROW_NUMBER() OVER(PARTITION BY [j].[CompositeId1], [j].[CompositeId2], [j].[CompositeId3] ORDER BY [e1].[Id]) AS [row] FROM [JoinThreeToCompositeKeyFull] AS [j] INNER JOIN [EntityThrees] AS [e1] ON [j].[ThreeId] = [e1].[Id] - ) AS [t2] - WHERE 1 < [t2].[row] AND [t2].[row] <= 3 - ) AS [t0] ON [e0].[Key1] = [t0].[CompositeId1] AND [e0].[Key2] = [t0].[CompositeId2] AND [e0].[Key3] = [t0].[CompositeId3] -) AS [t1] ON [t].[Id] = [t1].[RootSkipSharedId] -ORDER BY [t].[Id], [t1].[RootSkipSharedId], [t1].[CompositeKeySkipSharedKey1], [t1].[CompositeKeySkipSharedKey2], [t1].[CompositeKeySkipSharedKey3], [t1].[Key1], [t1].[Key2], [t1].[Key3], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3], [t1].[Id0] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 + ) AS [t1] ON [e0].[Key1] = [t1].[CompositeId1] AND [e0].[Key2] = [t1].[CompositeId2] AND [e0].[Key3] = [t1].[CompositeId3] +) AS [t2] ON [t].[Id] = [t2].[RootSkipSharedId] +ORDER BY [t].[Id], [t2].[RootSkipSharedId], [t2].[CompositeKeySkipSharedKey1], [t2].[CompositeKeySkipSharedKey2], [t2].[CompositeKeySkipSharedKey3], [t2].[Key1], [t2].[Key2], [t2].[Key3], [t2].[CompositeId1], [t2].[CompositeId2], [t2].[CompositeId3], [t2].[Id0] """); } @@ -1085,20 +1085,20 @@ public override async Task Filter_include_on_skip_navigation_combined_with_filte SELECT [e].[Id], [e].[CollectionInverseId], [e].[Name], [e].[ReferenceInverseId], [t3].[OneId], [t3].[ThreeId], [t3].[Payload], [t3].[Id], [t3].[Name], [t3].[OneId0], [t3].[TwoId], [t3].[JoinOneToTwoExtraId], [t3].[Id0], [t3].[CollectionInverseId], [t3].[ExtraId], [t3].[Name0], [t3].[ReferenceInverseId], [t3].[EntityBranchId], [t3].[EntityOneId], [t3].[Id1], [t3].[Name1], [t3].[Number], [t3].[IsGreen], [t3].[Discriminator] FROM [EntityThrees] AS [e] LEFT JOIN ( - SELECT [j].[OneId], [j].[ThreeId], [j].[Payload], [e0].[Id], [e0].[Name], [t0].[OneId] AS [OneId0], [t0].[TwoId], [t0].[JoinOneToTwoExtraId], [t0].[Id] AS [Id0], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name] AS [Name0], [t0].[ReferenceInverseId], [t1].[EntityBranchId], [t1].[EntityOneId], [t1].[Id] AS [Id1], [t1].[Name] AS [Name1], [t1].[Number], [t1].[IsGreen], [t1].[Discriminator] + SELECT [j].[OneId], [j].[ThreeId], [j].[Payload], [e0].[Id], [e0].[Name], [t1].[OneId] AS [OneId0], [t1].[TwoId], [t1].[JoinOneToTwoExtraId], [t1].[Id] AS [Id0], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name] AS [Name0], [t1].[ReferenceInverseId], [t2].[EntityBranchId], [t2].[EntityOneId], [t2].[Id] AS [Id1], [t2].[Name] AS [Name1], [t2].[Number], [t2].[IsGreen], [t2].[Discriminator] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] LEFT JOIN ( - SELECT [t].[OneId], [t].[TwoId], [t].[JoinOneToTwoExtraId], [t].[Id], [t].[CollectionInverseId], [t].[ExtraId], [t].[Name], [t].[ReferenceInverseId] + SELECT [t0].[OneId], [t0].[TwoId], [t0].[JoinOneToTwoExtraId], [t0].[Id], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name], [t0].[ReferenceInverseId] FROM ( SELECT [j0].[OneId], [j0].[TwoId], [j0].[JoinOneToTwoExtraId], [e1].[Id], [e1].[CollectionInverseId], [e1].[ExtraId], [e1].[Name], [e1].[ReferenceInverseId], ROW_NUMBER() OVER(PARTITION BY [j0].[OneId] ORDER BY [e1].[Id]) AS [row] FROM [JoinOneToTwo] AS [j0] INNER JOIN [EntityTwos] AS [e1] ON [j0].[TwoId] = [e1].[Id] - ) AS [t] - WHERE 1 < [t].[row] AND [t].[row] <= 3 - ) AS [t0] ON [e0].[Id] = [t0].[OneId] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 + ) AS [t1] ON [e0].[Id] = [t1].[OneId] LEFT JOIN ( - SELECT [j1].[EntityBranchId], [j1].[EntityOneId], [t2].[Id], [t2].[Name], [t2].[Number], [t2].[IsGreen], [t2].[Discriminator] + SELECT [j1].[EntityBranchId], [j1].[EntityOneId], [t].[Id], [t].[Name], [t].[Number], [t].[IsGreen], [t].[Discriminator] FROM [JoinOneToBranch] AS [j1] INNER JOIN ( SELECT [b].[Id], [b].[Name], [b].[Number], NULL AS [IsGreen], N'EntityBranch' AS [Discriminator] @@ -1106,9 +1106,9 @@ FROM [Branches] AS [b] UNION ALL SELECT [l].[Id], [l].[Name], [l].[Number], [l].[IsGreen], N'EntityLeaf' AS [Discriminator] FROM [Leaves] AS [l] - ) AS [t2] ON [j1].[EntityBranchId] = [t2].[Id] - WHERE [t2].[Id] < 20 - ) AS [t1] ON [e0].[Id] = [t1].[EntityOneId] + ) AS [t] ON [j1].[EntityBranchId] = [t].[Id] + WHERE [t].[Id] < 20 + ) AS [t2] ON [e0].[Id] = [t2].[EntityOneId] WHERE [e0].[Id] < 10 ) AS [t3] ON [e].[Id] = [t3].[ThreeId] ORDER BY [e].[Id], [t3].[OneId], [t3].[ThreeId], [t3].[Id], [t3].[OneId0], [t3].[Id0], [t3].[TwoId], [t3].[EntityBranchId], [t3].[EntityOneId] @@ -1193,17 +1193,17 @@ INNER JOIN ( SELECT [e0].[RootSkipSharedId], [e0].[CompositeKeySkipSharedKey1], [e0].[CompositeKeySkipSharedKey2], [e0].[CompositeKeySkipSharedKey3], [t].[Id], [t].[Name], [t].[Number], [t].[Slumber], [t].[IsGreen], [t].[IsBrown], [t].[Discriminator] FROM [EntityCompositeKeyEntityRoot] AS [e0] INNER JOIN ( - SELECT [r].[Id], [r].[Name], NULL AS [Number], NULL AS [Slumber], NULL AS [IsGreen], NULL AS [IsBrown], N'EntityRoot' AS [Discriminator] - FROM [Roots] AS [r] + SELECT [r0].[Id], [r0].[Name], NULL AS [Number], NULL AS [Slumber], NULL AS [IsGreen], NULL AS [IsBrown], N'EntityRoot' AS [Discriminator] + FROM [Roots] AS [r0] UNION ALL - SELECT [b].[Id], [b].[Name], [b].[Number], NULL AS [Slumber], NULL AS [IsGreen], NULL AS [IsBrown], N'EntityBranch' AS [Discriminator] - FROM [Branches] AS [b] + SELECT [b0].[Id], [b0].[Name], [b0].[Number], NULL AS [Slumber], NULL AS [IsGreen], NULL AS [IsBrown], N'EntityBranch' AS [Discriminator] + FROM [Branches] AS [b0] UNION ALL - SELECT [l].[Id], [l].[Name], [l].[Number], NULL AS [Slumber], [l].[IsGreen], NULL AS [IsBrown], N'EntityLeaf' AS [Discriminator] - FROM [Leaves] AS [l] + SELECT [l1].[Id], [l1].[Name], [l1].[Number], NULL AS [Slumber], [l1].[IsGreen], NULL AS [IsBrown], N'EntityLeaf' AS [Discriminator] + FROM [Leaves] AS [l1] UNION ALL - SELECT [l0].[Id], [l0].[Name], NULL AS [Number], [l0].[Slumber], NULL AS [IsGreen], [l0].[IsBrown], N'EntityLeaf2' AS [Discriminator] - FROM [Leaf2s] AS [l0] + SELECT [l2].[Id], [l2].[Name], NULL AS [Number], [l2].[Slumber], NULL AS [IsGreen], [l2].[IsBrown], N'EntityLeaf2' AS [Discriminator] + FROM [Leaf2s] AS [l2] ) AS [t] ON [e0].[RootSkipSharedId] = [t].[Id] ) AS [t0] ON [e].[Key1] = [t0].[CompositeKeySkipSharedKey1] AND [e].[Key2] = [t0].[CompositeKeySkipSharedKey2] AND [e].[Key3] = [t0].[CompositeKeySkipSharedKey3] ORDER BY [e].[Key1], [e].[Key2], [e].[Key3] @@ -1493,17 +1493,17 @@ ORDER BY [t].[Id] """ SELECT [t0].[RootSkipSharedId], [t0].[ThreeSkipSharedId], [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [t].[Id] FROM ( - SELECT [r].[Id] - FROM [Roots] AS [r] + SELECT [r1].[Id] + FROM [Roots] AS [r1] UNION ALL - SELECT [b].[Id] - FROM [Branches] AS [b] + SELECT [b1].[Id] + FROM [Branches] AS [b1] UNION ALL - SELECT [l].[Id] - FROM [Leaves] AS [l] + SELECT [l3].[Id] + FROM [Leaves] AS [l3] UNION ALL - SELECT [l0].[Id] - FROM [Leaf2s] AS [l0] + SELECT [l4].[Id] + FROM [Leaf2s] AS [l4] ) AS [t] INNER JOIN ( SELECT [e].[RootSkipSharedId], [e].[ThreeSkipSharedId], [e0].[Id], [e0].[CollectionInverseId], [e0].[Name], [e0].[ReferenceInverseId] @@ -1516,17 +1516,17 @@ FROM [EntityRootEntityThree] AS [e] """ SELECT [t1].[OneId], [t1].[ThreeId], [t1].[Payload], [t1].[Id], [t1].[Name], [t].[Id], [t0].[RootSkipSharedId], [t0].[ThreeSkipSharedId], [t0].[Id] FROM ( - SELECT [r].[Id] - FROM [Roots] AS [r] + SELECT [r2].[Id] + FROM [Roots] AS [r2] UNION ALL - SELECT [b].[Id] - FROM [Branches] AS [b] + SELECT [b2].[Id] + FROM [Branches] AS [b2] UNION ALL - SELECT [l].[Id] - FROM [Leaves] AS [l] + SELECT [l5].[Id] + FROM [Leaves] AS [l5] UNION ALL - SELECT [l0].[Id] - FROM [Leaf2s] AS [l0] + SELECT [l6].[Id] + FROM [Leaf2s] AS [l6] ) AS [t] INNER JOIN ( SELECT [e].[RootSkipSharedId], [e].[ThreeSkipSharedId], [e0].[Id] @@ -1569,17 +1569,17 @@ ORDER BY [t].[Id] """ SELECT [t0].[RootSkipSharedId], [t0].[CompositeKeySkipSharedKey1], [t0].[CompositeKeySkipSharedKey2], [t0].[CompositeKeySkipSharedKey3], [t0].[Key1], [t0].[Key2], [t0].[Key3], [t0].[Name], [t].[Id] FROM ( - SELECT [r].[Id] - FROM [Roots] AS [r] + SELECT [r1].[Id] + FROM [Roots] AS [r1] UNION ALL - SELECT [b].[Id] - FROM [Branches] AS [b] + SELECT [b1].[Id] + FROM [Branches] AS [b1] UNION ALL - SELECT [l].[Id] - FROM [Leaves] AS [l] + SELECT [l3].[Id] + FROM [Leaves] AS [l3] UNION ALL - SELECT [l0].[Id] - FROM [Leaf2s] AS [l0] + SELECT [l4].[Id] + FROM [Leaf2s] AS [l4] ) AS [t] INNER JOIN ( SELECT [e].[RootSkipSharedId], [e].[CompositeKeySkipSharedKey1], [e].[CompositeKeySkipSharedKey2], [e].[CompositeKeySkipSharedKey3], [e0].[Key1], [e0].[Key2], [e0].[Key3], [e0].[Name] @@ -1590,19 +1590,19 @@ FROM [EntityCompositeKeyEntityRoot] AS [e] """, // """ -SELECT [t1].[Id], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3], [t1].[ThreeId], [t1].[Id0], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [t].[Id], [t0].[RootSkipSharedId], [t0].[CompositeKeySkipSharedKey1], [t0].[CompositeKeySkipSharedKey2], [t0].[CompositeKeySkipSharedKey3], [t0].[Key1], [t0].[Key2], [t0].[Key3] +SELECT [t2].[Id], [t2].[CompositeId1], [t2].[CompositeId2], [t2].[CompositeId3], [t2].[ThreeId], [t2].[Id0], [t2].[CollectionInverseId], [t2].[Name], [t2].[ReferenceInverseId], [t].[Id], [t0].[RootSkipSharedId], [t0].[CompositeKeySkipSharedKey1], [t0].[CompositeKeySkipSharedKey2], [t0].[CompositeKeySkipSharedKey3], [t0].[Key1], [t0].[Key2], [t0].[Key3] FROM ( - SELECT [r].[Id] - FROM [Roots] AS [r] + SELECT [r2].[Id] + FROM [Roots] AS [r2] UNION ALL - SELECT [b].[Id] - FROM [Branches] AS [b] + SELECT [b2].[Id] + FROM [Branches] AS [b2] UNION ALL - SELECT [l].[Id] - FROM [Leaves] AS [l] + SELECT [l5].[Id] + FROM [Leaves] AS [l5] UNION ALL - SELECT [l0].[Id] - FROM [Leaf2s] AS [l0] + SELECT [l6].[Id] + FROM [Leaf2s] AS [l6] ) AS [t] INNER JOIN ( SELECT [e].[RootSkipSharedId], [e].[CompositeKeySkipSharedKey1], [e].[CompositeKeySkipSharedKey2], [e].[CompositeKeySkipSharedKey3], [e0].[Key1], [e0].[Key2], [e0].[Key3] @@ -1610,15 +1610,15 @@ FROM [EntityCompositeKeyEntityRoot] AS [e] INNER JOIN [EntityCompositeKeys] AS [e0] ON [e].[CompositeKeySkipSharedKey1] = [e0].[Key1] AND [e].[CompositeKeySkipSharedKey2] = [e0].[Key2] AND [e].[CompositeKeySkipSharedKey3] = [e0].[Key3] ) AS [t0] ON [t].[Id] = [t0].[RootSkipSharedId] INNER JOIN ( - SELECT [t2].[Id], [t2].[CompositeId1], [t2].[CompositeId2], [t2].[CompositeId3], [t2].[ThreeId], [t2].[Id0], [t2].[CollectionInverseId], [t2].[Name], [t2].[ReferenceInverseId] + SELECT [t1].[Id], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3], [t1].[ThreeId], [t1].[Id0], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId] FROM ( SELECT [j].[Id], [j].[CompositeId1], [j].[CompositeId2], [j].[CompositeId3], [j].[ThreeId], [e1].[Id] AS [Id0], [e1].[CollectionInverseId], [e1].[Name], [e1].[ReferenceInverseId], ROW_NUMBER() OVER(PARTITION BY [j].[CompositeId1], [j].[CompositeId2], [j].[CompositeId3] ORDER BY [e1].[Id]) AS [row] FROM [JoinThreeToCompositeKeyFull] AS [j] INNER JOIN [EntityThrees] AS [e1] ON [j].[ThreeId] = [e1].[Id] - ) AS [t2] - WHERE 1 < [t2].[row] AND [t2].[row] <= 3 -) AS [t1] ON [t0].[Key1] = [t1].[CompositeId1] AND [t0].[Key2] = [t1].[CompositeId2] AND [t0].[Key3] = [t1].[CompositeId3] -ORDER BY [t].[Id], [t0].[RootSkipSharedId], [t0].[CompositeKeySkipSharedKey1], [t0].[CompositeKeySkipSharedKey2], [t0].[CompositeKeySkipSharedKey3], [t0].[Key1], [t0].[Key2], [t0].[Key3], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3], [t1].[Id0] + ) AS [t1] + WHERE 1 < [t1].[row] AND [t1].[row] <= 3 +) AS [t2] ON [t0].[Key1] = [t2].[CompositeId1] AND [t0].[Key2] = [t2].[CompositeId2] AND [t0].[Key3] = [t2].[CompositeId3] +ORDER BY [t].[Id], [t0].[RootSkipSharedId], [t0].[CompositeKeySkipSharedKey1], [t0].[CompositeKeySkipSharedKey2], [t0].[CompositeKeySkipSharedKey3], [t0].[Key1], [t0].[Key2], [t0].[Key3], [t2].[CompositeId1], [t2].[CompositeId2], [t2].[CompositeId3], [t2].[Id0] """); } @@ -1735,7 +1735,7 @@ WHERE [e0].[Id] < 10 """, // """ -SELECT [t0].[ThreeId], [t0].[TwoId], [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id] +SELECT [t1].[ThreeId], [t1].[TwoId], [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id] FROM [EntityOnes] AS [e] INNER JOIN ( SELECT [j].[OneId], [j].[TwoId], [e0].[Id] @@ -1744,15 +1744,15 @@ FROM [JoinOneToTwo] AS [j] WHERE [e0].[Id] < 10 ) AS [t] ON [e].[Id] = [t].[OneId] INNER JOIN ( - SELECT [t1].[ThreeId], [t1].[TwoId], [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId] + SELECT [t0].[ThreeId], [t0].[TwoId], [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId] FROM ( SELECT [j0].[ThreeId], [j0].[TwoId], [e1].[Id], [e1].[CollectionInverseId], [e1].[Name], [e1].[ReferenceInverseId], ROW_NUMBER() OVER(PARTITION BY [j0].[TwoId] ORDER BY [e1].[Id]) AS [row] FROM [JoinTwoToThree] AS [j0] INNER JOIN [EntityThrees] AS [e1] ON [j0].[ThreeId] = [e1].[Id] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 3 -) AS [t0] ON [t].[Id] = [t0].[TwoId] -ORDER BY [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id], [t0].[TwoId], [t0].[Id] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 +) AS [t1] ON [t].[Id] = [t1].[TwoId] +ORDER BY [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id], [t1].[TwoId], [t1].[Id] """); } @@ -1807,26 +1807,26 @@ ORDER BY [e].[Id] """, // """ -SELECT [t].[OneId], [t].[ThreeId], [t].[Payload], [t].[Id], [t].[Name], [e].[Id] +SELECT [t0].[OneId], [t0].[ThreeId], [t0].[Payload], [t0].[Id], [t0].[Name], [e].[Id] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [j].[OneId], [j].[ThreeId], [j].[Payload], [e0].[Id], [e0].[Name] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] """, // """ -SELECT [t0].[OneId], [t0].[TwoId], [t0].[JoinOneToTwoExtraId], [t0].[Id], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name], [t0].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +SELECT [t2].[OneId], [t2].[TwoId], [t2].[JoinOneToTwoExtraId], [t2].[Id], [t2].[CollectionInverseId], [t2].[ExtraId], [t2].[Name], [t2].[ReferenceInverseId], [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [j].[OneId], [j].[ThreeId], [e0].[Id] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] INNER JOIN ( SELECT [t1].[OneId], [t1].[TwoId], [t1].[JoinOneToTwoExtraId], [t1].[Id], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name], [t1].[ReferenceInverseId] FROM ( @@ -1835,32 +1835,32 @@ FROM [JoinOneToTwo] AS [j0] INNER JOIN [EntityTwos] AS [e1] ON [j0].[TwoId] = [e1].[Id] ) AS [t1] WHERE 1 < [t1].[row] AND [t1].[row] <= 3 -) AS [t0] ON [t].[Id] = [t0].[OneId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id], [t0].[OneId], [t0].[Id] +) AS [t2] ON [t0].[Id] = [t2].[OneId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id], [t2].[OneId], [t2].[Id] """, // """ -SELECT [t0].[EntityBranchId], [t0].[EntityOneId], [t0].[Id], [t0].[Name], [t0].[Number], [t0].[IsGreen], [t0].[Discriminator], [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +SELECT [t3].[EntityBranchId], [t3].[EntityOneId], [t3].[Id], [t3].[Name], [t3].[Number], [t3].[IsGreen], [t3].[Discriminator], [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [j].[OneId], [j].[ThreeId], [e0].[Id] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] INNER JOIN ( - SELECT [j0].[EntityBranchId], [j0].[EntityOneId], [t1].[Id], [t1].[Name], [t1].[Number], [t1].[IsGreen], [t1].[Discriminator] - FROM [JoinOneToBranch] AS [j0] + SELECT [j1].[EntityBranchId], [j1].[EntityOneId], [t].[Id], [t].[Name], [t].[Number], [t].[IsGreen], [t].[Discriminator] + FROM [JoinOneToBranch] AS [j1] INNER JOIN ( - SELECT [b].[Id], [b].[Name], [b].[Number], NULL AS [IsGreen], N'EntityBranch' AS [Discriminator] - FROM [Branches] AS [b] + SELECT [b0].[Id], [b0].[Name], [b0].[Number], NULL AS [IsGreen], N'EntityBranch' AS [Discriminator] + FROM [Branches] AS [b0] UNION ALL - SELECT [l].[Id], [l].[Name], [l].[Number], [l].[IsGreen], N'EntityLeaf' AS [Discriminator] - FROM [Leaves] AS [l] - ) AS [t1] ON [j0].[EntityBranchId] = [t1].[Id] - WHERE [t1].[Id] < 20 -) AS [t0] ON [t].[Id] = [t0].[EntityOneId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] + SELECT [l0].[Id], [l0].[Name], [l0].[Number], [l0].[IsGreen], N'EntityLeaf' AS [Discriminator] + FROM [Leaves] AS [l0] + ) AS [t] ON [j1].[EntityBranchId] = [t].[Id] + WHERE [t].[Id] < 20 +) AS [t3] ON [t0].[Id] = [t3].[EntityOneId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TPCRelationshipsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TPCRelationshipsQuerySqlServerTest.cs index 1f8162eec10..22b7ce971c7 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TPCRelationshipsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TPCRelationshipsQuerySqlServerTest.cs @@ -25,7 +25,7 @@ public override void Changes_in_derived_related_entities_are_detected() AssertSql( """ -SELECT [t0].[Id], [t0].[Name], [t0].[BaseId], [t0].[Discriminator], [t0].[BaseInheritanceRelationshipEntityId], [t0].[Id1], [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [t0].[Id0], [t0].[Name0], [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [t0].[OwnedReferenceOnDerived_Id], [t0].[OwnedReferenceOnDerived_Name], [t1].[Id], [t1].[BaseParentId], [t1].[Name], [t1].[DerivedProperty], [t1].[Discriminator] +SELECT [t1].[Id], [t1].[Name], [t1].[BaseId], [t1].[Discriminator], [t1].[BaseInheritanceRelationshipEntityId], [t1].[Id1], [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [t1].[Id0], [t1].[Name0], [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [t1].[OwnedReferenceOnDerived_Id], [t1].[OwnedReferenceOnDerived_Name], [t0].[Id], [t0].[BaseParentId], [t0].[Name], [t0].[DerivedProperty], [t0].[Discriminator] FROM ( SELECT TOP(2) [t].[Id], [t].[Name], [t].[BaseId], [t].[Discriminator], [o].[BaseInheritanceRelationshipEntityId], [o].[Id] AS [Id0], [o].[Name] AS [Name0], [d].[Id] AS [Id1], [d].[OwnedReferenceOnDerived_Id], [d].[OwnedReferenceOnDerived_Name] FROM ( @@ -38,17 +38,17 @@ FROM [DerivedEntities] AS [d2] LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] WHERE [t].[Name] = N'Derived1(4)' -) AS [t0] -LEFT JOIN [OwnedCollections] AS [o0] ON [t0].[Id] = [o0].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t0].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +) AS [t1] +LEFT JOIN [OwnedCollections] AS [o0] ON [t1].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t1].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] LEFT JOIN ( SELECT [b].[Id], [b].[BaseParentId], [b].[Name], NULL AS [DerivedProperty], N'BaseCollectionOnBase' AS [Discriminator] FROM [BaseCollectionsOnBase] AS [b] UNION ALL SELECT [d1].[Id], [d1].[BaseParentId], [d1].[Name], [d1].[DerivedProperty], N'DerivedCollectionOnBase' AS [Discriminator] FROM [DerivedCollectionsOnBase] AS [d1] -) AS [t1] ON [t0].[Id] = [t1].[BaseParentId] -ORDER BY [t0].[Id], [t0].[BaseInheritanceRelationshipEntityId], [t0].[Id1], [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id] +) AS [t0] ON [t1].[Id] = [t0].[BaseParentId] +ORDER BY [t1].[Id], [t1].[BaseInheritanceRelationshipEntityId], [t1].[Id1], [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id] """); } @@ -849,7 +849,7 @@ public override async Task Nested_include_with_inheritance_collection_collection AssertSql( """ -SELECT [t].[Id], [t].[Name], [t].[BaseId], [t].[Discriminator], [o].[BaseInheritanceRelationshipEntityId], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [o].[Id], [o].[Name], [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [d].[OwnedReferenceOnDerived_Id], [d].[OwnedReferenceOnDerived_Name], [t1].[Id], [t1].[BaseParentId], [t1].[Name], [t1].[DerivedProperty], [t1].[Discriminator], [t1].[Id0], [t1].[Name0], [t1].[ParentCollectionId], [t1].[ParentReferenceId], [t1].[Discriminator0] +SELECT [t].[Id], [t].[Name], [t].[BaseId], [t].[Discriminator], [o].[BaseInheritanceRelationshipEntityId], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [o].[Id], [o].[Name], [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [d].[OwnedReferenceOnDerived_Id], [d].[OwnedReferenceOnDerived_Name], [t2].[Id], [t2].[BaseParentId], [t2].[Name], [t2].[DerivedProperty], [t2].[Discriminator], [t2].[Id0], [t2].[Name0], [t2].[ParentCollectionId], [t2].[ParentReferenceId], [t2].[Discriminator0] FROM ( SELECT [b].[Id], [b].[Name], NULL AS [BaseId], N'BaseInheritanceRelationshipEntity' AS [Discriminator] FROM [BaseEntities] AS [b] @@ -862,7 +862,7 @@ FROM [DerivedEntities] AS [d1] LEFT JOIN [OwnedCollections] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] LEFT JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] LEFT JOIN ( - SELECT [t0].[Id], [t0].[BaseParentId], [t0].[Name], [t0].[DerivedProperty], [t0].[Discriminator], [t2].[Id] AS [Id0], [t2].[Name] AS [Name0], [t2].[ParentCollectionId], [t2].[ParentReferenceId], [t2].[Discriminator] AS [Discriminator0] + SELECT [t0].[Id], [t0].[BaseParentId], [t0].[Name], [t0].[DerivedProperty], [t0].[Discriminator], [t1].[Id] AS [Id0], [t1].[Name] AS [Name0], [t1].[ParentCollectionId], [t1].[ParentReferenceId], [t1].[Discriminator] AS [Discriminator0] FROM ( SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Name], NULL AS [DerivedProperty], N'BaseCollectionOnBase' AS [Discriminator] FROM [BaseCollectionsOnBase] AS [b0] @@ -876,9 +876,9 @@ FROM [NestedCollections] AS [n] UNION ALL SELECT [n0].[Id], [n0].[Name], [n0].[ParentCollectionId], [n0].[ParentReferenceId], N'NestedCollectionDerived' AS [Discriminator] FROM [NestedCollectionsDerived] AS [n0] - ) AS [t2] ON [t0].[Id] = [t2].[ParentCollectionId] -) AS [t1] ON [t].[Id] = [t1].[BaseParentId] -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [t1].[Id] + ) AS [t1] ON [t0].[Id] = [t1].[ParentCollectionId] +) AS [t2] ON [t].[Id] = [t2].[BaseParentId] +ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [t2].[Id] """); } @@ -924,7 +924,7 @@ public override async Task Nested_include_with_inheritance_collection_reference( AssertSql( """ -SELECT [t].[Id], [t].[Name], [t].[BaseId], [t].[Discriminator], [o].[BaseInheritanceRelationshipEntityId], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [o].[Id], [o].[Name], [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [d].[OwnedReferenceOnDerived_Id], [d].[OwnedReferenceOnDerived_Name], [t1].[Id], [t1].[BaseParentId], [t1].[Name], [t1].[DerivedProperty], [t1].[Discriminator], [t1].[Id0], [t1].[Name0], [t1].[ParentCollectionId], [t1].[ParentReferenceId], [t1].[Discriminator0] +SELECT [t].[Id], [t].[Name], [t].[BaseId], [t].[Discriminator], [o].[BaseInheritanceRelationshipEntityId], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [o].[Id], [o].[Name], [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [d].[OwnedReferenceOnDerived_Id], [d].[OwnedReferenceOnDerived_Name], [t2].[Id], [t2].[BaseParentId], [t2].[Name], [t2].[DerivedProperty], [t2].[Discriminator], [t2].[Id0], [t2].[Name0], [t2].[ParentCollectionId], [t2].[ParentReferenceId], [t2].[Discriminator0] FROM ( SELECT [b].[Id], [b].[Name], NULL AS [BaseId], N'BaseInheritanceRelationshipEntity' AS [Discriminator] FROM [BaseEntities] AS [b] @@ -937,7 +937,7 @@ FROM [DerivedEntities] AS [d1] LEFT JOIN [OwnedCollections] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] LEFT JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] LEFT JOIN ( - SELECT [t0].[Id], [t0].[BaseParentId], [t0].[Name], [t0].[DerivedProperty], [t0].[Discriminator], [t2].[Id] AS [Id0], [t2].[Name] AS [Name0], [t2].[ParentCollectionId], [t2].[ParentReferenceId], [t2].[Discriminator] AS [Discriminator0] + SELECT [t0].[Id], [t0].[BaseParentId], [t0].[Name], [t0].[DerivedProperty], [t0].[Discriminator], [t1].[Id] AS [Id0], [t1].[Name] AS [Name0], [t1].[ParentCollectionId], [t1].[ParentReferenceId], [t1].[Discriminator] AS [Discriminator0] FROM ( SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Name], NULL AS [DerivedProperty], N'BaseCollectionOnBase' AS [Discriminator] FROM [BaseCollectionsOnBase] AS [b0] @@ -951,9 +951,9 @@ FROM [NestedReferences] AS [n] UNION ALL SELECT [n0].[Id], [n0].[Name], [n0].[ParentCollectionId], [n0].[ParentReferenceId], N'NestedReferenceDerived' AS [Discriminator] FROM [NestedReferencesDerived] AS [n0] - ) AS [t2] ON [t0].[Id] = [t2].[ParentCollectionId] -) AS [t1] ON [t].[Id] = [t1].[BaseParentId] -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [t1].[Id] + ) AS [t1] ON [t0].[Id] = [t1].[ParentCollectionId] +) AS [t2] ON [t].[Id] = [t2].[BaseParentId] +ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [t2].[Id] """); } @@ -1264,54 +1264,54 @@ FROM [DerivedEntities] AS [d0] """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b2].[Id] + FROM [BaseEntities] AS [b2] UNION ALL - SELECT [d0].[Id] - FROM [DerivedEntities] AS [d0] + SELECT [d5].[Id] + FROM [DerivedEntities] AS [d5] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [OwnedCollections] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [OwnedCollections] AS [o1] ON [t].[Id] = [o1].[BaseInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b3].[Id] + FROM [BaseEntities] AS [b3] UNION ALL - SELECT [d1].[Id] - FROM [DerivedEntities] AS [d1] + SELECT [d6].[Id] + FROM [DerivedEntities] AS [d6] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [t].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """, // """ -SELECT [t0].[Id], [t0].[BaseParentId], [t0].[Name], [t0].[DerivedProperty], [t0].[Discriminator], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [t0].[Id], [t0].[BaseParentId], [t0].[Name], [t0].[DerivedProperty], [t0].[Discriminator], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b4].[Id] + FROM [BaseEntities] AS [b4] UNION ALL - SELECT [d0].[Id] - FROM [DerivedEntities] AS [d0] + SELECT [d7].[Id] + FROM [DerivedEntities] AS [d7] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] INNER JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Name], NULL AS [DerivedProperty], N'BaseCollectionOnBase' AS [Discriminator] - FROM [BaseCollectionsOnBase] AS [b0] + SELECT [b5].[Id], [b5].[BaseParentId], [b5].[Name], NULL AS [DerivedProperty], N'BaseCollectionOnBase' AS [Discriminator] + FROM [BaseCollectionsOnBase] AS [b5] UNION ALL - SELECT [d1].[Id], [d1].[BaseParentId], [d1].[Name], [d1].[DerivedProperty], N'DerivedCollectionOnBase' AS [Discriminator] - FROM [DerivedCollectionsOnBase] AS [d1] + SELECT [d8].[Id], [d8].[BaseParentId], [d8].[Name], [d8].[DerivedProperty], N'DerivedCollectionOnBase' AS [Discriminator] + FROM [DerivedCollectionsOnBase] AS [d8] ) AS [t0] ON [t].[Id] = [t0].[BaseParentId] -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """); } @@ -1342,47 +1342,47 @@ FROM [DerivedEntities] AS [d1] """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [t].[Id], [t0].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [t].[Id], [t0].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] FROM ( - SELECT [b].[Id], [b].[BaseParentId] - FROM [BaseCollectionsOnBase] AS [b] + SELECT [b3].[Id], [b3].[BaseParentId] + FROM [BaseCollectionsOnBase] AS [b3] UNION ALL - SELECT [d0].[Id], [d0].[BaseParentId] - FROM [DerivedCollectionsOnBase] AS [d0] + SELECT [d6].[Id], [d6].[BaseParentId] + FROM [DerivedCollectionsOnBase] AS [d6] ) AS [t] LEFT JOIN ( - SELECT [b0].[Id] - FROM [BaseEntities] AS [b0] + SELECT [b4].[Id] + FROM [BaseEntities] AS [b4] UNION ALL - SELECT [d1].[Id] - FROM [DerivedEntities] AS [d1] + SELECT [d7].[Id] + FROM [DerivedEntities] AS [d7] ) AS [t0] ON [t].[BaseParentId] = [t0].[Id] -LEFT JOIN [OwnedReferences] AS [o] ON [t0].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t0].[Id] = [d].[Id] -INNER JOIN [OwnedCollections] AS [o0] ON [t0].[Id] = [o0].[BaseInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [t0].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t0].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d2] ON [t0].[Id] = [d2].[Id] +INNER JOIN [OwnedCollections] AS [o1] ON [t0].[Id] = [o1].[BaseInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [t0].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [t].[Id], [t0].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [d3].[DerivedInheritanceRelationshipEntityId], [d3].[Id], [d3].[Name], [t].[Id], [t0].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] FROM ( - SELECT [b].[Id], [b].[BaseParentId] - FROM [BaseCollectionsOnBase] AS [b] + SELECT [b5].[Id], [b5].[BaseParentId] + FROM [BaseCollectionsOnBase] AS [b5] UNION ALL - SELECT [d1].[Id], [d1].[BaseParentId] - FROM [DerivedCollectionsOnBase] AS [d1] + SELECT [d8].[Id], [d8].[BaseParentId] + FROM [DerivedCollectionsOnBase] AS [d8] ) AS [t] LEFT JOIN ( - SELECT [b0].[Id] - FROM [BaseEntities] AS [b0] + SELECT [b6].[Id] + FROM [BaseEntities] AS [b6] UNION ALL - SELECT [d2].[Id] - FROM [DerivedEntities] AS [d2] + SELECT [d9].[Id] + FROM [DerivedEntities] AS [d9] ) AS [t0] ON [t].[BaseParentId] = [t0].[Id] -LEFT JOIN [OwnedReferences] AS [o] ON [t0].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t0].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t0].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [t0].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t0].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d2] ON [t0].[Id] = [d2].[Id] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d3] ON [t0].[Id] = [d3].[DerivedInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [t0].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] """); } @@ -1407,57 +1407,57 @@ WHERE [t].[Name] <> N'Bar' OR [t].[Name] IS NULL """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id], [b].[Name] - FROM [BaseEntities] AS [b] + SELECT [b2].[Id], [b2].[Name] + FROM [BaseEntities] AS [b2] UNION ALL - SELECT [d0].[Id], [d0].[Name] - FROM [DerivedEntities] AS [d0] + SELECT [d5].[Id], [d5].[Name] + FROM [DerivedEntities] AS [d5] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [OwnedCollections] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [OwnedCollections] AS [o1] ON [t].[Id] = [o1].[BaseInheritanceRelationshipEntityId] WHERE [t].[Name] <> N'Bar' OR [t].[Name] IS NULL -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id], [b].[Name] - FROM [BaseEntities] AS [b] + SELECT [b3].[Id], [b3].[Name] + FROM [BaseEntities] AS [b3] UNION ALL - SELECT [d1].[Id], [d1].[Name] - FROM [DerivedEntities] AS [d1] + SELECT [d6].[Id], [d6].[Name] + FROM [DerivedEntities] AS [d6] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [t].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] WHERE [t].[Name] <> N'Bar' OR [t].[Name] IS NULL -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """, // """ -SELECT [t0].[Id], [t0].[BaseParentId], [t0].[Name], [t0].[DerivedProperty], [t0].[Discriminator], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [t0].[Id], [t0].[BaseParentId], [t0].[Name], [t0].[DerivedProperty], [t0].[Discriminator], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id], [b].[Name] - FROM [BaseEntities] AS [b] + SELECT [b4].[Id], [b4].[Name] + FROM [BaseEntities] AS [b4] UNION ALL - SELECT [d0].[Id], [d0].[Name] - FROM [DerivedEntities] AS [d0] + SELECT [d7].[Id], [d7].[Name] + FROM [DerivedEntities] AS [d7] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] INNER JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Name], NULL AS [DerivedProperty], N'BaseCollectionOnBase' AS [Discriminator] - FROM [BaseCollectionsOnBase] AS [b0] + SELECT [b5].[Id], [b5].[BaseParentId], [b5].[Name], NULL AS [DerivedProperty], N'BaseCollectionOnBase' AS [Discriminator] + FROM [BaseCollectionsOnBase] AS [b5] UNION ALL - SELECT [d1].[Id], [d1].[BaseParentId], [d1].[Name], [d1].[DerivedProperty], N'DerivedCollectionOnBase' AS [Discriminator] - FROM [DerivedCollectionsOnBase] AS [d1] + SELECT [d8].[Id], [d8].[BaseParentId], [d8].[Name], [d8].[DerivedProperty], N'DerivedCollectionOnBase' AS [Discriminator] + FROM [DerivedCollectionsOnBase] AS [d8] ) AS [t0] ON [t].[Id] = [t0].[BaseParentId] WHERE [t].[Name] <> N'Bar' OR [t].[Name] IS NULL -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """); } @@ -1489,49 +1489,49 @@ WHERE [t].[Name] <> N'Bar' OR [t].[Name] IS NULL """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [t].[Id], [t0].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [t].[Id], [t0].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] FROM ( - SELECT [b].[Id], [b].[BaseParentId], [b].[Name] - FROM [BaseCollectionsOnBase] AS [b] + SELECT [b3].[Id], [b3].[BaseParentId], [b3].[Name] + FROM [BaseCollectionsOnBase] AS [b3] UNION ALL - SELECT [d0].[Id], [d0].[BaseParentId], [d0].[Name] - FROM [DerivedCollectionsOnBase] AS [d0] + SELECT [d6].[Id], [d6].[BaseParentId], [d6].[Name] + FROM [DerivedCollectionsOnBase] AS [d6] ) AS [t] LEFT JOIN ( - SELECT [b0].[Id] - FROM [BaseEntities] AS [b0] + SELECT [b4].[Id] + FROM [BaseEntities] AS [b4] UNION ALL - SELECT [d1].[Id] - FROM [DerivedEntities] AS [d1] + SELECT [d7].[Id] + FROM [DerivedEntities] AS [d7] ) AS [t0] ON [t].[BaseParentId] = [t0].[Id] -LEFT JOIN [OwnedReferences] AS [o] ON [t0].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t0].[Id] = [d].[Id] -INNER JOIN [OwnedCollections] AS [o0] ON [t0].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [t0].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d2] ON [t0].[Id] = [d2].[Id] +INNER JOIN [OwnedCollections] AS [o1] ON [t0].[Id] = [o1].[BaseInheritanceRelationshipEntityId] WHERE [t].[Name] <> N'Bar' OR [t].[Name] IS NULL -ORDER BY [t].[Id], [t0].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +ORDER BY [t].[Id], [t0].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [t].[Id], [t0].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [d3].[DerivedInheritanceRelationshipEntityId], [d3].[Id], [d3].[Name], [t].[Id], [t0].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] FROM ( - SELECT [b].[Id], [b].[BaseParentId], [b].[Name] - FROM [BaseCollectionsOnBase] AS [b] + SELECT [b5].[Id], [b5].[BaseParentId], [b5].[Name] + FROM [BaseCollectionsOnBase] AS [b5] UNION ALL - SELECT [d1].[Id], [d1].[BaseParentId], [d1].[Name] - FROM [DerivedCollectionsOnBase] AS [d1] + SELECT [d8].[Id], [d8].[BaseParentId], [d8].[Name] + FROM [DerivedCollectionsOnBase] AS [d8] ) AS [t] LEFT JOIN ( - SELECT [b0].[Id] - FROM [BaseEntities] AS [b0] + SELECT [b6].[Id] + FROM [BaseEntities] AS [b6] UNION ALL - SELECT [d2].[Id] - FROM [DerivedEntities] AS [d2] + SELECT [d9].[Id] + FROM [DerivedEntities] AS [d9] ) AS [t0] ON [t].[BaseParentId] = [t0].[Id] -LEFT JOIN [OwnedReferences] AS [o] ON [t0].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t0].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t0].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [t0].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d2] ON [t0].[Id] = [d2].[Id] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d3] ON [t0].[Id] = [d3].[DerivedInheritanceRelationshipEntityId] WHERE [t].[Name] <> N'Bar' OR [t].[Name] IS NULL -ORDER BY [t].[Id], [t0].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +ORDER BY [t].[Id], [t0].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] """); } @@ -1555,48 +1555,48 @@ FROM [DerivedEntities] AS [d0] """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b1].[Id] + FROM [BaseEntities] AS [b1] UNION ALL - SELECT [d0].[Id] - FROM [DerivedEntities] AS [d0] + SELECT [d4].[Id] + FROM [DerivedEntities] AS [d4] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [OwnedCollections] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [OwnedCollections] AS [o1] ON [t].[Id] = [o1].[BaseInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b2].[Id] + FROM [BaseEntities] AS [b2] UNION ALL - SELECT [d1].[Id] - FROM [DerivedEntities] AS [d1] + SELECT [d5].[Id] + FROM [DerivedEntities] AS [d5] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [t].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """, // """ -SELECT [c].[Id], [c].[Name], [c].[ParentId], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [c].[Id], [c].[Name], [c].[ParentId], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b3].[Id] + FROM [BaseEntities] AS [b3] UNION ALL - SELECT [d0].[Id] - FROM [DerivedEntities] AS [d0] + SELECT [d6].[Id] + FROM [DerivedEntities] AS [d6] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] INNER JOIN [CollectionsOnBase] AS [c] ON [t].[Id] = [c].[ParentId] -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """); } @@ -1621,35 +1621,35 @@ FROM [DerivedEntities] AS [d0] """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [c].[Id], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [c].[Id], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM [CollectionsOnBase] AS [c] LEFT JOIN ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b1].[Id] + FROM [BaseEntities] AS [b1] UNION ALL - SELECT [d0].[Id] - FROM [DerivedEntities] AS [d0] + SELECT [d4].[Id] + FROM [DerivedEntities] AS [d4] ) AS [t] ON [c].[ParentId] = [t].[Id] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [OwnedCollections] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] -ORDER BY [c].[Id], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [OwnedCollections] AS [o1] ON [t].[Id] = [o1].[BaseInheritanceRelationshipEntityId] +ORDER BY [c].[Id], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [c].[Id], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [c].[Id], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM [CollectionsOnBase] AS [c] LEFT JOIN ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b2].[Id] + FROM [BaseEntities] AS [b2] UNION ALL - SELECT [d1].[Id] - FROM [DerivedEntities] AS [d1] + SELECT [d5].[Id] + FROM [DerivedEntities] AS [d5] ) AS [t] ON [c].[ParentId] = [t].[Id] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] -ORDER BY [c].[Id], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [t].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [c].[Id], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """); } @@ -1674,51 +1674,51 @@ WHERE [t].[Name] <> N'Bar' OR [t].[Name] IS NULL """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id], [b].[Name] - FROM [BaseEntities] AS [b] + SELECT [b1].[Id], [b1].[Name] + FROM [BaseEntities] AS [b1] UNION ALL - SELECT [d0].[Id], [d0].[Name] - FROM [DerivedEntities] AS [d0] + SELECT [d4].[Id], [d4].[Name] + FROM [DerivedEntities] AS [d4] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [OwnedCollections] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [OwnedCollections] AS [o1] ON [t].[Id] = [o1].[BaseInheritanceRelationshipEntityId] WHERE [t].[Name] <> N'Bar' OR [t].[Name] IS NULL -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id], [b].[Name] - FROM [BaseEntities] AS [b] + SELECT [b2].[Id], [b2].[Name] + FROM [BaseEntities] AS [b2] UNION ALL - SELECT [d1].[Id], [d1].[Name] - FROM [DerivedEntities] AS [d1] + SELECT [d5].[Id], [d5].[Name] + FROM [DerivedEntities] AS [d5] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [t].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] WHERE [t].[Name] <> N'Bar' OR [t].[Name] IS NULL -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """, // """ -SELECT [c].[Id], [c].[Name], [c].[ParentId], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [c].[Id], [c].[Name], [c].[ParentId], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id], [b].[Name] - FROM [BaseEntities] AS [b] + SELECT [b3].[Id], [b3].[Name] + FROM [BaseEntities] AS [b3] UNION ALL - SELECT [d0].[Id], [d0].[Name] - FROM [DerivedEntities] AS [d0] + SELECT [d6].[Id], [d6].[Name] + FROM [DerivedEntities] AS [d6] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] INNER JOIN [CollectionsOnBase] AS [c] ON [t].[Id] = [c].[ParentId] WHERE [t].[Name] <> N'Bar' OR [t].[Name] IS NULL -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """); } @@ -1744,37 +1744,37 @@ WHERE [c].[Name] <> N'Bar' OR [c].[Name] IS NULL """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [c].[Id], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [c].[Id], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM [CollectionsOnBase] AS [c] LEFT JOIN ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b1].[Id] + FROM [BaseEntities] AS [b1] UNION ALL - SELECT [d0].[Id] - FROM [DerivedEntities] AS [d0] + SELECT [d4].[Id] + FROM [DerivedEntities] AS [d4] ) AS [t] ON [c].[ParentId] = [t].[Id] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [OwnedCollections] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [OwnedCollections] AS [o1] ON [t].[Id] = [o1].[BaseInheritanceRelationshipEntityId] WHERE [c].[Name] <> N'Bar' OR [c].[Name] IS NULL -ORDER BY [c].[Id], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +ORDER BY [c].[Id], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [c].[Id], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [c].[Id], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM [CollectionsOnBase] AS [c] LEFT JOIN ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b2].[Id] + FROM [BaseEntities] AS [b2] UNION ALL - SELECT [d1].[Id] - FROM [DerivedEntities] AS [d1] + SELECT [d5].[Id] + FROM [DerivedEntities] AS [d5] ) AS [t] ON [c].[ParentId] = [t].[Id] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [t].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] WHERE [c].[Name] <> N'Bar' OR [c].[Name] IS NULL -ORDER BY [c].[Id], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +ORDER BY [c].[Id], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """); } @@ -1791,33 +1791,33 @@ FROM [DerivedEntities] AS [d] """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] FROM [DerivedEntities] AS [d] -LEFT JOIN [OwnedReferences] AS [o] ON [d].[Id] = [o].[BaseInheritanceRelationshipEntityId] -INNER JOIN [OwnedCollections] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] -ORDER BY [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [OwnedCollections] AS [o1] ON [d].[Id] = [o1].[BaseInheritanceRelationshipEntityId] +ORDER BY [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] FROM [DerivedEntities] AS [d] -LEFT JOIN [OwnedReferences] AS [o] ON [d].[Id] = [o].[BaseInheritanceRelationshipEntityId] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [d].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] -ORDER BY [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [d].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] +ORDER BY [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] """, // """ -SELECT [t].[Id], [t].[BaseParentId], [t].[Name], [t].[DerivedProperty], [t].[Discriminator], [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +SELECT [t].[Id], [t].[BaseParentId], [t].[Name], [t].[DerivedProperty], [t].[Discriminator], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] FROM [DerivedEntities] AS [d] -LEFT JOIN [OwnedReferences] AS [o] ON [d].[Id] = [o].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] INNER JOIN ( - SELECT [b].[Id], [b].[BaseParentId], [b].[Name], NULL AS [DerivedProperty], N'BaseCollectionOnBase' AS [Discriminator] - FROM [BaseCollectionsOnBase] AS [b] + SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Name], NULL AS [DerivedProperty], N'BaseCollectionOnBase' AS [Discriminator] + FROM [BaseCollectionsOnBase] AS [b0] UNION ALL - SELECT [d0].[Id], [d0].[BaseParentId], [d0].[Name], [d0].[DerivedProperty], N'DerivedCollectionOnBase' AS [Discriminator] - FROM [DerivedCollectionsOnBase] AS [d0] + SELECT [d3].[Id], [d3].[BaseParentId], [d3].[Name], [d3].[DerivedProperty], N'DerivedCollectionOnBase' AS [Discriminator] + FROM [DerivedCollectionsOnBase] AS [d3] ) AS [t] ON [d].[Id] = [t].[BaseParentId] -ORDER BY [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +ORDER BY [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] """); } @@ -1833,33 +1833,33 @@ FROM [DerivedEntities] AS [d] """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] FROM [DerivedEntities] AS [d] -LEFT JOIN [OwnedReferences] AS [o] ON [d].[Id] = [o].[BaseInheritanceRelationshipEntityId] -INNER JOIN [OwnedCollections] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] -ORDER BY [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [OwnedCollections] AS [o1] ON [d].[Id] = [o1].[BaseInheritanceRelationshipEntityId] +ORDER BY [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] FROM [DerivedEntities] AS [d] -LEFT JOIN [OwnedReferences] AS [o] ON [d].[Id] = [o].[BaseInheritanceRelationshipEntityId] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [d].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] -ORDER BY [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [d].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] +ORDER BY [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] """, // """ -SELECT [t].[Id], [t].[Name], [t].[ParentId], [t].[DerivedInheritanceRelationshipEntityId], [t].[Discriminator], [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +SELECT [t].[Id], [t].[Name], [t].[ParentId], [t].[DerivedInheritanceRelationshipEntityId], [t].[Discriminator], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] FROM [DerivedEntities] AS [d] -LEFT JOIN [OwnedReferences] AS [o] ON [d].[Id] = [o].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] INNER JOIN ( - SELECT [b].[Id], [b].[Name], [b].[ParentId], NULL AS [DerivedInheritanceRelationshipEntityId], N'BaseCollectionOnDerived' AS [Discriminator] - FROM [BaseCollectionsOnDerived] AS [b] + SELECT [b0].[Id], [b0].[Name], [b0].[ParentId], NULL AS [DerivedInheritanceRelationshipEntityId], N'BaseCollectionOnDerived' AS [Discriminator] + FROM [BaseCollectionsOnDerived] AS [b0] UNION ALL - SELECT [d0].[Id], [d0].[Name], [d0].[ParentId], [d0].[DerivedInheritanceRelationshipEntityId], N'DerivedCollectionOnDerived' AS [Discriminator] - FROM [DerivedCollectionsOnDerived] AS [d0] + SELECT [d3].[Id], [d3].[Name], [d3].[ParentId], [d3].[DerivedInheritanceRelationshipEntityId], N'DerivedCollectionOnDerived' AS [Discriminator] + FROM [DerivedCollectionsOnDerived] AS [d3] ) AS [t] ON [d].[Id] = [t].[ParentId] -ORDER BY [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +ORDER BY [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] """); } @@ -1876,27 +1876,27 @@ FROM [DerivedEntities] AS [d] """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] FROM [DerivedEntities] AS [d] -LEFT JOIN [OwnedReferences] AS [o] ON [d].[Id] = [o].[BaseInheritanceRelationshipEntityId] -INNER JOIN [OwnedCollections] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] -ORDER BY [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [OwnedCollections] AS [o1] ON [d].[Id] = [o1].[BaseInheritanceRelationshipEntityId] +ORDER BY [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] FROM [DerivedEntities] AS [d] -LEFT JOIN [OwnedReferences] AS [o] ON [d].[Id] = [o].[BaseInheritanceRelationshipEntityId] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [d].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] -ORDER BY [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [d].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] +ORDER BY [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] """, // """ -SELECT [d0].[Id], [d0].[Name], [d0].[ParentId], [d0].[DerivedInheritanceRelationshipEntityId], [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +SELECT [d2].[Id], [d2].[Name], [d2].[ParentId], [d2].[DerivedInheritanceRelationshipEntityId], [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] FROM [DerivedEntities] AS [d] -LEFT JOIN [OwnedReferences] AS [o] ON [d].[Id] = [o].[BaseInheritanceRelationshipEntityId] -INNER JOIN [DerivedCollectionsOnDerived] AS [d0] ON [d].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] -ORDER BY [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [DerivedCollectionsOnDerived] AS [d2] ON [d].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [d].[Id], [o0].[BaseInheritanceRelationshipEntityId] """); } @@ -1920,33 +1920,33 @@ FROM [DerivedCollectionsOnDerived] AS [d0] """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [t].[Id], [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [t].[Id], [d0].[Id], [o0].[BaseInheritanceRelationshipEntityId] FROM ( - SELECT [b].[Id], [b].[ParentId] - FROM [BaseCollectionsOnDerived] AS [b] + SELECT [b1].[Id], [b1].[ParentId] + FROM [BaseCollectionsOnDerived] AS [b1] UNION ALL - SELECT [d0].[Id], [d0].[ParentId] - FROM [DerivedCollectionsOnDerived] AS [d0] + SELECT [d4].[Id], [d4].[ParentId] + FROM [DerivedCollectionsOnDerived] AS [d4] ) AS [t] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[ParentId] = [d].[Id] -LEFT JOIN [OwnedReferences] AS [o] ON [d].[Id] = [o].[BaseInheritanceRelationshipEntityId] -INNER JOIN [OwnedCollections] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d0] ON [t].[ParentId] = [d0].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [d0].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [OwnedCollections] AS [o1] ON [d0].[Id] = [o1].[BaseInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [d0].[Id], [o0].[BaseInheritanceRelationshipEntityId] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [t].[Id], [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [t].[Id], [d0].[Id], [o0].[BaseInheritanceRelationshipEntityId] FROM ( - SELECT [b].[Id], [b].[ParentId] - FROM [BaseCollectionsOnDerived] AS [b] + SELECT [b2].[Id], [b2].[ParentId] + FROM [BaseCollectionsOnDerived] AS [b2] UNION ALL - SELECT [d1].[Id], [d1].[ParentId] - FROM [DerivedCollectionsOnDerived] AS [d1] + SELECT [d5].[Id], [d5].[ParentId] + FROM [DerivedCollectionsOnDerived] AS [d5] ) AS [t] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[ParentId] = [d].[Id] -LEFT JOIN [OwnedReferences] AS [o] ON [d].[Id] = [o].[BaseInheritanceRelationshipEntityId] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [d].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [d].[Id], [o].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d0] ON [t].[ParentId] = [d0].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [d0].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [d0].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [d0].[Id], [o0].[BaseInheritanceRelationshipEntityId] """); } @@ -1977,75 +1977,75 @@ FROM [DerivedReferencesOnBase] AS [d1] """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [t].[Id], [t0].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [t].[Id], [t0].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b3].[Id] + FROM [BaseEntities] AS [b3] UNION ALL - SELECT [d0].[Id] - FROM [DerivedEntities] AS [d0] + SELECT [d6].[Id] + FROM [DerivedEntities] AS [d6] ) AS [t] LEFT JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId] - FROM [BaseReferencesOnBase] AS [b0] + SELECT [b4].[Id], [b4].[BaseParentId] + FROM [BaseReferencesOnBase] AS [b4] UNION ALL - SELECT [d1].[Id], [d1].[BaseParentId] - FROM [DerivedReferencesOnBase] AS [d1] + SELECT [d7].[Id], [d7].[BaseParentId] + FROM [DerivedReferencesOnBase] AS [d7] ) AS [t0] ON [t].[Id] = [t0].[BaseParentId] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [OwnedCollections] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [t0].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d2] ON [t].[Id] = [d2].[Id] +INNER JOIN [OwnedCollections] AS [o1] ON [t].[Id] = [o1].[BaseInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [t0].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [t].[Id], [t0].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [d3].[DerivedInheritanceRelationshipEntityId], [d3].[Id], [d3].[Name], [t].[Id], [t0].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b5].[Id] + FROM [BaseEntities] AS [b5] UNION ALL - SELECT [d1].[Id] - FROM [DerivedEntities] AS [d1] + SELECT [d8].[Id] + FROM [DerivedEntities] AS [d8] ) AS [t] LEFT JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId] - FROM [BaseReferencesOnBase] AS [b0] + SELECT [b6].[Id], [b6].[BaseParentId] + FROM [BaseReferencesOnBase] AS [b6] UNION ALL - SELECT [d2].[Id], [d2].[BaseParentId] - FROM [DerivedReferencesOnBase] AS [d2] + SELECT [d9].[Id], [d9].[BaseParentId] + FROM [DerivedReferencesOnBase] AS [d9] ) AS [t0] ON [t].[Id] = [t0].[BaseParentId] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [t0].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d2] ON [t].[Id] = [d2].[Id] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d3] ON [t].[Id] = [d3].[DerivedInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [t0].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] """, // """ -SELECT [t1].[Id], [t1].[Name], [t1].[ParentCollectionId], [t1].[ParentReferenceId], [t1].[Discriminator], [t].[Id], [t0].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [t1].[Id], [t1].[Name], [t1].[ParentCollectionId], [t1].[ParentReferenceId], [t1].[Discriminator], [t].[Id], [t0].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b7].[Id] + FROM [BaseEntities] AS [b7] UNION ALL - SELECT [d0].[Id] - FROM [DerivedEntities] AS [d0] + SELECT [d10].[Id] + FROM [DerivedEntities] AS [d10] ) AS [t] LEFT JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId] - FROM [BaseReferencesOnBase] AS [b0] + SELECT [b8].[Id], [b8].[BaseParentId] + FROM [BaseReferencesOnBase] AS [b8] UNION ALL - SELECT [d1].[Id], [d1].[BaseParentId] - FROM [DerivedReferencesOnBase] AS [d1] + SELECT [d11].[Id], [d11].[BaseParentId] + FROM [DerivedReferencesOnBase] AS [d11] ) AS [t0] ON [t].[Id] = [t0].[BaseParentId] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d2] ON [t].[Id] = [d2].[Id] INNER JOIN ( - SELECT [n].[Id], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], N'NestedCollectionBase' AS [Discriminator] - FROM [NestedCollections] AS [n] + SELECT [n1].[Id], [n1].[Name], [n1].[ParentCollectionId], [n1].[ParentReferenceId], N'NestedCollectionBase' AS [Discriminator] + FROM [NestedCollections] AS [n1] UNION ALL - SELECT [n0].[Id], [n0].[Name], [n0].[ParentCollectionId], [n0].[ParentReferenceId], N'NestedCollectionDerived' AS [Discriminator] - FROM [NestedCollectionsDerived] AS [n0] + SELECT [n2].[Id], [n2].[Name], [n2].[ParentCollectionId], [n2].[ParentReferenceId], N'NestedCollectionDerived' AS [Discriminator] + FROM [NestedCollectionsDerived] AS [n2] ) AS [t1] ON [t0].[Id] = [t1].[ParentReferenceId] -ORDER BY [t].[Id], [t0].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +ORDER BY [t].[Id], [t0].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] """); } @@ -2069,54 +2069,54 @@ FROM [DerivedReferencesOnBase] AS [d0] """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [d].[Id], [t].[Id], [o].[BaseInheritanceRelationshipEntityId] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [d].[Id], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId] FROM [DerivedEntities] AS [d] LEFT JOIN ( - SELECT [b].[Id], [b].[BaseParentId] - FROM [BaseReferencesOnBase] AS [b] + SELECT [b1].[Id], [b1].[BaseParentId] + FROM [BaseReferencesOnBase] AS [b1] UNION ALL - SELECT [d0].[Id], [d0].[BaseParentId] - FROM [DerivedReferencesOnBase] AS [d0] + SELECT [d4].[Id], [d4].[BaseParentId] + FROM [DerivedReferencesOnBase] AS [d4] ) AS [t] ON [d].[Id] = [t].[BaseParentId] -LEFT JOIN [OwnedReferences] AS [o] ON [d].[Id] = [o].[BaseInheritanceRelationshipEntityId] -INNER JOIN [OwnedCollections] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] -ORDER BY [d].[Id], [t].[Id], [o].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [OwnedCollections] AS [o1] ON [d].[Id] = [o1].[BaseInheritanceRelationshipEntityId] +ORDER BY [d].[Id], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [d].[Id], [t].[Id], [o].[BaseInheritanceRelationshipEntityId] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [d].[Id], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId] FROM [DerivedEntities] AS [d] LEFT JOIN ( - SELECT [b].[Id], [b].[BaseParentId] - FROM [BaseReferencesOnBase] AS [b] + SELECT [b2].[Id], [b2].[BaseParentId] + FROM [BaseReferencesOnBase] AS [b2] UNION ALL - SELECT [d1].[Id], [d1].[BaseParentId] - FROM [DerivedReferencesOnBase] AS [d1] + SELECT [d5].[Id], [d5].[BaseParentId] + FROM [DerivedReferencesOnBase] AS [d5] ) AS [t] ON [d].[Id] = [t].[BaseParentId] -LEFT JOIN [OwnedReferences] AS [o] ON [d].[Id] = [o].[BaseInheritanceRelationshipEntityId] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [d].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] -ORDER BY [d].[Id], [t].[Id], [o].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [d].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [d].[Id], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId] """, // """ -SELECT [t0].[Id], [t0].[Name], [t0].[ParentCollectionId], [t0].[ParentReferenceId], [t0].[Discriminator], [d].[Id], [t].[Id], [o].[BaseInheritanceRelationshipEntityId] +SELECT [t0].[Id], [t0].[Name], [t0].[ParentCollectionId], [t0].[ParentReferenceId], [t0].[Discriminator], [d].[Id], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId] FROM [DerivedEntities] AS [d] LEFT JOIN ( - SELECT [b].[Id], [b].[BaseParentId] - FROM [BaseReferencesOnBase] AS [b] + SELECT [b3].[Id], [b3].[BaseParentId] + FROM [BaseReferencesOnBase] AS [b3] UNION ALL - SELECT [d0].[Id], [d0].[BaseParentId] - FROM [DerivedReferencesOnBase] AS [d0] + SELECT [d6].[Id], [d6].[BaseParentId] + FROM [DerivedReferencesOnBase] AS [d6] ) AS [t] ON [d].[Id] = [t].[BaseParentId] -LEFT JOIN [OwnedReferences] AS [o] ON [d].[Id] = [o].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [d].[Id] = [o0].[BaseInheritanceRelationshipEntityId] INNER JOIN ( - SELECT [n].[Id], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], N'NestedCollectionBase' AS [Discriminator] - FROM [NestedCollections] AS [n] + SELECT [n1].[Id], [n1].[Name], [n1].[ParentCollectionId], [n1].[ParentReferenceId], N'NestedCollectionBase' AS [Discriminator] + FROM [NestedCollections] AS [n1] UNION ALL - SELECT [n0].[Id], [n0].[Name], [n0].[ParentCollectionId], [n0].[ParentReferenceId], N'NestedCollectionDerived' AS [Discriminator] - FROM [NestedCollectionsDerived] AS [n0] + SELECT [n2].[Id], [n2].[Name], [n2].[ParentCollectionId], [n2].[ParentReferenceId], N'NestedCollectionDerived' AS [Discriminator] + FROM [NestedCollectionsDerived] AS [n2] ) AS [t0] ON [t].[Id] = [t0].[ParentReferenceId] -ORDER BY [d].[Id], [t].[Id], [o].[BaseInheritanceRelationshipEntityId] +ORDER BY [d].[Id], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId] """); } @@ -2154,61 +2154,61 @@ FROM [DerivedEntities] AS [d1] """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [t].[Id], [t0].[Id], [t1].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [t].[Id], [t0].[Id], [t1].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] FROM ( - SELECT [n].[Id], [n].[ParentReferenceId] - FROM [NestedCollections] AS [n] + SELECT [n3].[Id], [n3].[ParentReferenceId] + FROM [NestedCollections] AS [n3] UNION ALL - SELECT [n0].[Id], [n0].[ParentReferenceId] - FROM [NestedCollectionsDerived] AS [n0] + SELECT [n4].[Id], [n4].[ParentReferenceId] + FROM [NestedCollectionsDerived] AS [n4] ) AS [t] LEFT JOIN ( - SELECT [b].[Id], [b].[BaseParentId] - FROM [BaseReferencesOnBase] AS [b] + SELECT [b3].[Id], [b3].[BaseParentId] + FROM [BaseReferencesOnBase] AS [b3] UNION ALL - SELECT [d0].[Id], [d0].[BaseParentId] - FROM [DerivedReferencesOnBase] AS [d0] + SELECT [d6].[Id], [d6].[BaseParentId] + FROM [DerivedReferencesOnBase] AS [d6] ) AS [t0] ON [t].[ParentReferenceId] = [t0].[Id] LEFT JOIN ( - SELECT [b0].[Id] - FROM [BaseEntities] AS [b0] + SELECT [b4].[Id] + FROM [BaseEntities] AS [b4] UNION ALL - SELECT [d1].[Id] - FROM [DerivedEntities] AS [d1] + SELECT [d7].[Id] + FROM [DerivedEntities] AS [d7] ) AS [t1] ON [t0].[BaseParentId] = [t1].[Id] -LEFT JOIN [OwnedReferences] AS [o] ON [t1].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t1].[Id] = [d].[Id] -INNER JOIN [OwnedCollections] AS [o0] ON [t1].[Id] = [o0].[BaseInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [t0].[Id], [t1].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t1].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d2] ON [t1].[Id] = [d2].[Id] +INNER JOIN [OwnedCollections] AS [o1] ON [t1].[Id] = [o1].[BaseInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [t0].[Id], [t1].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [t].[Id], [t0].[Id], [t1].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [d3].[DerivedInheritanceRelationshipEntityId], [d3].[Id], [d3].[Name], [t].[Id], [t0].[Id], [t1].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] FROM ( - SELECT [n].[Id], [n].[ParentReferenceId] - FROM [NestedCollections] AS [n] + SELECT [n5].[Id], [n5].[ParentReferenceId] + FROM [NestedCollections] AS [n5] UNION ALL - SELECT [n0].[Id], [n0].[ParentReferenceId] - FROM [NestedCollectionsDerived] AS [n0] + SELECT [n6].[Id], [n6].[ParentReferenceId] + FROM [NestedCollectionsDerived] AS [n6] ) AS [t] LEFT JOIN ( - SELECT [b].[Id], [b].[BaseParentId] - FROM [BaseReferencesOnBase] AS [b] + SELECT [b5].[Id], [b5].[BaseParentId] + FROM [BaseReferencesOnBase] AS [b5] UNION ALL - SELECT [d1].[Id], [d1].[BaseParentId] - FROM [DerivedReferencesOnBase] AS [d1] + SELECT [d8].[Id], [d8].[BaseParentId] + FROM [DerivedReferencesOnBase] AS [d8] ) AS [t0] ON [t].[ParentReferenceId] = [t0].[Id] LEFT JOIN ( - SELECT [b0].[Id] - FROM [BaseEntities] AS [b0] + SELECT [b6].[Id] + FROM [BaseEntities] AS [b6] UNION ALL - SELECT [d2].[Id] - FROM [DerivedEntities] AS [d2] + SELECT [d9].[Id] + FROM [DerivedEntities] AS [d9] ) AS [t1] ON [t0].[BaseParentId] = [t1].[Id] -LEFT JOIN [OwnedReferences] AS [o] ON [t1].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t1].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t1].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [t0].[Id], [t1].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t1].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d2] ON [t1].[Id] = [d2].[Id] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d3] ON [t1].[Id] = [d3].[DerivedInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [t0].[Id], [t1].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] """); } @@ -2232,64 +2232,64 @@ FROM [DerivedEntities] AS [d0] """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b2].[Id] + FROM [BaseEntities] AS [b2] UNION ALL - SELECT [d0].[Id] - FROM [DerivedEntities] AS [d0] + SELECT [d5].[Id] + FROM [DerivedEntities] AS [d5] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [OwnedCollections] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [OwnedCollections] AS [o1] ON [t].[Id] = [o1].[BaseInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b3].[Id] + FROM [BaseEntities] AS [b3] UNION ALL - SELECT [d1].[Id] - FROM [DerivedEntities] AS [d1] + SELECT [d6].[Id] + FROM [DerivedEntities] AS [d6] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [t].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """, // """ -SELECT [t1].[Id], [t1].[BaseParentId], [t1].[Name], [t1].[DerivedProperty], [t1].[Discriminator], [t1].[Id0], [t1].[Name0], [t1].[ParentCollectionId], [t1].[ParentReferenceId], [t1].[Discriminator0] AS [Discriminator], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [t2].[Id], [t2].[BaseParentId], [t2].[Name], [t2].[DerivedProperty], [t2].[Discriminator], [t2].[Id0], [t2].[Name0], [t2].[ParentCollectionId], [t2].[ParentReferenceId], [t2].[Discriminator0] AS [Discriminator], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b4].[Id] + FROM [BaseEntities] AS [b4] UNION ALL - SELECT [d0].[Id] - FROM [DerivedEntities] AS [d0] + SELECT [d7].[Id] + FROM [DerivedEntities] AS [d7] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] INNER JOIN ( - SELECT [t0].[Id], [t0].[BaseParentId], [t0].[Name], [t0].[DerivedProperty], [t0].[Discriminator], [t2].[Id] AS [Id0], [t2].[Name] AS [Name0], [t2].[ParentCollectionId], [t2].[ParentReferenceId], [t2].[Discriminator] AS [Discriminator0] + SELECT [t0].[Id], [t0].[BaseParentId], [t0].[Name], [t0].[DerivedProperty], [t0].[Discriminator], [t1].[Id] AS [Id0], [t1].[Name] AS [Name0], [t1].[ParentCollectionId], [t1].[ParentReferenceId], [t1].[Discriminator] AS [Discriminator0] FROM ( - SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Name], NULL AS [DerivedProperty], N'BaseCollectionOnBase' AS [Discriminator] - FROM [BaseCollectionsOnBase] AS [b0] + SELECT [b5].[Id], [b5].[BaseParentId], [b5].[Name], NULL AS [DerivedProperty], N'BaseCollectionOnBase' AS [Discriminator] + FROM [BaseCollectionsOnBase] AS [b5] UNION ALL - SELECT [d1].[Id], [d1].[BaseParentId], [d1].[Name], [d1].[DerivedProperty], N'DerivedCollectionOnBase' AS [Discriminator] - FROM [DerivedCollectionsOnBase] AS [d1] + SELECT [d8].[Id], [d8].[BaseParentId], [d8].[Name], [d8].[DerivedProperty], N'DerivedCollectionOnBase' AS [Discriminator] + FROM [DerivedCollectionsOnBase] AS [d8] ) AS [t0] LEFT JOIN ( - SELECT [n].[Id], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], N'NestedReferenceBase' AS [Discriminator] - FROM [NestedReferences] AS [n] + SELECT [n1].[Id], [n1].[Name], [n1].[ParentCollectionId], [n1].[ParentReferenceId], N'NestedReferenceBase' AS [Discriminator] + FROM [NestedReferences] AS [n1] UNION ALL - SELECT [n0].[Id], [n0].[Name], [n0].[ParentCollectionId], [n0].[ParentReferenceId], N'NestedReferenceDerived' AS [Discriminator] - FROM [NestedReferencesDerived] AS [n0] - ) AS [t2] ON [t0].[Id] = [t2].[ParentCollectionId] -) AS [t1] ON [t].[Id] = [t1].[BaseParentId] -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] + SELECT [n2].[Id], [n2].[Name], [n2].[ParentCollectionId], [n2].[ParentReferenceId], N'NestedReferenceDerived' AS [Discriminator] + FROM [NestedReferencesDerived] AS [n2] + ) AS [t1] ON [t0].[Id] = [t1].[ParentCollectionId] +) AS [t2] ON [t].[Id] = [t2].[BaseParentId] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """); } @@ -2327,61 +2327,61 @@ FROM [DerivedEntities] AS [d1] """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [t].[Id], [t0].[Id], [t1].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [t].[Id], [t0].[Id], [t1].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] FROM ( - SELECT [n].[Id], [n].[ParentCollectionId] - FROM [NestedReferences] AS [n] + SELECT [n3].[Id], [n3].[ParentCollectionId] + FROM [NestedReferences] AS [n3] UNION ALL - SELECT [n0].[Id], [n0].[ParentCollectionId] - FROM [NestedReferencesDerived] AS [n0] + SELECT [n4].[Id], [n4].[ParentCollectionId] + FROM [NestedReferencesDerived] AS [n4] ) AS [t] LEFT JOIN ( - SELECT [b].[Id], [b].[BaseParentId] - FROM [BaseCollectionsOnBase] AS [b] + SELECT [b3].[Id], [b3].[BaseParentId] + FROM [BaseCollectionsOnBase] AS [b3] UNION ALL - SELECT [d0].[Id], [d0].[BaseParentId] - FROM [DerivedCollectionsOnBase] AS [d0] + SELECT [d6].[Id], [d6].[BaseParentId] + FROM [DerivedCollectionsOnBase] AS [d6] ) AS [t0] ON [t].[ParentCollectionId] = [t0].[Id] LEFT JOIN ( - SELECT [b0].[Id] - FROM [BaseEntities] AS [b0] + SELECT [b4].[Id] + FROM [BaseEntities] AS [b4] UNION ALL - SELECT [d1].[Id] - FROM [DerivedEntities] AS [d1] + SELECT [d7].[Id] + FROM [DerivedEntities] AS [d7] ) AS [t1] ON [t0].[BaseParentId] = [t1].[Id] -LEFT JOIN [OwnedReferences] AS [o] ON [t1].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t1].[Id] = [d].[Id] -INNER JOIN [OwnedCollections] AS [o0] ON [t1].[Id] = [o0].[BaseInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [t0].[Id], [t1].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t1].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d2] ON [t1].[Id] = [d2].[Id] +INNER JOIN [OwnedCollections] AS [o1] ON [t1].[Id] = [o1].[BaseInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [t0].[Id], [t1].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [t].[Id], [t0].[Id], [t1].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [d3].[DerivedInheritanceRelationshipEntityId], [d3].[Id], [d3].[Name], [t].[Id], [t0].[Id], [t1].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] FROM ( - SELECT [n].[Id], [n].[ParentCollectionId] - FROM [NestedReferences] AS [n] + SELECT [n5].[Id], [n5].[ParentCollectionId] + FROM [NestedReferences] AS [n5] UNION ALL - SELECT [n0].[Id], [n0].[ParentCollectionId] - FROM [NestedReferencesDerived] AS [n0] + SELECT [n6].[Id], [n6].[ParentCollectionId] + FROM [NestedReferencesDerived] AS [n6] ) AS [t] LEFT JOIN ( - SELECT [b].[Id], [b].[BaseParentId] - FROM [BaseCollectionsOnBase] AS [b] + SELECT [b5].[Id], [b5].[BaseParentId] + FROM [BaseCollectionsOnBase] AS [b5] UNION ALL - SELECT [d1].[Id], [d1].[BaseParentId] - FROM [DerivedCollectionsOnBase] AS [d1] + SELECT [d8].[Id], [d8].[BaseParentId] + FROM [DerivedCollectionsOnBase] AS [d8] ) AS [t0] ON [t].[ParentCollectionId] = [t0].[Id] LEFT JOIN ( - SELECT [b0].[Id] - FROM [BaseEntities] AS [b0] + SELECT [b6].[Id] + FROM [BaseEntities] AS [b6] UNION ALL - SELECT [d2].[Id] - FROM [DerivedEntities] AS [d2] + SELECT [d9].[Id] + FROM [DerivedEntities] AS [d9] ) AS [t1] ON [t0].[BaseParentId] = [t1].[Id] -LEFT JOIN [OwnedReferences] AS [o] ON [t1].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t1].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t1].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [t0].[Id], [t1].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t1].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d2] ON [t1].[Id] = [d2].[Id] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d3] ON [t1].[Id] = [d3].[DerivedInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [t0].[Id], [t1].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] """); } @@ -2405,82 +2405,82 @@ FROM [DerivedEntities] AS [d0] """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b2].[Id] + FROM [BaseEntities] AS [b2] UNION ALL - SELECT [d0].[Id] - FROM [DerivedEntities] AS [d0] + SELECT [d5].[Id] + FROM [DerivedEntities] AS [d5] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [OwnedCollections] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [OwnedCollections] AS [o1] ON [t].[Id] = [o1].[BaseInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b3].[Id] + FROM [BaseEntities] AS [b3] UNION ALL - SELECT [d1].[Id] - FROM [DerivedEntities] AS [d1] + SELECT [d6].[Id] + FROM [DerivedEntities] AS [d6] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [t].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """, // """ -SELECT [t0].[Id], [t0].[BaseParentId], [t0].[Name], [t0].[DerivedProperty], [t0].[Discriminator], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [t0].[Id], [t0].[BaseParentId], [t0].[Name], [t0].[DerivedProperty], [t0].[Discriminator], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b4].[Id] + FROM [BaseEntities] AS [b4] UNION ALL - SELECT [d0].[Id] - FROM [DerivedEntities] AS [d0] + SELECT [d7].[Id] + FROM [DerivedEntities] AS [d7] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] INNER JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Name], NULL AS [DerivedProperty], N'BaseCollectionOnBase' AS [Discriminator] - FROM [BaseCollectionsOnBase] AS [b0] + SELECT [b5].[Id], [b5].[BaseParentId], [b5].[Name], NULL AS [DerivedProperty], N'BaseCollectionOnBase' AS [Discriminator] + FROM [BaseCollectionsOnBase] AS [b5] UNION ALL - SELECT [d1].[Id], [d1].[BaseParentId], [d1].[Name], [d1].[DerivedProperty], N'DerivedCollectionOnBase' AS [Discriminator] - FROM [DerivedCollectionsOnBase] AS [d1] + SELECT [d8].[Id], [d8].[BaseParentId], [d8].[Name], [d8].[DerivedProperty], N'DerivedCollectionOnBase' AS [Discriminator] + FROM [DerivedCollectionsOnBase] AS [d8] ) AS [t0] ON [t].[Id] = [t0].[BaseParentId] -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id], [t0].[Id] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id], [t0].[Id] """, // """ -SELECT [t1].[Id], [t1].[Name], [t1].[ParentCollectionId], [t1].[ParentReferenceId], [t1].[Discriminator], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id], [t0].[Id] +SELECT [t1].[Id], [t1].[Name], [t1].[ParentCollectionId], [t1].[ParentReferenceId], [t1].[Discriminator], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id], [t0].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b6].[Id] + FROM [BaseEntities] AS [b6] UNION ALL - SELECT [d0].[Id] - FROM [DerivedEntities] AS [d0] + SELECT [d9].[Id] + FROM [DerivedEntities] AS [d9] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] INNER JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId] - FROM [BaseCollectionsOnBase] AS [b0] + SELECT [b7].[Id], [b7].[BaseParentId] + FROM [BaseCollectionsOnBase] AS [b7] UNION ALL - SELECT [d1].[Id], [d1].[BaseParentId] - FROM [DerivedCollectionsOnBase] AS [d1] + SELECT [d10].[Id], [d10].[BaseParentId] + FROM [DerivedCollectionsOnBase] AS [d10] ) AS [t0] ON [t].[Id] = [t0].[BaseParentId] INNER JOIN ( - SELECT [n].[Id], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], N'NestedCollectionBase' AS [Discriminator] - FROM [NestedCollections] AS [n] + SELECT [n1].[Id], [n1].[Name], [n1].[ParentCollectionId], [n1].[ParentReferenceId], N'NestedCollectionBase' AS [Discriminator] + FROM [NestedCollections] AS [n1] UNION ALL - SELECT [n0].[Id], [n0].[Name], [n0].[ParentCollectionId], [n0].[ParentReferenceId], N'NestedCollectionDerived' AS [Discriminator] - FROM [NestedCollectionsDerived] AS [n0] + SELECT [n2].[Id], [n2].[Name], [n2].[ParentCollectionId], [n2].[ParentReferenceId], N'NestedCollectionDerived' AS [Discriminator] + FROM [NestedCollectionsDerived] AS [n2] ) AS [t1] ON [t0].[Id] = [t1].[ParentCollectionId] -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id], [t0].[Id] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id], [t0].[Id] """); } @@ -2518,61 +2518,61 @@ FROM [DerivedEntities] AS [d1] """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [t].[Id], [t0].[Id], [t1].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [t].[Id], [t0].[Id], [t1].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] FROM ( - SELECT [n].[Id], [n].[ParentCollectionId] - FROM [NestedCollections] AS [n] + SELECT [n3].[Id], [n3].[ParentCollectionId] + FROM [NestedCollections] AS [n3] UNION ALL - SELECT [n0].[Id], [n0].[ParentCollectionId] - FROM [NestedCollectionsDerived] AS [n0] + SELECT [n4].[Id], [n4].[ParentCollectionId] + FROM [NestedCollectionsDerived] AS [n4] ) AS [t] LEFT JOIN ( - SELECT [b].[Id], [b].[BaseParentId] - FROM [BaseCollectionsOnBase] AS [b] + SELECT [b3].[Id], [b3].[BaseParentId] + FROM [BaseCollectionsOnBase] AS [b3] UNION ALL - SELECT [d0].[Id], [d0].[BaseParentId] - FROM [DerivedCollectionsOnBase] AS [d0] + SELECT [d6].[Id], [d6].[BaseParentId] + FROM [DerivedCollectionsOnBase] AS [d6] ) AS [t0] ON [t].[ParentCollectionId] = [t0].[Id] LEFT JOIN ( - SELECT [b0].[Id] - FROM [BaseEntities] AS [b0] + SELECT [b4].[Id] + FROM [BaseEntities] AS [b4] UNION ALL - SELECT [d1].[Id] - FROM [DerivedEntities] AS [d1] + SELECT [d7].[Id] + FROM [DerivedEntities] AS [d7] ) AS [t1] ON [t0].[BaseParentId] = [t1].[Id] -LEFT JOIN [OwnedReferences] AS [o] ON [t1].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t1].[Id] = [d].[Id] -INNER JOIN [OwnedCollections] AS [o0] ON [t1].[Id] = [o0].[BaseInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [t0].[Id], [t1].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t1].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d2] ON [t1].[Id] = [d2].[Id] +INNER JOIN [OwnedCollections] AS [o1] ON [t1].[Id] = [o1].[BaseInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [t0].[Id], [t1].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [t].[Id], [t0].[Id], [t1].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [d3].[DerivedInheritanceRelationshipEntityId], [d3].[Id], [d3].[Name], [t].[Id], [t0].[Id], [t1].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] FROM ( - SELECT [n].[Id], [n].[ParentCollectionId] - FROM [NestedCollections] AS [n] + SELECT [n5].[Id], [n5].[ParentCollectionId] + FROM [NestedCollections] AS [n5] UNION ALL - SELECT [n0].[Id], [n0].[ParentCollectionId] - FROM [NestedCollectionsDerived] AS [n0] + SELECT [n6].[Id], [n6].[ParentCollectionId] + FROM [NestedCollectionsDerived] AS [n6] ) AS [t] LEFT JOIN ( - SELECT [b].[Id], [b].[BaseParentId] - FROM [BaseCollectionsOnBase] AS [b] + SELECT [b5].[Id], [b5].[BaseParentId] + FROM [BaseCollectionsOnBase] AS [b5] UNION ALL - SELECT [d1].[Id], [d1].[BaseParentId] - FROM [DerivedCollectionsOnBase] AS [d1] + SELECT [d8].[Id], [d8].[BaseParentId] + FROM [DerivedCollectionsOnBase] AS [d8] ) AS [t0] ON [t].[ParentCollectionId] = [t0].[Id] LEFT JOIN ( - SELECT [b0].[Id] - FROM [BaseEntities] AS [b0] + SELECT [b6].[Id] + FROM [BaseEntities] AS [b6] UNION ALL - SELECT [d2].[Id] - FROM [DerivedEntities] AS [d2] + SELECT [d9].[Id] + FROM [DerivedEntities] AS [d9] ) AS [t1] ON [t0].[BaseParentId] = [t1].[Id] -LEFT JOIN [OwnedReferences] AS [o] ON [t1].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t1].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t1].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] -ORDER BY [t].[Id], [t0].[Id], [t1].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +LEFT JOIN [OwnedReferences] AS [o0] ON [t1].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d2] ON [t1].[Id] = [d2].[Id] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d3] ON [t1].[Id] = [d3].[DerivedInheritanceRelationshipEntityId] +ORDER BY [t].[Id], [t0].[Id], [t1].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d2].[Id] """); } @@ -2619,18 +2619,18 @@ ORDER BY [t].[Id] """ SELECT [t0].[Id], [t0].[BaseParentId], [t0].[Name], [t0].[DerivedProperty], [t0].[Discriminator], [t].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b2].[Id] + FROM [BaseEntities] AS [b2] UNION ALL - SELECT [d].[Id] - FROM [DerivedEntities] AS [d] + SELECT [d2].[Id] + FROM [DerivedEntities] AS [d2] ) AS [t] INNER JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Name], NULL AS [DerivedProperty], N'BaseCollectionOnBase' AS [Discriminator] - FROM [BaseCollectionsOnBase] AS [b0] + SELECT [b3].[Id], [b3].[BaseParentId], [b3].[Name], NULL AS [DerivedProperty], N'BaseCollectionOnBase' AS [Discriminator] + FROM [BaseCollectionsOnBase] AS [b3] UNION ALL - SELECT [d0].[Id], [d0].[BaseParentId], [d0].[Name], [d0].[DerivedProperty], N'DerivedCollectionOnBase' AS [Discriminator] - FROM [DerivedCollectionsOnBase] AS [d0] + SELECT [d3].[Id], [d3].[BaseParentId], [d3].[Name], [d3].[DerivedProperty], N'DerivedCollectionOnBase' AS [Discriminator] + FROM [DerivedCollectionsOnBase] AS [d3] ) AS [t0] ON [t].[Id] = [t0].[BaseParentId] ORDER BY [t].[Id] """); @@ -2657,51 +2657,51 @@ FROM [DerivedEntities] AS [d0] """, // """ -SELECT [o0].[BaseInheritanceRelationshipEntityId], [o0].[Id], [o0].[Name], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [o1].[BaseInheritanceRelationshipEntityId], [o1].[Id], [o1].[Name], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b1].[Id] + FROM [BaseEntities] AS [b1] UNION ALL - SELECT [d0].[Id] - FROM [DerivedEntities] AS [d0] + SELECT [d5].[Id] + FROM [DerivedEntities] AS [d5] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [OwnedCollections] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [OwnedCollections] AS [o1] ON [t].[Id] = [o1].[BaseInheritanceRelationshipEntityId] WHERE [t].[Id] >= 4 -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b2].[Id] + FROM [BaseEntities] AS [b2] UNION ALL - SELECT [d1].[Id] - FROM [DerivedEntities] AS [d1] + SELECT [d6].[Id] + FROM [DerivedEntities] AS [d6] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [t].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] WHERE [t].[Id] >= 4 -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """, // """ -SELECT [d0].[Id], [d0].[Name], [d0].[ParentId], [d0].[DerivedInheritanceRelationshipEntityId], [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +SELECT [d3].[Id], [d3].[Name], [d3].[ParentId], [d3].[DerivedInheritanceRelationshipEntityId], [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] FROM ( - SELECT [b].[Id] - FROM [BaseEntities] AS [b] + SELECT [b3].[Id] + FROM [BaseEntities] AS [b3] UNION ALL - SELECT [d1].[Id] - FROM [DerivedEntities] AS [d1] + SELECT [d7].[Id] + FROM [DerivedEntities] AS [d7] ) AS [t] -LEFT JOIN [OwnedReferences] AS [o] ON [t].[Id] = [o].[BaseInheritanceRelationshipEntityId] -LEFT JOIN [DerivedEntities] AS [d] ON [t].[Id] = [d].[Id] -INNER JOIN [DerivedCollectionsOnDerived] AS [d0] ON [t].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +LEFT JOIN [OwnedReferences] AS [o0] ON [t].[Id] = [o0].[BaseInheritanceRelationshipEntityId] +LEFT JOIN [DerivedEntities] AS [d1] ON [t].[Id] = [d1].[Id] +INNER JOIN [DerivedCollectionsOnDerived] AS [d3] ON [t].[Id] = [d3].[DerivedInheritanceRelationshipEntityId] WHERE [t].[Id] >= 4 -ORDER BY [t].[Id], [o].[BaseInheritanceRelationshipEntityId], [d].[Id] +ORDER BY [t].[Id], [o0].[BaseInheritanceRelationshipEntityId], [d1].[Id] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs index 88c68f07cd3..aa68ad36cf3 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs @@ -4087,8 +4087,8 @@ FROM [Gears] AS [g] CROSS JOIN ( SELECT [g0].[Nickname], [g0].[SquadId] FROM [Gears] AS [g0] - LEFT JOIN [Officers] AS [o0] ON [g0].[Nickname] = [o0].[Nickname] AND [g0].[SquadId] = [o0].[SquadId] - WHERE [o0].[Nickname] IS NOT NULL + LEFT JOIN [Officers] AS [o] ON [g0].[Nickname] = [o].[Nickname] AND [g0].[SquadId] = [o].[SquadId] + WHERE [o].[Nickname] IS NOT NULL ) AS [t] WHERE [g].[Nickname] = [t].[Nickname] AND [g].[SquadId] = [t].[SquadId] ORDER BY [g].[Nickname], [t].[Nickname] @@ -4221,10 +4221,10 @@ FROM [Gears] AS [g] ) AS [t0] ON [t].[DefeatedByNickname] = [t0].[Nickname] AND [t].[DefeatedBySquadId] = [t0].[SquadId] LEFT JOIN ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], CASE - WHEN [o0].[Nickname] IS NOT NULL THEN N'Officer' + WHEN [o].[Nickname] IS NOT NULL THEN N'Officer' END AS [Discriminator] FROM [Gears] AS [g0] - LEFT JOIN [Officers] AS [o0] ON [g0].[Nickname] = [o0].[Nickname] AND [g0].[SquadId] = [o0].[SquadId] + LEFT JOIN [Officers] AS [o] ON [g0].[Nickname] = [o].[Nickname] AND [g0].[SquadId] = [o].[SquadId] ) AS [t1] ON ([t0].[Nickname] = [t1].[LeaderNickname] OR ([t0].[Nickname] IS NULL AND [t1].[LeaderNickname] IS NULL)) AND [t0].[SquadId] = [t1].[LeaderSquadId] WHERE [l].[Id] IS NOT NULL ORDER BY [f].[Id], [t].[Name], [t0].[Nickname], [t0].[SquadId], [t1].[Nickname] @@ -4251,10 +4251,10 @@ FROM [Gears] AS [g] ) AS [t0] ON [t].[DefeatedByNickname] = [t0].[Nickname] AND [t].[DefeatedBySquadId] = [t0].[SquadId] LEFT JOIN ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], CASE - WHEN [o0].[Nickname] IS NOT NULL THEN N'Officer' + WHEN [o].[Nickname] IS NOT NULL THEN N'Officer' END AS [Discriminator] FROM [Gears] AS [g0] - LEFT JOIN [Officers] AS [o0] ON [g0].[Nickname] = [o0].[Nickname] AND [g0].[SquadId] = [o0].[SquadId] + LEFT JOIN [Officers] AS [o] ON [g0].[Nickname] = [o].[Nickname] AND [g0].[SquadId] = [o].[SquadId] ) AS [t1] ON ([t0].[Nickname] = [t1].[LeaderNickname] OR ([t0].[Nickname] IS NULL AND [t1].[LeaderNickname] IS NULL)) AND [t0].[SquadId] = [t1].[LeaderSquadId] WHERE [l].[Id] IS NOT NULL ORDER BY [f].[Id], [t].[Name], [t0].[Nickname], [t0].[SquadId], [t1].[Nickname] @@ -5089,7 +5089,7 @@ public override async Task Multiple_orderby_with_navigation_expansion_on_one_of_ AssertSql( """ -SELECT [g].[FullName], [g].[Nickname], [g].[SquadId], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId], [t1].[Nickname], [t1].[SquadId] +SELECT [g].[FullName], [g].[Nickname], [g].[SquadId], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t2].[Id], [t2].[AmmunitionType], [t2].[IsAutomatic], [t2].[Name], [t2].[OwnerFullName], [t2].[SynergyWithId], [t2].[Nickname], [t2].[SquadId] FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] LEFT JOIN [Tags] AS [t] ON [g].[Nickname] = [t].[GearNickName] AND [g].[SquadId] = [t].[GearSquadId] @@ -5098,18 +5098,18 @@ LEFT JOIN ( FROM [Gears] AS [g1] ) AS [t0] ON [t].[GearNickName] = [t0].[Nickname] AND [t].[GearSquadId] = [t0].[SquadId] LEFT JOIN ( - SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], [t2].[Nickname], [t2].[SquadId] + SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], [t1].[Nickname], [t1].[SquadId] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g2].[Nickname], [g2].[SquadId], [g2].[FullName] FROM [Gears] AS [g2] - ) AS [t2] ON [w].[OwnerFullName] = [t2].[FullName] -) AS [t1] ON [t0].[FullName] = [t1].[OwnerFullName] + ) AS [t1] ON [w].[OwnerFullName] = [t1].[FullName] +) AS [t2] ON [t0].[FullName] = [t2].[OwnerFullName] WHERE [o].[Nickname] IS NOT NULL AND EXISTS ( SELECT 1 FROM [Gears] AS [g0] WHERE [g].[Nickname] = [g0].[LeaderNickname] AND [g].[SquadId] = [g0].[LeaderSquadId]) -ORDER BY [g].[HasSoulPatch] DESC, [t].[Note], [g].[Nickname], [g].[SquadId], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t1].[IsAutomatic], [t1].[Nickname] DESC, [t1].[Id] +ORDER BY [g].[HasSoulPatch] DESC, [t].[Note], [g].[Nickname], [g].[SquadId], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t2].[IsAutomatic], [t2].[Nickname] DESC, [t2].[Id] """); } @@ -5120,7 +5120,7 @@ public override async Task Multiple_orderby_with_navigation_expansion_on_one_of_ AssertSql( """ -SELECT [g].[FullName], [g].[Nickname], [g].[SquadId], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId], [t1].[Nickname], [t1].[SquadId] +SELECT [g].[FullName], [g].[Nickname], [g].[SquadId], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t2].[Id], [t2].[AmmunitionType], [t2].[IsAutomatic], [t2].[Name], [t2].[OwnerFullName], [t2].[SynergyWithId], [t2].[Nickname], [t2].[SquadId] FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] LEFT JOIN [Tags] AS [t] ON [g].[Nickname] = [t].[GearNickName] AND [g].[SquadId] = [t].[GearSquadId] @@ -5129,18 +5129,18 @@ LEFT JOIN ( FROM [Gears] AS [g1] ) AS [t0] ON [t].[GearNickName] = [t0].[Nickname] AND [t].[GearSquadId] = [t0].[SquadId] LEFT JOIN ( - SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], [t2].[Nickname], [t2].[SquadId] + SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], [t1].[Nickname], [t1].[SquadId] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g2].[Nickname], [g2].[SquadId], [g2].[FullName] FROM [Gears] AS [g2] - ) AS [t2] ON [w].[OwnerFullName] = [t2].[FullName] -) AS [t1] ON [t0].[FullName] = [t1].[OwnerFullName] + ) AS [t1] ON [w].[OwnerFullName] = [t1].[FullName] +) AS [t2] ON [t0].[FullName] = [t2].[OwnerFullName] WHERE [o].[Nickname] IS NOT NULL AND EXISTS ( SELECT 1 FROM [Gears] AS [g0] WHERE [g].[Nickname] = [g0].[LeaderNickname] AND [g].[SquadId] = [g0].[LeaderSquadId]) -ORDER BY [g].[HasSoulPatch] DESC, [t].[Note], [g].[Nickname], [g].[SquadId], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t1].[IsAutomatic], [t1].[Nickname] DESC, [t1].[Id] +ORDER BY [g].[HasSoulPatch] DESC, [t].[Note], [g].[Nickname], [g].[SquadId], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t2].[IsAutomatic], [t2].[Nickname] DESC, [t2].[Id] """); } @@ -5151,7 +5151,7 @@ public override async Task Multiple_orderby_with_navigation_expansion_on_one_of_ AssertSql( """ -SELECT [g].[FullName], [g].[Nickname], [g].[SquadId], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId], [t1].[Nickname], [t1].[SquadId] +SELECT [g].[FullName], [g].[Nickname], [g].[SquadId], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t2].[Id], [t2].[AmmunitionType], [t2].[IsAutomatic], [t2].[Name], [t2].[OwnerFullName], [t2].[SynergyWithId], [t2].[Nickname], [t2].[SquadId] FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] LEFT JOIN [Tags] AS [t] ON [g].[Nickname] = [t].[GearNickName] AND [g].[SquadId] = [t].[GearSquadId] @@ -5160,21 +5160,21 @@ LEFT JOIN ( FROM [Gears] AS [g1] ) AS [t0] ON [t].[GearNickName] = [t0].[Nickname] AND [t].[GearSquadId] = [t0].[SquadId] LEFT JOIN ( - SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], [t2].[Nickname], [t2].[SquadId], ( + SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], [t1].[Nickname], [t1].[SquadId], ( SELECT COUNT(*) FROM [Weapons] AS [w0] - WHERE [t2].[FullName] IS NOT NULL AND [t2].[FullName] = [w0].[OwnerFullName]) AS [c] + WHERE [t1].[FullName] IS NOT NULL AND [t1].[FullName] = [w0].[OwnerFullName]) AS [c] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g2].[Nickname], [g2].[SquadId], [g2].[FullName] FROM [Gears] AS [g2] - ) AS [t2] ON [w].[OwnerFullName] = [t2].[FullName] -) AS [t1] ON [t0].[FullName] = [t1].[OwnerFullName] + ) AS [t1] ON [w].[OwnerFullName] = [t1].[FullName] +) AS [t2] ON [t0].[FullName] = [t2].[OwnerFullName] WHERE [o].[Nickname] IS NOT NULL AND EXISTS ( SELECT 1 FROM [Gears] AS [g0] WHERE [g].[Nickname] = [g0].[LeaderNickname] AND [g].[SquadId] = [g0].[LeaderSquadId]) -ORDER BY [g].[HasSoulPatch] DESC, [t].[Note], [g].[Nickname], [g].[SquadId], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t1].[Id] DESC, [t1].[c], [t1].[Nickname] +ORDER BY [g].[HasSoulPatch] DESC, [t].[Note], [g].[Nickname], [g].[SquadId], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t2].[Id] DESC, [t2].[c], [t2].[Nickname] """); } @@ -5184,7 +5184,7 @@ public override async Task Correlated_collections_multiple_nested_complex_collec AssertSql( """ -SELECT [g].[FullName], [g].[Nickname], [g].[SquadId], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t2].[FullName], [t2].[Nickname], [t2].[SquadId], [t2].[Id], [t2].[Nickname0], [t2].[SquadId0], [t2].[Id0], [t2].[Name], [t2].[IsAutomatic], [t2].[Id1], [t2].[Nickname00], [t2].[HasSoulPatch], [t2].[SquadId00], [t5].[Id], [t5].[AmmunitionType], [t5].[IsAutomatic], [t5].[Name], [t5].[OwnerFullName], [t5].[SynergyWithId], [t5].[Nickname], [t5].[SquadId] +SELECT [g].[FullName], [g].[Nickname], [g].[SquadId], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t5].[FullName], [t5].[Nickname], [t5].[SquadId], [t5].[Id], [t5].[Nickname0], [t5].[SquadId0], [t5].[Id0], [t5].[Name], [t5].[IsAutomatic], [t5].[Id1], [t5].[Nickname00], [t5].[HasSoulPatch], [t5].[SquadId00], [t6].[Id], [t6].[AmmunitionType], [t6].[IsAutomatic], [t6].[Name], [t6].[OwnerFullName], [t6].[SynergyWithId], [t6].[Nickname], [t6].[SquadId] FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] LEFT JOIN [Tags] AS [t] ON [g].[Nickname] = [t].[GearNickName] AND [g].[SquadId] = [t].[GearSquadId] @@ -5193,38 +5193,38 @@ LEFT JOIN ( FROM [Gears] AS [g1] ) AS [t0] ON [t].[GearNickName] = [t0].[Nickname] AND [t].[GearSquadId] = [t0].[SquadId] LEFT JOIN ( - SELECT [g2].[FullName], [g2].[Nickname], [g2].[SquadId], [t1].[Id], [t1].[Nickname] AS [Nickname0], [t1].[SquadId] AS [SquadId0], [t1].[Id0], [t1].[Name], [t1].[IsAutomatic], [t1].[Id1], [t1].[Nickname0] AS [Nickname00], [t1].[HasSoulPatch], [t1].[SquadId0] AS [SquadId00], [g2].[Rank], [t1].[IsAutomatic0], [g2].[LeaderNickname], [g2].[LeaderSquadId] + SELECT [g2].[FullName], [g2].[Nickname], [g2].[SquadId], [t4].[Id], [t4].[Nickname] AS [Nickname0], [t4].[SquadId] AS [SquadId0], [t4].[Id0], [t4].[Name], [t4].[IsAutomatic], [t4].[Id1], [t4].[Nickname0] AS [Nickname00], [t4].[HasSoulPatch], [t4].[SquadId0] AS [SquadId00], [g2].[Rank], [t4].[IsAutomatic0], [g2].[LeaderNickname], [g2].[LeaderSquadId] FROM [Gears] AS [g2] LEFT JOIN ( - SELECT [w].[Id], [t3].[Nickname], [t3].[SquadId], [s].[Id] AS [Id0], [w0].[Name], [w0].[IsAutomatic], [w0].[Id] AS [Id1], [t4].[Nickname] AS [Nickname0], [t4].[HasSoulPatch], [t4].[SquadId] AS [SquadId0], [w].[IsAutomatic] AS [IsAutomatic0], [w].[OwnerFullName] + SELECT [w].[Id], [t1].[Nickname], [t1].[SquadId], [s].[Id] AS [Id0], [w0].[Name], [w0].[IsAutomatic], [w0].[Id] AS [Id1], [t3].[Nickname] AS [Nickname0], [t3].[HasSoulPatch], [t3].[SquadId] AS [SquadId0], [w].[IsAutomatic] AS [IsAutomatic0], [w].[OwnerFullName] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g3].[Nickname], [g3].[SquadId], [g3].[FullName] FROM [Gears] AS [g3] - ) AS [t3] ON [w].[OwnerFullName] = [t3].[FullName] - LEFT JOIN [Squads] AS [s] ON [t3].[SquadId] = [s].[Id] - LEFT JOIN [Weapons] AS [w0] ON [t3].[FullName] = [w0].[OwnerFullName] + ) AS [t1] ON [w].[OwnerFullName] = [t1].[FullName] + LEFT JOIN [Squads] AS [s] ON [t1].[SquadId] = [s].[Id] + LEFT JOIN [Weapons] AS [w0] ON [t1].[FullName] = [w0].[OwnerFullName] LEFT JOIN ( SELECT [g4].[Nickname], [g4].[HasSoulPatch], [g4].[SquadId] FROM [Gears] AS [g4] - ) AS [t4] ON [s].[Id] = [t4].[SquadId] + ) AS [t3] ON [s].[Id] = [t3].[SquadId] WHERE [w].[Name] <> N'Bar' OR [w].[Name] IS NULL - ) AS [t1] ON [g2].[FullName] = [t1].[OwnerFullName] + ) AS [t4] ON [g2].[FullName] = [t4].[OwnerFullName] WHERE [g2].[FullName] <> N'Foo' -) AS [t2] ON [g].[Nickname] = [t2].[LeaderNickname] AND [g].[SquadId] = [t2].[LeaderSquadId] +) AS [t5] ON [g].[Nickname] = [t5].[LeaderNickname] AND [g].[SquadId] = [t5].[LeaderSquadId] LEFT JOIN ( - SELECT [w1].[Id], [w1].[AmmunitionType], [w1].[IsAutomatic], [w1].[Name], [w1].[OwnerFullName], [w1].[SynergyWithId], [t6].[Nickname], [t6].[SquadId] + SELECT [w1].[Id], [w1].[AmmunitionType], [w1].[IsAutomatic], [w1].[Name], [w1].[OwnerFullName], [w1].[SynergyWithId], [t2].[Nickname], [t2].[SquadId] FROM [Weapons] AS [w1] LEFT JOIN ( SELECT [g5].[Nickname], [g5].[SquadId], [g5].[FullName] FROM [Gears] AS [g5] - ) AS [t6] ON [w1].[OwnerFullName] = [t6].[FullName] -) AS [t5] ON [t0].[FullName] = [t5].[OwnerFullName] + ) AS [t2] ON [w1].[OwnerFullName] = [t2].[FullName] +) AS [t6] ON [t0].[FullName] = [t6].[OwnerFullName] WHERE [o].[Nickname] IS NOT NULL AND EXISTS ( SELECT 1 FROM [Gears] AS [g0] WHERE [g].[Nickname] = [g0].[LeaderNickname] AND [g].[SquadId] = [g0].[LeaderSquadId]) -ORDER BY [g].[HasSoulPatch] DESC, [t].[Note], [g].[Nickname], [g].[SquadId], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t2].[Rank], [t2].[Nickname], [t2].[SquadId], [t2].[IsAutomatic0], [t2].[Id], [t2].[Nickname0], [t2].[SquadId0], [t2].[Id0], [t2].[Id1], [t2].[Nickname00], [t2].[SquadId00], [t5].[IsAutomatic], [t5].[Nickname] DESC, [t5].[Id] +ORDER BY [g].[HasSoulPatch] DESC, [t].[Note], [g].[Nickname], [g].[SquadId], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t5].[Rank], [t5].[Nickname], [t5].[SquadId], [t5].[IsAutomatic0], [t5].[Id], [t5].[Nickname0], [t5].[SquadId0], [t5].[Id0], [t5].[Id1], [t5].[Nickname00], [t5].[SquadId00], [t6].[IsAutomatic], [t6].[Nickname] DESC, [t6].[Id] """); } @@ -5330,10 +5330,10 @@ FROM [Weapons] AS [w] ) AS [t] ON [g].[FullName] = [t].[OwnerFullName] LEFT JOIN ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], CASE - WHEN [o0].[Nickname] IS NOT NULL THEN N'Officer' + WHEN [o].[Nickname] IS NOT NULL THEN N'Officer' END AS [Discriminator] FROM [Gears] AS [g0] - LEFT JOIN [Officers] AS [o0] ON [g0].[Nickname] = [o0].[Nickname] AND [g0].[SquadId] = [o0].[SquadId] + LEFT JOIN [Officers] AS [o] ON [g0].[Nickname] = [o].[Nickname] AND [g0].[SquadId] = [o].[SquadId] WHERE [g0].[HasSoulPatch] = CAST(0 AS bit) ) AS [t0] ON [s].[Id] = [t0].[SquadId] WHERE [g].[HasSoulPatch] = CAST(1 AS bit) @@ -5491,7 +5491,7 @@ public override async Task Correlated_collections_deeply_nested_left_join(bool a AssertSql( """ -SELECT [t].[Id], [t0].[Nickname], [t0].[SquadId], [s].[Id], [t1].[Nickname], [t1].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] +SELECT [t].[Id], [t0].[Nickname], [t0].[SquadId], [s].[Id], [t2].[Nickname], [t2].[SquadId], [t2].[Id], [t2].[AmmunitionType], [t2].[IsAutomatic], [t2].[Name], [t2].[OwnerFullName], [t2].[SynergyWithId] FROM [Tags] AS [t] LEFT JOIN ( SELECT [g].[Nickname], [g].[SquadId] @@ -5499,16 +5499,16 @@ FROM [Gears] AS [g] ) AS [t0] ON [t].[GearNickName] = [t0].[Nickname] LEFT JOIN [Squads] AS [s] ON [t0].[SquadId] = [s].[Id] LEFT JOIN ( - SELECT [g0].[Nickname], [g0].[SquadId], [t2].[Id], [t2].[AmmunitionType], [t2].[IsAutomatic], [t2].[Name], [t2].[OwnerFullName], [t2].[SynergyWithId] + SELECT [g0].[Nickname], [g0].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] FROM [Gears] AS [g0] LEFT JOIN ( SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] WHERE [w].[IsAutomatic] = CAST(1 AS bit) - ) AS [t2] ON [g0].[FullName] = [t2].[OwnerFullName] + ) AS [t1] ON [g0].[FullName] = [t1].[OwnerFullName] WHERE [g0].[HasSoulPatch] = CAST(1 AS bit) -) AS [t1] ON [s].[Id] = [t1].[SquadId] -ORDER BY [t].[Note], [t0].[Nickname] DESC, [t].[Id], [t0].[SquadId], [s].[Id], [t1].[Nickname], [t1].[SquadId] +) AS [t2] ON [s].[Id] = [t2].[SquadId] +ORDER BY [t].[Note], [t0].[Nickname] DESC, [t].[Id], [t0].[SquadId], [s].[Id], [t2].[Nickname], [t2].[SquadId] """); } @@ -5518,7 +5518,7 @@ public override async Task Correlated_collections_from_left_join_with_additional AssertSql( """ -SELECT [w].[Id], [t].[Nickname], [t].[SquadId], [s].[Id], [t0].[Nickname], [t0].[SquadId], [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[SynergyWithId], [t0].[Rank] +SELECT [w].[Id], [t].[Nickname], [t].[SquadId], [s].[Id], [t1].[Nickname], [t1].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId], [t1].[Rank] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName] @@ -5526,15 +5526,15 @@ FROM [Gears] AS [g] ) AS [t] ON [w].[OwnerFullName] = [t].[FullName] LEFT JOIN [Squads] AS [s] ON [t].[SquadId] = [s].[Id] LEFT JOIN ( - SELECT [g0].[Nickname], [g0].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId], [g0].[Rank], [g0].[FullName] + SELECT [g0].[Nickname], [g0].[SquadId], [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[SynergyWithId], [g0].[Rank], [g0].[FullName] FROM [Gears] AS [g0] LEFT JOIN ( SELECT [w0].[Id], [w0].[AmmunitionType], [w0].[IsAutomatic], [w0].[Name], [w0].[OwnerFullName], [w0].[SynergyWithId] FROM [Weapons] AS [w0] WHERE [w0].[IsAutomatic] = CAST(0 AS bit) - ) AS [t1] ON [g0].[FullName] = [t1].[OwnerFullName] -) AS [t0] ON [s].[Id] = [t0].[SquadId] -ORDER BY [w].[Name], [w].[Id], [t].[Nickname], [t].[SquadId], [s].[Id], [t0].[FullName] DESC, [t0].[Nickname], [t0].[SquadId], [t0].[Id] + ) AS [t0] ON [g0].[FullName] = [t0].[OwnerFullName] +) AS [t1] ON [s].[Id] = [t1].[SquadId] +ORDER BY [w].[Name], [w].[Id], [t].[Nickname], [t].[SquadId], [s].[Id], [t1].[FullName] DESC, [t1].[Nickname], [t1].[SquadId], [t1].[Id] """); } @@ -5721,12 +5721,12 @@ public override async Task Null_semantics_on_nullable_bool_from_inner_join_subqu SELECT [t].[Id], [t].[CapitalName], [t].[Name], [t].[ServerAddress], [t].[CommanderName], [t].[Eradicated], [t].[Discriminator] FROM [LocustLeaders] AS [l] INNER JOIN ( - SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l1].[CommanderName], [l1].[Eradicated], CASE - WHEN [l1].[Id] IS NOT NULL THEN N'LocustHorde' + SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l0].[CommanderName], [l0].[Eradicated], CASE + WHEN [l0].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator] FROM [Factions] AS [f] - LEFT JOIN [LocustHordes] AS [l1] ON [f].[Id] = [l1].[Id] - WHERE [l1].[Id] IS NOT NULL AND [f].[Name] = N'Swarm' + LEFT JOIN [LocustHordes] AS [l0] ON [f].[Id] = [l0].[Id] + WHERE [l0].[Id] IS NOT NULL AND [f].[Name] = N'Swarm' ) AS [t] ON [l].[Name] = [t].[CommanderName] WHERE [t].[Eradicated] <> CAST(1 AS bit) OR [t].[Eradicated] IS NULL """); @@ -5741,12 +5741,12 @@ public override async Task Null_semantics_on_nullable_bool_from_left_join_subque SELECT [t].[Id], [t].[CapitalName], [t].[Name], [t].[ServerAddress], [t].[CommanderName], [t].[Eradicated], [t].[Discriminator] FROM [LocustLeaders] AS [l] LEFT JOIN ( - SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l1].[CommanderName], [l1].[Eradicated], CASE - WHEN [l1].[Id] IS NOT NULL THEN N'LocustHorde' + SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l0].[CommanderName], [l0].[Eradicated], CASE + WHEN [l0].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator] FROM [Factions] AS [f] - LEFT JOIN [LocustHordes] AS [l1] ON [f].[Id] = [l1].[Id] - WHERE [l1].[Id] IS NOT NULL AND [f].[Name] = N'Swarm' + LEFT JOIN [LocustHordes] AS [l0] ON [f].[Id] = [l0].[Id] + WHERE [l0].[Id] IS NOT NULL AND [f].[Name] = N'Swarm' ) AS [t] ON [l].[Name] = [t].[CommanderName] WHERE [t].[Eradicated] <> CAST(1 AS bit) OR [t].[Eradicated] IS NULL """); @@ -6009,8 +6009,8 @@ FROM [Gears] AS [g] INNER JOIN ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[FullName] FROM [Gears] AS [g0] - LEFT JOIN [Officers] AS [o0] ON [g0].[Nickname] = [o0].[Nickname] AND [g0].[SquadId] = [o0].[SquadId] - WHERE [o0].[Nickname] IS NOT NULL + LEFT JOIN [Officers] AS [o] ON [g0].[Nickname] = [o].[Nickname] AND [g0].[SquadId] = [o].[SquadId] + WHERE [o].[Nickname] IS NOT NULL ) AS [t] ON [g].[Nickname] = [t].[Nickname] AND [g].[SquadId] = [t].[SquadId] """); } @@ -6462,10 +6462,10 @@ FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] LEFT JOIN ( SELECT [g1].[Nickname], [g1].[SquadId], [g1].[AssignedCityName], [g1].[CityOfBirthName], [g1].[FullName], [g1].[HasSoulPatch], [g1].[LeaderNickname], [g1].[LeaderSquadId], [g1].[Rank], CASE - WHEN [o1].[Nickname] IS NOT NULL THEN N'Officer' + WHEN [o0].[Nickname] IS NOT NULL THEN N'Officer' END AS [Discriminator] FROM [Gears] AS [g1] - LEFT JOIN [Officers] AS [o1] ON [g1].[Nickname] = [o1].[Nickname] AND [g1].[SquadId] = [o1].[SquadId] + LEFT JOIN [Officers] AS [o0] ON [g1].[Nickname] = [o0].[Nickname] AND [g1].[SquadId] = [o0].[SquadId] WHERE [g1].[HasSoulPatch] = CAST(0 AS bit) ) AS [t] ON [g].[Nickname] = [t].[LeaderNickname] AND [g].[SquadId] = [t].[LeaderSquadId] WHERE [o].[Nickname] IS NOT NULL @@ -7008,24 +7008,24 @@ public override async Task Group_by_with_include_with_entity_in_result_selector( AssertSql( """ -SELECT [t].[Rank], [t].[c], [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator], [t0].[Name], [t0].[Location], [t0].[Nation] +SELECT [t].[Rank], [t].[c], [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator], [t1].[Name], [t1].[Location], [t1].[Nation] FROM ( SELECT [g].[Rank], COUNT(*) AS [c] FROM [Gears] AS [g] GROUP BY [g].[Rank] ) AS [t] LEFT JOIN ( - SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator], [t1].[Name], [t1].[Location], [t1].[Nation] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator], [t0].[Name], [t0].[Location], [t0].[Nation] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], CASE - WHEN [o0].[Nickname] IS NOT NULL THEN N'Officer' + WHEN [o].[Nickname] IS NOT NULL THEN N'Officer' END AS [Discriminator], [c].[Name], [c].[Location], [c].[Nation], ROW_NUMBER() OVER(PARTITION BY [g0].[Rank] ORDER BY [g0].[Nickname]) AS [row] FROM [Gears] AS [g0] - LEFT JOIN [Officers] AS [o0] ON [g0].[Nickname] = [o0].[Nickname] AND [g0].[SquadId] = [o0].[SquadId] + LEFT JOIN [Officers] AS [o] ON [g0].[Nickname] = [o].[Nickname] AND [g0].[SquadId] = [o].[SquadId] INNER JOIN [Cities] AS [c] ON [g0].[CityOfBirthName] = [c].[Name] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Rank] = [t0].[Rank] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Rank] = [t1].[Rank] ORDER BY [t].[Rank] """); } @@ -7048,25 +7048,25 @@ public override async Task Include_with_group_by_and_FirstOrDefault_gets_properl AssertSql( """ -SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator], [t0].[Name], [t0].[Location], [t0].[Nation] +SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator], [t1].[Name], [t1].[Location], [t1].[Nation] FROM ( SELECT [g].[Rank] FROM [Gears] AS [g] GROUP BY [g].[Rank] ) AS [t] LEFT JOIN ( - SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator], [t1].[Name], [t1].[Location], [t1].[Nation] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t0].[Discriminator], [t0].[Name], [t0].[Location], [t0].[Nation] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], CASE - WHEN [o0].[Nickname] IS NOT NULL THEN N'Officer' + WHEN [o].[Nickname] IS NOT NULL THEN N'Officer' END AS [Discriminator], [c].[Name], [c].[Location], [c].[Nation], ROW_NUMBER() OVER(PARTITION BY [g0].[Rank] ORDER BY [g0].[Nickname], [g0].[SquadId], [c].[Name]) AS [row] FROM [Gears] AS [g0] - LEFT JOIN [Officers] AS [o0] ON [g0].[Nickname] = [o0].[Nickname] AND [g0].[SquadId] = [o0].[SquadId] + LEFT JOIN [Officers] AS [o] ON [g0].[Nickname] = [o].[Nickname] AND [g0].[SquadId] = [o].[SquadId] INNER JOIN [Cities] AS [c] ON [g0].[CityOfBirthName] = [c].[Name] WHERE [g0].[HasSoulPatch] = CAST(1 AS bit) - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Rank] = [t0].[Rank] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Rank] = [t1].[Rank] """); } @@ -7517,19 +7517,19 @@ public override async Task Anonymous_projection_take_followed_by_projecting_sing """ @__p_0='25' -SELECT [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[SynergyWithId] +SELECT [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] FROM ( SELECT TOP(@__p_0) [g].[FullName] FROM [Gears] AS [g] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[SynergyWithId] + SELECT [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[SynergyWithId] FROM ( SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], ROW_NUMBER() OVER(PARTITION BY [w].[OwnerFullName] ORDER BY [w].[Id]) AS [row] FROM [Weapons] AS [w] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[FullName] = [t0].[OwnerFullName] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[FullName] = [t1].[OwnerFullName] """); } @@ -7636,7 +7636,7 @@ public override async Task Project_collection_navigation_nested_with_take_compos AssertSql( """ -SELECT [t].[Id], [t0].[Nickname], [t0].[SquadId], [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator] +SELECT [t].[Id], [t0].[Nickname], [t0].[SquadId], [t2].[Nickname], [t2].[SquadId], [t2].[AssignedCityName], [t2].[CityOfBirthName], [t2].[FullName], [t2].[HasSoulPatch], [t2].[LeaderNickname], [t2].[LeaderSquadId], [t2].[Rank], [t2].[Discriminator] FROM [Tags] AS [t] LEFT JOIN ( SELECT [g].[Nickname], [g].[SquadId], CASE @@ -7646,18 +7646,18 @@ FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] ) AS [t0] ON [t].[GearNickName] = [t0].[Nickname] AND [t].[GearSquadId] = [t0].[SquadId] LEFT JOIN ( - SELECT [t2].[Nickname], [t2].[SquadId], [t2].[AssignedCityName], [t2].[CityOfBirthName], [t2].[FullName], [t2].[HasSoulPatch], [t2].[LeaderNickname], [t2].[LeaderSquadId], [t2].[Rank], [t2].[Discriminator] + SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[Rank], [t1].[Discriminator] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], CASE WHEN [o0].[Nickname] IS NOT NULL THEN N'Officer' END AS [Discriminator], ROW_NUMBER() OVER(PARTITION BY [g0].[LeaderNickname], [g0].[LeaderSquadId] ORDER BY [g0].[Nickname], [g0].[SquadId]) AS [row] FROM [Gears] AS [g0] LEFT JOIN [Officers] AS [o0] ON [g0].[Nickname] = [o0].[Nickname] AND [g0].[SquadId] = [o0].[SquadId] - ) AS [t2] - WHERE [t2].[row] <= 50 -) AS [t1] ON ([t0].[Nickname] = [t1].[LeaderNickname] OR ([t0].[Nickname] IS NULL AND [t1].[LeaderNickname] IS NULL)) AND [t0].[SquadId] = [t1].[LeaderSquadId] + ) AS [t1] + WHERE [t1].[row] <= 50 +) AS [t2] ON ([t0].[Nickname] = [t2].[LeaderNickname] OR ([t0].[Nickname] IS NULL AND [t2].[LeaderNickname] IS NULL)) AND [t0].[SquadId] = [t2].[LeaderSquadId] WHERE [t0].[Discriminator] = N'Officer' -ORDER BY [t].[Id], [t0].[Nickname], [t0].[SquadId], [t1].[Nickname] +ORDER BY [t].[Id], [t0].[Nickname], [t0].[SquadId], [t2].[Nickname] """); } @@ -8019,21 +8019,21 @@ public override async Task Accessing_property_of_optional_navigation_in_child_pr SELECT CASE WHEN [t0].[Nickname] IS NOT NULL AND [t0].[SquadId] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) -END, [t].[Id], [t0].[Nickname], [t0].[SquadId], [t1].[Nickname], [t1].[Id], [t1].[SquadId] +END, [t].[Id], [t0].[Nickname], [t0].[SquadId], [t2].[Nickname], [t2].[Id], [t2].[SquadId] FROM [Tags] AS [t] LEFT JOIN ( SELECT [g].[Nickname], [g].[SquadId], [g].[FullName] FROM [Gears] AS [g] ) AS [t0] ON [t].[GearNickName] = [t0].[Nickname] AND [t].[GearSquadId] = [t0].[SquadId] LEFT JOIN ( - SELECT [t2].[Nickname], [w].[Id], [t2].[SquadId], [w].[OwnerFullName] + SELECT [t1].[Nickname], [w].[Id], [t1].[SquadId], [w].[OwnerFullName] FROM [Weapons] AS [w] LEFT JOIN ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[FullName] FROM [Gears] AS [g0] - ) AS [t2] ON [w].[OwnerFullName] = [t2].[FullName] -) AS [t1] ON [t0].[FullName] = [t1].[OwnerFullName] -ORDER BY [t].[Note], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t1].[Id], [t1].[Nickname] + ) AS [t1] ON [w].[OwnerFullName] = [t1].[FullName] +) AS [t2] ON [t0].[FullName] = [t2].[OwnerFullName] +ORDER BY [t].[Note], [t].[Id], [t0].[Nickname], [t0].[SquadId], [t2].[Id], [t2].[Nickname] """); } @@ -8578,10 +8578,10 @@ ELSE NULL END AS [IsEradicated], [t].[CommanderName], [t].[Name] FROM [LocustLeaders] AS [l] INNER JOIN ( - SELECT [f].[Name], [l1].[CommanderName] + SELECT [f].[Name], [l0].[CommanderName] FROM [Factions] AS [f] - LEFT JOIN [LocustHordes] AS [l1] ON [f].[Id] = [l1].[Id] - WHERE [l1].[Id] IS NOT NULL + LEFT JOIN [LocustHordes] AS [l0] ON [f].[Id] = [l0].[Id] + WHERE [l0].[Id] IS NOT NULL ) AS [t] ON [l].[Name] = [t].[CommanderName] WHERE CASE WHEN [t].[Name] = N'Locust' THEN CAST(1 AS bit) @@ -9057,8 +9057,8 @@ END AS [Discriminator] FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] WHERE [l].[ThreatLevelByte] IN ( - SELECT [l1].[ThreatLevelByte] - FROM [LocustLeaders] AS [l1] + SELECT [l0].[ThreatLevelByte] + FROM [LocustLeaders] AS [l0] ) ) AS [t] """); @@ -9080,8 +9080,8 @@ END AS [Discriminator] FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] WHERE [l].[ThreatLevelByte] NOT IN ( - SELECT [l1].[ThreatLevelByte] - FROM [LocustLeaders] AS [l1] + SELECT [l0].[ThreatLevelByte] + FROM [LocustLeaders] AS [l0] ) ) AS [t] """); @@ -9103,8 +9103,8 @@ FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] WHERE EXISTS ( SELECT 1 - FROM [LocustLeaders] AS [l1] - WHERE [l1].[ThreatLevelNullableByte] = [l].[ThreatLevelNullableByte] OR ([l1].[ThreatLevelNullableByte] IS NULL AND [l].[ThreatLevelNullableByte] IS NULL)) + FROM [LocustLeaders] AS [l0] + WHERE [l0].[ThreatLevelNullableByte] = [l].[ThreatLevelNullableByte] OR ([l0].[ThreatLevelNullableByte] IS NULL AND [l].[ThreatLevelNullableByte] IS NULL)) ) AS [t] """); } @@ -9125,8 +9125,8 @@ FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] WHERE NOT EXISTS ( SELECT 1 - FROM [LocustLeaders] AS [l1] - WHERE [l1].[ThreatLevelNullableByte] = [l].[ThreatLevelNullableByte] OR ([l1].[ThreatLevelNullableByte] IS NULL AND [l].[ThreatLevelNullableByte] IS NULL)) + FROM [LocustLeaders] AS [l0] + WHERE [l0].[ThreatLevelNullableByte] = [l].[ThreatLevelNullableByte] OR ([l0].[ThreatLevelNullableByte] IS NULL AND [l].[ThreatLevelNullableByte] IS NULL)) ) AS [t] """); } @@ -10707,13 +10707,13 @@ public override async Task Correlated_collection_after_distinct_3_levels(bool as AssertSql( """ -SELECT [t].[Id], [t].[Name], [t1].[Nickname], [t1].[FullName], [t1].[HasSoulPatch], [t1].[Id], [t1].[Name], [t1].[Nickname0], [t1].[FullName0], [t1].[HasSoulPatch0], [t1].[Id0] +SELECT [t].[Id], [t].[Name], [t2].[Nickname], [t2].[FullName], [t2].[HasSoulPatch], [t2].[Id], [t2].[Name], [t2].[Nickname0], [t2].[FullName0], [t2].[HasSoulPatch0], [t2].[Id0] FROM ( SELECT DISTINCT [s].[Id], [s].[Name] FROM [Squads] AS [s] ) AS [t] OUTER APPLY ( - SELECT [t0].[Nickname], [t0].[FullName], [t0].[HasSoulPatch], [t2].[Id], [t2].[Name], [t2].[Nickname] AS [Nickname0], [t2].[FullName] AS [FullName0], [t2].[HasSoulPatch] AS [HasSoulPatch0], [t2].[Id0] + SELECT [t0].[Nickname], [t0].[FullName], [t0].[HasSoulPatch], [t1].[Id], [t1].[Name], [t1].[Nickname] AS [Nickname0], [t1].[FullName] AS [FullName0], [t1].[HasSoulPatch] AS [HasSoulPatch0], [t1].[Id0] FROM ( SELECT DISTINCT [g].[Nickname], [g].[FullName], [g].[HasSoulPatch] FROM [Gears] AS [g] @@ -10723,9 +10723,9 @@ OUTER APPLY ( SELECT [t].[Id], [t].[Name], [t0].[Nickname], [t0].[FullName], [t0].[HasSoulPatch], [w].[Id] AS [Id0] FROM [Weapons] AS [w] WHERE [w].[OwnerFullName] = [t0].[FullName] - ) AS [t2] -) AS [t1] -ORDER BY [t].[Id], [t1].[Nickname], [t1].[FullName], [t1].[HasSoulPatch] + ) AS [t1] +) AS [t2] +ORDER BY [t].[Id], [t2].[Nickname], [t2].[FullName], [t2].[HasSoulPatch] """); } @@ -11443,12 +11443,12 @@ END AS [Discriminator] FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] WHERE ( - SELECT TOP(1) [w].[Name] - FROM [Weapons] AS [w] - WHERE [g].[FullName] = [w].[OwnerFullName] - ORDER BY [w].[Id]) IN ( - SELECT [w0].[value] - FROM OPENJSON(@__weapons_0) WITH ([value] nvarchar(max) '$') AS [w0] + SELECT TOP(1) [w0].[Name] + FROM [Weapons] AS [w0] + WHERE [g].[FullName] = [w0].[OwnerFullName] + ORDER BY [w0].[Id]) IN ( + SELECT [w].[value] + FROM OPENJSON(@__weapons_0) WITH ([value] nvarchar(max) '$') AS [w] ) """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TPTManyToManyNoTrackingQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TPTManyToManyNoTrackingQuerySqlServerTest.cs index 554fab10c11..c183035a3ef 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TPTManyToManyNoTrackingQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TPTManyToManyNoTrackingQuerySqlServerTest.cs @@ -1048,20 +1048,20 @@ public override async Task Filter_include_on_skip_navigation_combined_with_filte SELECT [e].[Id], [e].[CollectionInverseId], [e].[Name], [e].[ReferenceInverseId], [t3].[Id], [t3].[Name], [t3].[OneId], [t3].[ThreeId], [t3].[Id0], [t3].[CollectionInverseId], [t3].[ExtraId], [t3].[Name0], [t3].[ReferenceInverseId], [t3].[OneId0], [t3].[TwoId], [t3].[Id1], [t3].[Name1], [t3].[Number], [t3].[IsGreen], [t3].[Discriminator], [t3].[EntityBranchId], [t3].[EntityOneId] FROM [EntityThrees] AS [e] LEFT JOIN ( - SELECT [e0].[Id], [e0].[Name], [j].[OneId], [j].[ThreeId], [t0].[Id] AS [Id0], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name] AS [Name0], [t0].[ReferenceInverseId], [t0].[OneId] AS [OneId0], [t0].[TwoId], [t1].[Id] AS [Id1], [t1].[Name] AS [Name1], [t1].[Number], [t1].[IsGreen], [t1].[Discriminator], [t1].[EntityBranchId], [t1].[EntityOneId] + SELECT [e0].[Id], [e0].[Name], [j].[OneId], [j].[ThreeId], [t1].[Id] AS [Id0], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name] AS [Name0], [t1].[ReferenceInverseId], [t1].[OneId] AS [OneId0], [t1].[TwoId], [t2].[Id] AS [Id1], [t2].[Name] AS [Name1], [t2].[Number], [t2].[IsGreen], [t2].[Discriminator], [t2].[EntityBranchId], [t2].[EntityOneId] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] LEFT JOIN ( - SELECT [t].[Id], [t].[CollectionInverseId], [t].[ExtraId], [t].[Name], [t].[ReferenceInverseId], [t].[OneId], [t].[TwoId] + SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name], [t0].[ReferenceInverseId], [t0].[OneId], [t0].[TwoId] FROM ( SELECT [e1].[Id], [e1].[CollectionInverseId], [e1].[ExtraId], [e1].[Name], [e1].[ReferenceInverseId], [j0].[OneId], [j0].[TwoId], ROW_NUMBER() OVER(PARTITION BY [j0].[OneId] ORDER BY [e1].[Id]) AS [row] FROM [JoinOneToTwo] AS [j0] INNER JOIN [EntityTwos] AS [e1] ON [j0].[TwoId] = [e1].[Id] - ) AS [t] - WHERE 1 < [t].[row] AND [t].[row] <= 3 - ) AS [t0] ON [e0].[Id] = [t0].[OneId] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 + ) AS [t1] ON [e0].[Id] = [t1].[OneId] LEFT JOIN ( - SELECT [t2].[Id], [t2].[Name], [t2].[Number], [t2].[IsGreen], [t2].[Discriminator], [j1].[EntityBranchId], [j1].[EntityOneId] + SELECT [t].[Id], [t].[Name], [t].[Number], [t].[IsGreen], [t].[Discriminator], [j1].[EntityBranchId], [j1].[EntityOneId] FROM [JoinOneToBranch] AS [j1] INNER JOIN ( SELECT [r].[Id], [r].[Name], [b].[Number], [l].[IsGreen], CASE @@ -1070,9 +1070,9 @@ END AS [Discriminator] FROM [Roots] AS [r] INNER JOIN [Branches] AS [b] ON [r].[Id] = [b].[Id] LEFT JOIN [Leaves] AS [l] ON [r].[Id] = [l].[Id] - ) AS [t2] ON [j1].[EntityBranchId] = [t2].[Id] - WHERE [t2].[Id] < 20 - ) AS [t1] ON [e0].[Id] = [t1].[EntityOneId] + ) AS [t] ON [j1].[EntityBranchId] = [t].[Id] + WHERE [t].[Id] < 20 + ) AS [t2] ON [e0].[Id] = [t2].[EntityOneId] WHERE [e0].[Id] < 10 ) AS [t3] ON [e].[Id] = [t3].[ThreeId] ORDER BY [e].[Id], [t3].[OneId], [t3].[ThreeId], [t3].[Id], [t3].[OneId0], [t3].[Id0], [t3].[TwoId], [t3].[EntityBranchId], [t3].[EntityOneId] @@ -1519,7 +1519,7 @@ FROM [EntityCompositeKeyEntityRoot] AS [e] """, // """ -SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [r].[Id], [t].[RootSkipSharedId], [t].[CompositeKeySkipSharedKey1], [t].[CompositeKeySkipSharedKey2], [t].[CompositeKeySkipSharedKey3], [t].[Key1], [t].[Key2], [t].[Key3] +SELECT [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [r].[Id], [t].[RootSkipSharedId], [t].[CompositeKeySkipSharedKey1], [t].[CompositeKeySkipSharedKey2], [t].[CompositeKeySkipSharedKey3], [t].[Key1], [t].[Key2], [t].[Key3] FROM [Roots] AS [r] INNER JOIN ( SELECT [e0].[Key1], [e0].[Key2], [e0].[Key3], [e].[RootSkipSharedId], [e].[CompositeKeySkipSharedKey1], [e].[CompositeKeySkipSharedKey2], [e].[CompositeKeySkipSharedKey3] @@ -1527,15 +1527,15 @@ FROM [EntityCompositeKeyEntityRoot] AS [e] INNER JOIN [EntityCompositeKeys] AS [e0] ON [e].[CompositeKeySkipSharedKey1] = [e0].[Key1] AND [e].[CompositeKeySkipSharedKey2] = [e0].[Key2] AND [e].[CompositeKeySkipSharedKey3] = [e0].[Key3] ) AS [t] ON [r].[Id] = [t].[RootSkipSharedId] INNER JOIN ( - SELECT [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3] + SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [t0].[CompositeId1], [t0].[CompositeId2], [t0].[CompositeId3] FROM ( SELECT [e1].[Id], [e1].[CollectionInverseId], [e1].[Name], [e1].[ReferenceInverseId], [j].[CompositeId1], [j].[CompositeId2], [j].[CompositeId3], ROW_NUMBER() OVER(PARTITION BY [j].[CompositeId1], [j].[CompositeId2], [j].[CompositeId3] ORDER BY [e1].[Id]) AS [row] FROM [JoinThreeToCompositeKeyFull] AS [j] INNER JOIN [EntityThrees] AS [e1] ON [j].[ThreeId] = [e1].[Id] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 3 -) AS [t0] ON [t].[Key1] = [t0].[CompositeId1] AND [t].[Key2] = [t0].[CompositeId2] AND [t].[Key3] = [t0].[CompositeId3] -ORDER BY [r].[Id], [t].[RootSkipSharedId], [t].[CompositeKeySkipSharedKey1], [t].[CompositeKeySkipSharedKey2], [t].[CompositeKeySkipSharedKey3], [t].[Key1], [t].[Key2], [t].[Key3], [t0].[CompositeId1], [t0].[CompositeId2], [t0].[CompositeId3], [t0].[Id] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 +) AS [t1] ON [t].[Key1] = [t1].[CompositeId1] AND [t].[Key2] = [t1].[CompositeId2] AND [t].[Key3] = [t1].[CompositeId3] +ORDER BY [r].[Id], [t].[RootSkipSharedId], [t].[CompositeKeySkipSharedKey1], [t].[CompositeKeySkipSharedKey2], [t].[CompositeKeySkipSharedKey3], [t].[Key1], [t].[Key2], [t].[Key3], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3], [t1].[Id] """); } @@ -1658,7 +1658,7 @@ WHERE [e0].[Id] < 10 """, // """ -SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id] +SELECT [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id] FROM [EntityOnes] AS [e] INNER JOIN ( SELECT [e0].[Id], [j].[OneId], [j].[TwoId] @@ -1667,15 +1667,15 @@ FROM [JoinOneToTwo] AS [j] WHERE [e0].[Id] < 10 ) AS [t] ON [e].[Id] = [t].[OneId] INNER JOIN ( - SELECT [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [t1].[TwoId] + SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [t0].[TwoId] FROM ( SELECT [e1].[Id], [e1].[CollectionInverseId], [e1].[Name], [e1].[ReferenceInverseId], [j0].[TwoId], ROW_NUMBER() OVER(PARTITION BY [j0].[TwoId] ORDER BY [e1].[Id]) AS [row] FROM [JoinTwoToThree] AS [j0] INNER JOIN [EntityThrees] AS [e1] ON [j0].[ThreeId] = [e1].[Id] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 3 -) AS [t0] ON [t].[Id] = [t0].[TwoId] -ORDER BY [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id], [t0].[TwoId], [t0].[Id] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 +) AS [t1] ON [t].[Id] = [t1].[TwoId] +ORDER BY [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id], [t1].[TwoId], [t1].[Id] """); } @@ -1730,26 +1730,26 @@ ORDER BY [e].[Id] """, // """ -SELECT [t].[Id], [t].[Name], [e].[Id], [t].[OneId], [t].[ThreeId] +SELECT [t0].[Id], [t0].[Name], [e].[Id], [t0].[OneId], [t0].[ThreeId] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [e0].[Id], [e0].[Name], [j].[OneId], [j].[ThreeId] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] """, // """ -SELECT [t0].[Id], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name], [t0].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +SELECT [t2].[Id], [t2].[CollectionInverseId], [t2].[ExtraId], [t2].[Name], [t2].[ReferenceInverseId], [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [e0].[Id], [j].[OneId], [j].[ThreeId] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] INNER JOIN ( SELECT [t1].[Id], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name], [t1].[ReferenceInverseId], [t1].[OneId] FROM ( @@ -1758,22 +1758,22 @@ FROM [JoinOneToTwo] AS [j0] INNER JOIN [EntityTwos] AS [e1] ON [j0].[TwoId] = [e1].[Id] ) AS [t1] WHERE 1 < [t1].[row] AND [t1].[row] <= 3 -) AS [t0] ON [t].[Id] = [t0].[OneId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id], [t0].[OneId], [t0].[Id] +) AS [t2] ON [t0].[Id] = [t2].[OneId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id], [t2].[OneId], [t2].[Id] """, // """ -SELECT [t0].[Id], [t0].[Name], [t0].[Number], [t0].[IsGreen], [t0].[Discriminator], [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +SELECT [t3].[Id], [t3].[Name], [t3].[Number], [t3].[IsGreen], [t3].[Discriminator], [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [e0].[Id], [j].[OneId], [j].[ThreeId] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] INNER JOIN ( - SELECT [t1].[Id], [t1].[Name], [t1].[Number], [t1].[IsGreen], [t1].[Discriminator], [j0].[EntityOneId] - FROM [JoinOneToBranch] AS [j0] + SELECT [t].[Id], [t].[Name], [t].[Number], [t].[IsGreen], [t].[Discriminator], [j1].[EntityOneId] + FROM [JoinOneToBranch] AS [j1] INNER JOIN ( SELECT [r].[Id], [r].[Name], [b].[Number], [l].[IsGreen], CASE WHEN [l].[Id] IS NOT NULL THEN N'EntityLeaf' @@ -1781,10 +1781,10 @@ END AS [Discriminator] FROM [Roots] AS [r] INNER JOIN [Branches] AS [b] ON [r].[Id] = [b].[Id] LEFT JOIN [Leaves] AS [l] ON [r].[Id] = [l].[Id] - ) AS [t1] ON [j0].[EntityBranchId] = [t1].[Id] - WHERE [t1].[Id] < 20 -) AS [t0] ON [t].[Id] = [t0].[EntityOneId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] + ) AS [t] ON [j1].[EntityBranchId] = [t].[Id] + WHERE [t].[Id] < 20 +) AS [t3] ON [t0].[Id] = [t3].[EntityOneId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] """); } @@ -2268,9 +2268,9 @@ public override async Task Select_many_over_skip_navigation_unidirectional(bool SELECT [t].[Id], [t].[CollectionInverseId], [t].[Name], [t].[ReferenceInverseId] FROM [UnidirectionalRoots] AS [u] INNER JOIN ( - SELECT [u3].[Id], [u3].[CollectionInverseId], [u3].[Name], [u3].[ReferenceInverseId], [u2].[UnidirectionalEntityRootId] - FROM [UnidirectionalEntityRootUnidirectionalEntityThree] AS [u2] - INNER JOIN [UnidirectionalEntityThrees] AS [u3] ON [u2].[ThreeSkipSharedId] = [u3].[Id] + SELECT [u1].[Id], [u1].[CollectionInverseId], [u1].[Name], [u1].[ReferenceInverseId], [u0].[UnidirectionalEntityRootId] + FROM [UnidirectionalEntityRootUnidirectionalEntityThree] AS [u0] + INNER JOIN [UnidirectionalEntityThrees] AS [u1] ON [u0].[ThreeSkipSharedId] = [u1].[Id] ) AS [t] ON [u].[Id] = [t].[UnidirectionalEntityRootId] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TPTManyToManyQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TPTManyToManyQuerySqlServerTest.cs index d5fe40fb868..573142dbe85 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TPTManyToManyQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TPTManyToManyQuerySqlServerTest.cs @@ -1047,20 +1047,20 @@ public override async Task Filter_include_on_skip_navigation_combined_with_filte SELECT [e].[Id], [e].[CollectionInverseId], [e].[Name], [e].[ReferenceInverseId], [t3].[OneId], [t3].[ThreeId], [t3].[Payload], [t3].[Id], [t3].[Name], [t3].[OneId0], [t3].[TwoId], [t3].[JoinOneToTwoExtraId], [t3].[Id0], [t3].[CollectionInverseId], [t3].[ExtraId], [t3].[Name0], [t3].[ReferenceInverseId], [t3].[EntityBranchId], [t3].[EntityOneId], [t3].[Id1], [t3].[Name1], [t3].[Number], [t3].[IsGreen], [t3].[Discriminator] FROM [EntityThrees] AS [e] LEFT JOIN ( - SELECT [j].[OneId], [j].[ThreeId], [j].[Payload], [e0].[Id], [e0].[Name], [t0].[OneId] AS [OneId0], [t0].[TwoId], [t0].[JoinOneToTwoExtraId], [t0].[Id] AS [Id0], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name] AS [Name0], [t0].[ReferenceInverseId], [t1].[EntityBranchId], [t1].[EntityOneId], [t1].[Id] AS [Id1], [t1].[Name] AS [Name1], [t1].[Number], [t1].[IsGreen], [t1].[Discriminator] + SELECT [j].[OneId], [j].[ThreeId], [j].[Payload], [e0].[Id], [e0].[Name], [t1].[OneId] AS [OneId0], [t1].[TwoId], [t1].[JoinOneToTwoExtraId], [t1].[Id] AS [Id0], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name] AS [Name0], [t1].[ReferenceInverseId], [t2].[EntityBranchId], [t2].[EntityOneId], [t2].[Id] AS [Id1], [t2].[Name] AS [Name1], [t2].[Number], [t2].[IsGreen], [t2].[Discriminator] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] LEFT JOIN ( - SELECT [t].[OneId], [t].[TwoId], [t].[JoinOneToTwoExtraId], [t].[Id], [t].[CollectionInverseId], [t].[ExtraId], [t].[Name], [t].[ReferenceInverseId] + SELECT [t0].[OneId], [t0].[TwoId], [t0].[JoinOneToTwoExtraId], [t0].[Id], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name], [t0].[ReferenceInverseId] FROM ( SELECT [j0].[OneId], [j0].[TwoId], [j0].[JoinOneToTwoExtraId], [e1].[Id], [e1].[CollectionInverseId], [e1].[ExtraId], [e1].[Name], [e1].[ReferenceInverseId], ROW_NUMBER() OVER(PARTITION BY [j0].[OneId] ORDER BY [e1].[Id]) AS [row] FROM [JoinOneToTwo] AS [j0] INNER JOIN [EntityTwos] AS [e1] ON [j0].[TwoId] = [e1].[Id] - ) AS [t] - WHERE 1 < [t].[row] AND [t].[row] <= 3 - ) AS [t0] ON [e0].[Id] = [t0].[OneId] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 + ) AS [t1] ON [e0].[Id] = [t1].[OneId] LEFT JOIN ( - SELECT [j1].[EntityBranchId], [j1].[EntityOneId], [t2].[Id], [t2].[Name], [t2].[Number], [t2].[IsGreen], [t2].[Discriminator] + SELECT [j1].[EntityBranchId], [j1].[EntityOneId], [t].[Id], [t].[Name], [t].[Number], [t].[IsGreen], [t].[Discriminator] FROM [JoinOneToBranch] AS [j1] INNER JOIN ( SELECT [r].[Id], [r].[Name], [b].[Number], [l].[IsGreen], CASE @@ -1069,9 +1069,9 @@ END AS [Discriminator] FROM [Roots] AS [r] INNER JOIN [Branches] AS [b] ON [r].[Id] = [b].[Id] LEFT JOIN [Leaves] AS [l] ON [r].[Id] = [l].[Id] - ) AS [t2] ON [j1].[EntityBranchId] = [t2].[Id] - WHERE [t2].[Id] < 20 - ) AS [t1] ON [e0].[Id] = [t1].[EntityOneId] + ) AS [t] ON [j1].[EntityBranchId] = [t].[Id] + WHERE [t].[Id] < 20 + ) AS [t2] ON [e0].[Id] = [t2].[EntityOneId] WHERE [e0].[Id] < 10 ) AS [t3] ON [e].[Id] = [t3].[ThreeId] ORDER BY [e].[Id], [t3].[OneId], [t3].[ThreeId], [t3].[Id], [t3].[OneId0], [t3].[Id0], [t3].[TwoId], [t3].[EntityBranchId], [t3].[EntityOneId] @@ -1518,7 +1518,7 @@ FROM [EntityCompositeKeyEntityRoot] AS [e] """, // """ -SELECT [t0].[Id], [t0].[CompositeId1], [t0].[CompositeId2], [t0].[CompositeId3], [t0].[ThreeId], [t0].[Id0], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [r].[Id], [t].[RootSkipSharedId], [t].[CompositeKeySkipSharedKey1], [t].[CompositeKeySkipSharedKey2], [t].[CompositeKeySkipSharedKey3], [t].[Key1], [t].[Key2], [t].[Key3] +SELECT [t1].[Id], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3], [t1].[ThreeId], [t1].[Id0], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [r].[Id], [t].[RootSkipSharedId], [t].[CompositeKeySkipSharedKey1], [t].[CompositeKeySkipSharedKey2], [t].[CompositeKeySkipSharedKey3], [t].[Key1], [t].[Key2], [t].[Key3] FROM [Roots] AS [r] INNER JOIN ( SELECT [e].[RootSkipSharedId], [e].[CompositeKeySkipSharedKey1], [e].[CompositeKeySkipSharedKey2], [e].[CompositeKeySkipSharedKey3], [e0].[Key1], [e0].[Key2], [e0].[Key3] @@ -1526,15 +1526,15 @@ FROM [EntityCompositeKeyEntityRoot] AS [e] INNER JOIN [EntityCompositeKeys] AS [e0] ON [e].[CompositeKeySkipSharedKey1] = [e0].[Key1] AND [e].[CompositeKeySkipSharedKey2] = [e0].[Key2] AND [e].[CompositeKeySkipSharedKey3] = [e0].[Key3] ) AS [t] ON [r].[Id] = [t].[RootSkipSharedId] INNER JOIN ( - SELECT [t1].[Id], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3], [t1].[ThreeId], [t1].[Id0], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId] + SELECT [t0].[Id], [t0].[CompositeId1], [t0].[CompositeId2], [t0].[CompositeId3], [t0].[ThreeId], [t0].[Id0], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId] FROM ( SELECT [j].[Id], [j].[CompositeId1], [j].[CompositeId2], [j].[CompositeId3], [j].[ThreeId], [e1].[Id] AS [Id0], [e1].[CollectionInverseId], [e1].[Name], [e1].[ReferenceInverseId], ROW_NUMBER() OVER(PARTITION BY [j].[CompositeId1], [j].[CompositeId2], [j].[CompositeId3] ORDER BY [e1].[Id]) AS [row] FROM [JoinThreeToCompositeKeyFull] AS [j] INNER JOIN [EntityThrees] AS [e1] ON [j].[ThreeId] = [e1].[Id] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 3 -) AS [t0] ON [t].[Key1] = [t0].[CompositeId1] AND [t].[Key2] = [t0].[CompositeId2] AND [t].[Key3] = [t0].[CompositeId3] -ORDER BY [r].[Id], [t].[RootSkipSharedId], [t].[CompositeKeySkipSharedKey1], [t].[CompositeKeySkipSharedKey2], [t].[CompositeKeySkipSharedKey3], [t].[Key1], [t].[Key2], [t].[Key3], [t0].[CompositeId1], [t0].[CompositeId2], [t0].[CompositeId3], [t0].[Id0] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 +) AS [t1] ON [t].[Key1] = [t1].[CompositeId1] AND [t].[Key2] = [t1].[CompositeId2] AND [t].[Key3] = [t1].[CompositeId3] +ORDER BY [r].[Id], [t].[RootSkipSharedId], [t].[CompositeKeySkipSharedKey1], [t].[CompositeKeySkipSharedKey2], [t].[CompositeKeySkipSharedKey3], [t].[Key1], [t].[Key2], [t].[Key3], [t1].[CompositeId1], [t1].[CompositeId2], [t1].[CompositeId3], [t1].[Id0] """); } @@ -1657,7 +1657,7 @@ WHERE [e0].[Id] < 10 """, // """ -SELECT [t0].[ThreeId], [t0].[TwoId], [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id] +SELECT [t1].[ThreeId], [t1].[TwoId], [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id] FROM [EntityOnes] AS [e] INNER JOIN ( SELECT [j].[OneId], [j].[TwoId], [e0].[Id] @@ -1666,15 +1666,15 @@ FROM [JoinOneToTwo] AS [j] WHERE [e0].[Id] < 10 ) AS [t] ON [e].[Id] = [t].[OneId] INNER JOIN ( - SELECT [t1].[ThreeId], [t1].[TwoId], [t1].[Id], [t1].[CollectionInverseId], [t1].[Name], [t1].[ReferenceInverseId] + SELECT [t0].[ThreeId], [t0].[TwoId], [t0].[Id], [t0].[CollectionInverseId], [t0].[Name], [t0].[ReferenceInverseId] FROM ( SELECT [j0].[ThreeId], [j0].[TwoId], [e1].[Id], [e1].[CollectionInverseId], [e1].[Name], [e1].[ReferenceInverseId], ROW_NUMBER() OVER(PARTITION BY [j0].[TwoId] ORDER BY [e1].[Id]) AS [row] FROM [JoinTwoToThree] AS [j0] INNER JOIN [EntityThrees] AS [e1] ON [j0].[ThreeId] = [e1].[Id] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 3 -) AS [t0] ON [t].[Id] = [t0].[TwoId] -ORDER BY [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id], [t0].[TwoId], [t0].[Id] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 +) AS [t1] ON [t].[Id] = [t1].[TwoId] +ORDER BY [e].[Id], [t].[OneId], [t].[TwoId], [t].[Id], [t1].[TwoId], [t1].[Id] """); } @@ -1729,26 +1729,26 @@ ORDER BY [e].[Id] """, // """ -SELECT [t].[OneId], [t].[ThreeId], [t].[Payload], [t].[Id], [t].[Name], [e].[Id] +SELECT [t0].[OneId], [t0].[ThreeId], [t0].[Payload], [t0].[Id], [t0].[Name], [e].[Id] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [j].[OneId], [j].[ThreeId], [j].[Payload], [e0].[Id], [e0].[Name] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] """, // """ -SELECT [t0].[OneId], [t0].[TwoId], [t0].[JoinOneToTwoExtraId], [t0].[Id], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name], [t0].[ReferenceInverseId], [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +SELECT [t2].[OneId], [t2].[TwoId], [t2].[JoinOneToTwoExtraId], [t2].[Id], [t2].[CollectionInverseId], [t2].[ExtraId], [t2].[Name], [t2].[ReferenceInverseId], [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [j].[OneId], [j].[ThreeId], [e0].[Id] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] INNER JOIN ( SELECT [t1].[OneId], [t1].[TwoId], [t1].[JoinOneToTwoExtraId], [t1].[Id], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name], [t1].[ReferenceInverseId] FROM ( @@ -1757,22 +1757,22 @@ FROM [JoinOneToTwo] AS [j0] INNER JOIN [EntityTwos] AS [e1] ON [j0].[TwoId] = [e1].[Id] ) AS [t1] WHERE 1 < [t1].[row] AND [t1].[row] <= 3 -) AS [t0] ON [t].[Id] = [t0].[OneId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id], [t0].[OneId], [t0].[Id] +) AS [t2] ON [t0].[Id] = [t2].[OneId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id], [t2].[OneId], [t2].[Id] """, // """ -SELECT [t0].[EntityBranchId], [t0].[EntityOneId], [t0].[Id], [t0].[Name], [t0].[Number], [t0].[IsGreen], [t0].[Discriminator], [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] +SELECT [t3].[EntityBranchId], [t3].[EntityOneId], [t3].[Id], [t3].[Name], [t3].[Number], [t3].[IsGreen], [t3].[Discriminator], [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] FROM [EntityThrees] AS [e] INNER JOIN ( SELECT [j].[OneId], [j].[ThreeId], [e0].[Id] FROM [JoinOneToThreePayloadFull] AS [j] INNER JOIN [EntityOnes] AS [e0] ON [j].[OneId] = [e0].[Id] WHERE [e0].[Id] < 10 -) AS [t] ON [e].[Id] = [t].[ThreeId] +) AS [t0] ON [e].[Id] = [t0].[ThreeId] INNER JOIN ( - SELECT [j0].[EntityBranchId], [j0].[EntityOneId], [t1].[Id], [t1].[Name], [t1].[Number], [t1].[IsGreen], [t1].[Discriminator] - FROM [JoinOneToBranch] AS [j0] + SELECT [j1].[EntityBranchId], [j1].[EntityOneId], [t].[Id], [t].[Name], [t].[Number], [t].[IsGreen], [t].[Discriminator] + FROM [JoinOneToBranch] AS [j1] INNER JOIN ( SELECT [r].[Id], [r].[Name], [b].[Number], [l].[IsGreen], CASE WHEN [l].[Id] IS NOT NULL THEN N'EntityLeaf' @@ -1780,10 +1780,10 @@ END AS [Discriminator] FROM [Roots] AS [r] INNER JOIN [Branches] AS [b] ON [r].[Id] = [b].[Id] LEFT JOIN [Leaves] AS [l] ON [r].[Id] = [l].[Id] - ) AS [t1] ON [j0].[EntityBranchId] = [t1].[Id] - WHERE [t1].[Id] < 20 -) AS [t0] ON [t].[Id] = [t0].[EntityOneId] -ORDER BY [e].[Id], [t].[OneId], [t].[ThreeId], [t].[Id] + ) AS [t] ON [j1].[EntityBranchId] = [t].[Id] + WHERE [t].[Id] < 20 +) AS [t3] ON [t0].[Id] = [t3].[EntityOneId] +ORDER BY [e].[Id], [t0].[OneId], [t0].[ThreeId], [t0].[Id] """); } @@ -2268,9 +2268,9 @@ public override async Task Select_many_over_skip_navigation_unidirectional(bool SELECT [t].[Id], [t].[CollectionInverseId], [t].[Name], [t].[ReferenceInverseId] FROM [UnidirectionalRoots] AS [u] INNER JOIN ( - SELECT [u3].[Id], [u3].[CollectionInverseId], [u3].[Name], [u3].[ReferenceInverseId], [u2].[UnidirectionalEntityRootId] - FROM [UnidirectionalEntityRootUnidirectionalEntityThree] AS [u2] - INNER JOIN [UnidirectionalEntityThrees] AS [u3] ON [u2].[ThreeSkipSharedId] = [u3].[Id] + SELECT [u1].[Id], [u1].[CollectionInverseId], [u1].[Name], [u1].[ReferenceInverseId], [u0].[UnidirectionalEntityRootId] + FROM [UnidirectionalEntityRootUnidirectionalEntityThree] AS [u0] + INNER JOIN [UnidirectionalEntityThrees] AS [u1] ON [u0].[ThreeSkipSharedId] = [u1].[Id] ) AS [t] ON [u].[Id] = [t].[UnidirectionalEntityRootId] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TPTRelationshipsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TPTRelationshipsQuerySqlServerTest.cs index 52db73e252b..3a3d5b925a1 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TPTRelationshipsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TPTRelationshipsQuerySqlServerTest.cs @@ -1095,11 +1095,11 @@ public override async Task Collection_projection_on_base_type(bool async) SELECT [b].[Id], [t].[Id], [t].[BaseParentId], [t].[Name], [t].[DerivedProperty], [t].[Discriminator] FROM [BaseEntities] AS [b] LEFT JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Name], [d0].[DerivedProperty], CASE - WHEN [d0].[Id] IS NOT NULL THEN N'DerivedCollectionOnBase' + SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Name], [d].[DerivedProperty], CASE + WHEN [d].[Id] IS NOT NULL THEN N'DerivedCollectionOnBase' END AS [Discriminator] FROM [BaseCollectionsOnBase] AS [b0] - LEFT JOIN [DerivedCollectionsOnBase] AS [d0] ON [b0].[Id] = [d0].[Id] + LEFT JOIN [DerivedCollectionsOnBase] AS [d] ON [b0].[Id] = [d].[Id] ) AS [t] ON [b].[Id] = [t].[BaseParentId] ORDER BY [b].[Id] """); @@ -1143,16 +1143,16 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [b].[Id] +SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [b].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [b].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // @@ -1160,11 +1160,11 @@ ORDER BY [b].[Id] SELECT [t].[Id], [t].[BaseParentId], [t].[Name], [t].[DerivedProperty], [t].[Discriminator], [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Name], [d0].[DerivedProperty], CASE - WHEN [d0].[Id] IS NOT NULL THEN N'DerivedCollectionOnBase' + SELECT [b2].[Id], [b2].[BaseParentId], [b2].[Name], [d2].[DerivedProperty], CASE + WHEN [d2].[Id] IS NOT NULL THEN N'DerivedCollectionOnBase' END AS [Discriminator] - FROM [BaseCollectionsOnBase] AS [b0] - LEFT JOIN [DerivedCollectionsOnBase] AS [d0] ON [b0].[Id] = [d0].[Id] + FROM [BaseCollectionsOnBase] AS [b2] + LEFT JOIN [DerivedCollectionsOnBase] AS [d2] ON [b2].[Id] = [d2].[Id] ) AS [t] ON [b].[Id] = [t].[BaseParentId] ORDER BY [b].[Id] """); @@ -1192,24 +1192,24 @@ FROM [BaseEntities] AS [b0] """, // """ -SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id], [t].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b].[Id], [t].[Id] FROM [BaseCollectionsOnBase] AS [b] LEFT JOIN ( SELECT [b0].[Id] FROM [BaseEntities] AS [b0] ) AS [t] ON [b].[BaseParentId] = [t].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [t].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [t].[Id] = [b2].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id], [t].[Id] """, // """ -SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [b].[Id], [t].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [b].[Id], [t].[Id] FROM [BaseCollectionsOnBase] AS [b] LEFT JOIN ( SELECT [b0].[Id] FROM [BaseEntities] AS [b0] ) AS [t] ON [b].[BaseParentId] = [t].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [t].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [t].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id], [t].[Id] """); } @@ -1230,17 +1230,17 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] WHERE [b].[Name] <> N'Bar' OR [b].[Name] IS NULL ORDER BY [b].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [b].[Id] +SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [b].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [b].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] WHERE [b].[Name] <> N'Bar' OR [b].[Name] IS NULL ORDER BY [b].[Id] """, @@ -1249,11 +1249,11 @@ ORDER BY [b].[Id] SELECT [t].[Id], [t].[BaseParentId], [t].[Name], [t].[DerivedProperty], [t].[Discriminator], [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Name], [d0].[DerivedProperty], CASE - WHEN [d0].[Id] IS NOT NULL THEN N'DerivedCollectionOnBase' + SELECT [b2].[Id], [b2].[BaseParentId], [b2].[Name], [d2].[DerivedProperty], CASE + WHEN [d2].[Id] IS NOT NULL THEN N'DerivedCollectionOnBase' END AS [Discriminator] - FROM [BaseCollectionsOnBase] AS [b0] - LEFT JOIN [DerivedCollectionsOnBase] AS [d0] ON [b0].[Id] = [d0].[Id] + FROM [BaseCollectionsOnBase] AS [b2] + LEFT JOIN [DerivedCollectionsOnBase] AS [d2] ON [b2].[Id] = [d2].[Id] ) AS [t] ON [b].[Id] = [t].[BaseParentId] WHERE [b].[Name] <> N'Bar' OR [b].[Name] IS NULL ORDER BY [b].[Id] @@ -1283,25 +1283,25 @@ WHERE [b].[Name] <> N'Bar' OR [b].[Name] IS NULL """, // """ -SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id], [t].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b].[Id], [t].[Id] FROM [BaseCollectionsOnBase] AS [b] LEFT JOIN ( SELECT [b0].[Id] FROM [BaseEntities] AS [b0] ) AS [t] ON [b].[BaseParentId] = [t].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [t].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [t].[Id] = [b2].[BaseInheritanceRelationshipEntityId] WHERE [b].[Name] <> N'Bar' OR [b].[Name] IS NULL ORDER BY [b].[Id], [t].[Id] """, // """ -SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [b].[Id], [t].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [b].[Id], [t].[Id] FROM [BaseCollectionsOnBase] AS [b] LEFT JOIN ( SELECT [b0].[Id] FROM [BaseEntities] AS [b0] ) AS [t] ON [b].[BaseParentId] = [t].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [t].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [t].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] WHERE [b].[Name] <> N'Bar' OR [b].[Name] IS NULL ORDER BY [b].[Id], [t].[Id] """); @@ -1322,16 +1322,16 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [b].[Id] +SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [b].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [b].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // @@ -1362,24 +1362,24 @@ FROM [BaseEntities] AS [b] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [c].[Id], [t].[Id] +SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [c].[Id], [t].[Id] FROM [CollectionsOnBase] AS [c] LEFT JOIN ( SELECT [b].[Id] FROM [BaseEntities] AS [b] ) AS [t] ON [c].[ParentId] = [t].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [t].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [t].[Id] = [b1].[BaseInheritanceRelationshipEntityId] ORDER BY [c].[Id], [t].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [c].[Id], [t].[Id] +SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [c].[Id], [t].[Id] FROM [CollectionsOnBase] AS [c] LEFT JOIN ( SELECT [b].[Id] FROM [BaseEntities] AS [b] ) AS [t] ON [c].[ParentId] = [t].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [t].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] ORDER BY [c].[Id], [t].[Id] """); } @@ -1400,17 +1400,17 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] WHERE [b].[Name] <> N'Bar' OR [b].[Name] IS NULL ORDER BY [b].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [b].[Id] +SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [b].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [b].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] WHERE [b].[Name] <> N'Bar' OR [b].[Name] IS NULL ORDER BY [b].[Id] """, @@ -1444,25 +1444,25 @@ WHERE [c].[Name] <> N'Bar' OR [c].[Name] IS NULL """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [c].[Id], [t].[Id] +SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [c].[Id], [t].[Id] FROM [CollectionsOnBase] AS [c] LEFT JOIN ( SELECT [b].[Id] FROM [BaseEntities] AS [b] ) AS [t] ON [c].[ParentId] = [t].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [t].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [t].[Id] = [b1].[BaseInheritanceRelationshipEntityId] WHERE [c].[Name] <> N'Bar' OR [c].[Name] IS NULL ORDER BY [c].[Id], [t].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [c].[Id], [t].[Id] +SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [c].[Id], [t].[Id] FROM [CollectionsOnBase] AS [c] LEFT JOIN ( SELECT [b].[Id] FROM [BaseEntities] AS [b] ) AS [t] ON [c].[ParentId] = [t].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [t].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [t].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] WHERE [c].[Name] <> N'Bar' OR [c].[Name] IS NULL ORDER BY [c].[Id], [t].[Id] """); @@ -1481,18 +1481,18 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN [DerivedEntities] AS [d] ON [b].[Id] = [d].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [b].[Id] +SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN [DerivedEntities] AS [d] ON [b].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [b].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [b].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // @@ -1501,11 +1501,11 @@ ORDER BY [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN [DerivedEntities] AS [d] ON [b].[Id] = [d].[Id] INNER JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Name], [d0].[DerivedProperty], CASE - WHEN [d0].[Id] IS NOT NULL THEN N'DerivedCollectionOnBase' + SELECT [b2].[Id], [b2].[BaseParentId], [b2].[Name], [d2].[DerivedProperty], CASE + WHEN [d2].[Id] IS NOT NULL THEN N'DerivedCollectionOnBase' END AS [Discriminator] - FROM [BaseCollectionsOnBase] AS [b0] - LEFT JOIN [DerivedCollectionsOnBase] AS [d0] ON [b0].[Id] = [d0].[Id] + FROM [BaseCollectionsOnBase] AS [b2] + LEFT JOIN [DerivedCollectionsOnBase] AS [d2] ON [b2].[Id] = [d2].[Id] ) AS [t] ON [b].[Id] = [t].[BaseParentId] ORDER BY [b].[Id] """); @@ -1524,18 +1524,18 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN [DerivedEntities] AS [d] ON [b].[Id] = [d].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [b].[Id] +SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN [DerivedEntities] AS [d] ON [b].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [b].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [b].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // @@ -1544,11 +1544,11 @@ ORDER BY [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN [DerivedEntities] AS [d] ON [b].[Id] = [d].[Id] INNER JOIN ( - SELECT [b0].[Id], [b0].[Name], [b0].[ParentId], [d0].[DerivedInheritanceRelationshipEntityId], CASE - WHEN [d0].[Id] IS NOT NULL THEN N'DerivedCollectionOnDerived' + SELECT [b2].[Id], [b2].[Name], [b2].[ParentId], [d2].[DerivedInheritanceRelationshipEntityId], CASE + WHEN [d2].[Id] IS NOT NULL THEN N'DerivedCollectionOnDerived' END AS [Discriminator] - FROM [BaseCollectionsOnDerived] AS [b0] - LEFT JOIN [DerivedCollectionsOnDerived] AS [d0] ON [b0].[Id] = [d0].[Id] + FROM [BaseCollectionsOnDerived] AS [b2] + LEFT JOIN [DerivedCollectionsOnDerived] AS [d2] ON [b2].[Id] = [d2].[Id] ) AS [t] ON [b].[Id] = [t].[ParentId] ORDER BY [b].[Id] """); @@ -1567,18 +1567,18 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN [DerivedEntities] AS [d] ON [b].[Id] = [d].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [b].[Id] +SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN [DerivedEntities] AS [d] ON [b].[Id] = [d].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [b].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [b].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // @@ -1587,9 +1587,9 @@ ORDER BY [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN [DerivedEntities] AS [d] ON [b].[Id] = [d].[Id] INNER JOIN ( - SELECT [b0].[Id], [b0].[Name], [b0].[ParentId], [d0].[DerivedInheritanceRelationshipEntityId] - FROM [BaseCollectionsOnDerived] AS [b0] - INNER JOIN [DerivedCollectionsOnDerived] AS [d0] ON [b0].[Id] = [d0].[Id] + SELECT [b2].[Id], [b2].[Name], [b2].[ParentId], [d2].[DerivedInheritanceRelationshipEntityId] + FROM [BaseCollectionsOnDerived] AS [b2] + INNER JOIN [DerivedCollectionsOnDerived] AS [d2] ON [b2].[Id] = [d2].[Id] ) AS [t] ON [b].[Id] = [t].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id] """); @@ -1615,26 +1615,26 @@ FROM [BaseEntities] AS [b0] """, // """ -SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id], [t].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b].[Id], [t].[Id] FROM [BaseCollectionsOnDerived] AS [b] LEFT JOIN ( SELECT [b0].[Id] FROM [BaseEntities] AS [b0] INNER JOIN [DerivedEntities] AS [d0] ON [b0].[Id] = [d0].[Id] ) AS [t] ON [b].[ParentId] = [t].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [t].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [t].[Id] = [b2].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id], [t].[Id] """, // """ -SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [b].[Id], [t].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [b].[Id], [t].[Id] FROM [BaseCollectionsOnDerived] AS [b] LEFT JOIN ( SELECT [b0].[Id] FROM [BaseEntities] AS [b0] INNER JOIN [DerivedEntities] AS [d0] ON [b0].[Id] = [d0].[Id] ) AS [t] ON [b].[ParentId] = [t].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [t].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [t].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id], [t].[Id] """); } @@ -1661,24 +1661,24 @@ FROM [BaseReferencesOnBase] AS [b0] """, // """ -SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id], [t].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b].[Id], [t].[Id] FROM [BaseEntities] AS [b] LEFT JOIN ( SELECT [b0].[Id], [b0].[BaseParentId] FROM [BaseReferencesOnBase] AS [b0] ) AS [t] ON [b].[Id] = [t].[BaseParentId] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [b].[Id] = [b2].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id], [t].[Id] """, // """ -SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [b].[Id], [t].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [b].[Id], [t].[Id] FROM [BaseEntities] AS [b] LEFT JOIN ( SELECT [b0].[Id], [b0].[BaseParentId] FROM [BaseReferencesOnBase] AS [b0] ) AS [t] ON [b].[Id] = [t].[BaseParentId] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [b].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [b].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id], [t].[Id] """, // @@ -1720,26 +1720,26 @@ FROM [BaseReferencesOnBase] AS [b0] """, // """ -SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id], [t].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [b].[Id], [t].[Id] FROM [BaseEntities] AS [b] INNER JOIN [DerivedEntities] AS [d] ON [b].[Id] = [d].[Id] LEFT JOIN ( SELECT [b0].[Id], [b0].[BaseParentId] FROM [BaseReferencesOnBase] AS [b0] ) AS [t] ON [b].[Id] = [t].[BaseParentId] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [b].[Id] = [b2].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id], [t].[Id] """, // """ -SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [b].[Id], [t].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [b].[Id], [t].[Id] FROM [BaseEntities] AS [b] INNER JOIN [DerivedEntities] AS [d] ON [b].[Id] = [d].[Id] LEFT JOIN ( SELECT [b0].[Id], [b0].[BaseParentId] FROM [BaseReferencesOnBase] AS [b0] ) AS [t] ON [b].[Id] = [t].[BaseParentId] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [b].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [b].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id], [t].[Id] """, // @@ -1791,7 +1791,7 @@ FROM [BaseEntities] AS [b0] """, // """ -SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [n].[Id], [t].[Id], [t0].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [n].[Id], [t].[Id], [t0].[Id] FROM [NestedCollections] AS [n] LEFT JOIN ( SELECT [b].[Id], [b].[BaseParentId] @@ -1801,12 +1801,12 @@ LEFT JOIN ( SELECT [b0].[Id] FROM [BaseEntities] AS [b0] ) AS [t0] ON [t].[BaseParentId] = [t0].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [t0].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [t0].[Id] = [b2].[BaseInheritanceRelationshipEntityId] ORDER BY [n].[Id], [t].[Id], [t0].[Id] """, // """ -SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [n].[Id], [t].[Id], [t0].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [n].[Id], [t].[Id], [t0].[Id] FROM [NestedCollections] AS [n] LEFT JOIN ( SELECT [b].[Id], [b].[BaseParentId] @@ -1816,7 +1816,7 @@ LEFT JOIN ( SELECT [b0].[Id] FROM [BaseEntities] AS [b0] ) AS [t0] ON [t].[BaseParentId] = [t0].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [t0].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [t0].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] ORDER BY [n].[Id], [t].[Id], [t0].[Id] """); } @@ -1836,16 +1836,16 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [b].[Id] +SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [b].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [b].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // @@ -1853,18 +1853,18 @@ ORDER BY [b].[Id] SELECT [t0].[Id], [t0].[BaseParentId], [t0].[Name], [t0].[DerivedProperty], [t0].[Discriminator], [t0].[Id0], [t0].[Name0], [t0].[ParentCollectionId], [t0].[ParentReferenceId], [t0].[Discriminator0] AS [Discriminator], [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Name], [d0].[DerivedProperty], CASE - WHEN [d0].[Id] IS NOT NULL THEN N'DerivedCollectionOnBase' + SELECT [b2].[Id], [b2].[BaseParentId], [b2].[Name], [d2].[DerivedProperty], CASE + WHEN [d2].[Id] IS NOT NULL THEN N'DerivedCollectionOnBase' END AS [Discriminator], [t].[Id] AS [Id0], [t].[Name] AS [Name0], [t].[ParentCollectionId], [t].[ParentReferenceId], [t].[Discriminator] AS [Discriminator0] - FROM [BaseCollectionsOnBase] AS [b0] - LEFT JOIN [DerivedCollectionsOnBase] AS [d0] ON [b0].[Id] = [d0].[Id] + FROM [BaseCollectionsOnBase] AS [b2] + LEFT JOIN [DerivedCollectionsOnBase] AS [d2] ON [b2].[Id] = [d2].[Id] LEFT JOIN ( SELECT [n].[Id], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], CASE WHEN [n0].[Id] IS NOT NULL THEN N'NestedReferenceDerived' END AS [Discriminator] FROM [NestedReferences] AS [n] LEFT JOIN [NestedReferencesDerived] AS [n0] ON [n].[Id] = [n0].[Id] - ) AS [t] ON [b0].[Id] = [t].[ParentCollectionId] + ) AS [t] ON [b2].[Id] = [t].[ParentCollectionId] ) AS [t0] ON [b].[Id] = [t0].[BaseParentId] ORDER BY [b].[Id] """); @@ -1899,7 +1899,7 @@ FROM [BaseEntities] AS [b0] """, // """ -SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [n].[Id], [t].[Id], [t0].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [n].[Id], [t].[Id], [t0].[Id] FROM [NestedReferences] AS [n] LEFT JOIN ( SELECT [b].[Id], [b].[BaseParentId] @@ -1909,12 +1909,12 @@ LEFT JOIN ( SELECT [b0].[Id] FROM [BaseEntities] AS [b0] ) AS [t0] ON [t].[BaseParentId] = [t0].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [t0].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [t0].[Id] = [b2].[BaseInheritanceRelationshipEntityId] ORDER BY [n].[Id], [t].[Id], [t0].[Id] """, // """ -SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [n].[Id], [t].[Id], [t0].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [n].[Id], [t].[Id], [t0].[Id] FROM [NestedReferences] AS [n] LEFT JOIN ( SELECT [b].[Id], [b].[BaseParentId] @@ -1924,7 +1924,7 @@ LEFT JOIN ( SELECT [b0].[Id] FROM [BaseEntities] AS [b0] ) AS [t0] ON [t].[BaseParentId] = [t0].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [t0].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [t0].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] ORDER BY [n].[Id], [t].[Id], [t0].[Id] """); } @@ -1944,16 +1944,16 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [b].[Id] +SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [b].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [b].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] ORDER BY [b].[Id] """, // @@ -1961,11 +1961,11 @@ ORDER BY [b].[Id] SELECT [t].[Id], [t].[BaseParentId], [t].[Name], [t].[DerivedProperty], [t].[Discriminator], [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Name], [d0].[DerivedProperty], CASE - WHEN [d0].[Id] IS NOT NULL THEN N'DerivedCollectionOnBase' + SELECT [b2].[Id], [b2].[BaseParentId], [b2].[Name], [d2].[DerivedProperty], CASE + WHEN [d2].[Id] IS NOT NULL THEN N'DerivedCollectionOnBase' END AS [Discriminator] - FROM [BaseCollectionsOnBase] AS [b0] - LEFT JOIN [DerivedCollectionsOnBase] AS [d0] ON [b0].[Id] = [d0].[Id] + FROM [BaseCollectionsOnBase] AS [b2] + LEFT JOIN [DerivedCollectionsOnBase] AS [d2] ON [b2].[Id] = [d2].[Id] ) AS [t] ON [b].[Id] = [t].[BaseParentId] ORDER BY [b].[Id], [t].[Id] """, @@ -1974,8 +1974,8 @@ FROM [BaseCollectionsOnBase] AS [b0] SELECT [t0].[Id], [t0].[Name], [t0].[ParentCollectionId], [t0].[ParentReferenceId], [t0].[Discriminator], [b].[Id], [t].[Id] FROM [BaseEntities] AS [b] INNER JOIN ( - SELECT [b0].[Id], [b0].[BaseParentId] - FROM [BaseCollectionsOnBase] AS [b0] + SELECT [b2].[Id], [b2].[BaseParentId] + FROM [BaseCollectionsOnBase] AS [b2] ) AS [t] ON [b].[Id] = [t].[BaseParentId] INNER JOIN ( SELECT [n].[Id], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId], CASE @@ -2017,7 +2017,7 @@ FROM [BaseEntities] AS [b0] """, // """ -SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [n].[Id], [t].[Id], [t0].[Id] +SELECT [b2].[BaseInheritanceRelationshipEntityId], [b2].[Id], [b2].[Name], [n].[Id], [t].[Id], [t0].[Id] FROM [NestedCollections] AS [n] LEFT JOIN ( SELECT [b].[Id], [b].[BaseParentId] @@ -2027,12 +2027,12 @@ LEFT JOIN ( SELECT [b0].[Id] FROM [BaseEntities] AS [b0] ) AS [t0] ON [t].[BaseParentId] = [t0].[Id] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [t0].[Id] = [b1].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b2] ON [t0].[Id] = [b2].[BaseInheritanceRelationshipEntityId] ORDER BY [n].[Id], [t].[Id], [t0].[Id] """, // """ -SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [n].[Id], [t].[Id], [t0].[Id] +SELECT [d2].[DerivedInheritanceRelationshipEntityId], [d2].[Id], [d2].[Name], [n].[Id], [t].[Id], [t0].[Id] FROM [NestedCollections] AS [n] LEFT JOIN ( SELECT [b].[Id], [b].[BaseParentId] @@ -2042,7 +2042,7 @@ LEFT JOIN ( SELECT [b0].[Id] FROM [BaseEntities] AS [b0] ) AS [t0] ON [t].[BaseParentId] = [t0].[Id] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [t0].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d2] ON [t0].[Id] = [d2].[DerivedInheritanceRelationshipEntityId] ORDER BY [n].[Id], [t].[Id], [t0].[Id] """); } @@ -2111,17 +2111,17 @@ ORDER BY [b].[Id] """, // """ -SELECT [b0].[BaseInheritanceRelationshipEntityId], [b0].[Id], [b0].[Name], [b].[Id] +SELECT [b1].[BaseInheritanceRelationshipEntityId], [b1].[Id], [b1].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b0] ON [b].[Id] = [b0].[BaseInheritanceRelationshipEntityId] +INNER JOIN [BaseEntities_OwnedCollectionOnBase] AS [b1] ON [b].[Id] = [b1].[BaseInheritanceRelationshipEntityId] WHERE [b].[Id] >= 4 ORDER BY [b].[Id] """, // """ -SELECT [d0].[DerivedInheritanceRelationshipEntityId], [d0].[Id], [d0].[Name], [b].[Id] +SELECT [d1].[DerivedInheritanceRelationshipEntityId], [d1].[Id], [d1].[Name], [b].[Id] FROM [BaseEntities] AS [b] -INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d0] ON [b].[Id] = [d0].[DerivedInheritanceRelationshipEntityId] +INNER JOIN [DerivedEntities_OwnedCollectionOnDerived] AS [d1] ON [b].[Id] = [d1].[DerivedInheritanceRelationshipEntityId] WHERE [b].[Id] >= 4 ORDER BY [b].[Id] """, @@ -2130,9 +2130,9 @@ ORDER BY [b].[Id] SELECT [t].[Id], [t].[Name], [t].[ParentId], [t].[DerivedInheritanceRelationshipEntityId], [b].[Id] FROM [BaseEntities] AS [b] INNER JOIN ( - SELECT [b0].[Id], [b0].[Name], [b0].[ParentId], [d0].[DerivedInheritanceRelationshipEntityId] - FROM [BaseCollectionsOnDerived] AS [b0] - INNER JOIN [DerivedCollectionsOnDerived] AS [d0] ON [b0].[Id] = [d0].[Id] + SELECT [b2].[Id], [b2].[Name], [b2].[ParentId], [d2].[DerivedInheritanceRelationshipEntityId] + FROM [BaseCollectionsOnDerived] AS [b2] + INNER JOIN [DerivedCollectionsOnDerived] AS [d2] ON [b2].[Id] = [d2].[Id] ) AS [t] ON [b].[Id] = [t].[DerivedInheritanceRelationshipEntityId] WHERE [b].[Id] >= 4 ORDER BY [b].[Id] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalComplexNavigationsCollectionsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalComplexNavigationsCollectionsQuerySqlServerTest.cs index 85362fb39b7..5632f340845 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalComplexNavigationsCollectionsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalComplexNavigationsCollectionsQuerySqlServerTest.cs @@ -167,21 +167,21 @@ public override async Task Skip_Take_on_grouping_element_into_non_entity(bool as AssertSql( """ -SELECT [t].[Date], [t0].[Name], [t0].[Id] +SELECT [t].[Date], [t1].[Name], [t1].[Id] FROM ( SELECT [l].[Date] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Name], [t1].[Id], [t1].[Date] + SELECT [t0].[Name], [t0].[Id], [t0].[Date] FROM ( SELECT [l0].[Name], [l0].[Id], [l0].[Date], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -192,22 +192,22 @@ public override async Task Filtered_include_with_Take_without_order_by_followed_ AssertSql( """ -SELECT [t].[Id], [t].[Date], [t].[Name], [t].[OneToMany_Optional_Self_Inverse1Id], [t].[OneToMany_Required_Self_Inverse1Id], [t].[OneToOne_Optional_Self1Id], [t].[PeriodEnd], [t].[PeriodStart], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t0].[PeriodEnd0], [t0].[PeriodStart0] +SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] FROM ( SELECT TOP(1) [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [l].[PeriodEnd], [l].[PeriodStart] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id], [l0].[PeriodEnd] AS [PeriodEnd0], [l0].[PeriodStart] AS [PeriodStart0] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[PeriodEnd], [t].[PeriodStart], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l1].[PeriodEnd] AS [PeriodEnd0], [l1].[PeriodStart] AS [PeriodStart0] FROM ( - SELECT TOP(40) [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l1].[PeriodEnd], [l1].[PeriodStart] - FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Optional_Inverse2Id] - ) AS [t1] - LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] ON [t1].[Id] = [l0].[Level2_Optional_Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[Id] + SELECT TOP(40) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l0].[PeriodEnd], [l0].[PeriodStart] + FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] + WHERE [t0].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + ) AS [t] + LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Id] = [l1].[Level2_Optional_Id] +) AS [t1] +ORDER BY [t0].[Id], [t1].[Id] """); } @@ -305,21 +305,21 @@ public override async Task Skip_Take_ToList_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] FROM ( SELECT [l].[Date] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], [l0].[PeriodEnd], [l0].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -349,15 +349,15 @@ public override async Task Filtered_include_same_filter_set_on_same_navigation_t SELECT [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [l].[PeriodEnd], [l].[PeriodStart], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Id0], [t0].[Id1], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t0].[PeriodEnd0], [t0].[PeriodStart0], [t0].[Level2_Optional_Id0], [t0].[Level2_Required_Id0], [t0].[Name1], [t0].[OneToMany_Optional_Inverse3Id0], [t0].[OneToMany_Optional_Self_Inverse3Id0], [t0].[OneToMany_Required_Inverse3Id0], [t0].[OneToMany_Required_Self_Inverse3Id0], [t0].[OneToOne_Optional_PK_Inverse3Id0], [t0].[OneToOne_Optional_Self3Id0], [t0].[PeriodEnd1], [t0].[PeriodStart1] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] OUTER APPLY ( - SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[PeriodEnd], [t].[PeriodStart], [l0].[Id] AS [Id0], [l1].[Id] AS [Id1], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l1].[PeriodEnd] AS [PeriodEnd0], [l1].[PeriodStart] AS [PeriodStart0], [l0].[Level2_Optional_Id] AS [Level2_Optional_Id0], [l0].[Level2_Required_Id] AS [Level2_Required_Id0], [l0].[Name] AS [Name1], [l0].[OneToMany_Optional_Inverse3Id] AS [OneToMany_Optional_Inverse3Id0], [l0].[OneToMany_Optional_Self_Inverse3Id] AS [OneToMany_Optional_Self_Inverse3Id0], [l0].[OneToMany_Required_Inverse3Id] AS [OneToMany_Required_Inverse3Id0], [l0].[OneToMany_Required_Self_Inverse3Id] AS [OneToMany_Required_Self_Inverse3Id0], [l0].[OneToOne_Optional_PK_Inverse3Id] AS [OneToOne_Optional_PK_Inverse3Id0], [l0].[OneToOne_Optional_Self3Id] AS [OneToOne_Optional_Self3Id0], [l0].[PeriodEnd] AS [PeriodEnd1], [l0].[PeriodStart] AS [PeriodStart1] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[PeriodEnd], [t].[PeriodStart], [l1].[Id] AS [Id0], [l2].[Id] AS [Id1], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name] AS [Name0], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Optional_Self_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToMany_Required_Self_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[OneToOne_Optional_Self3Id], [l2].[PeriodEnd] AS [PeriodEnd0], [l2].[PeriodStart] AS [PeriodStart0], [l1].[Level2_Optional_Id] AS [Level2_Optional_Id0], [l1].[Level2_Required_Id] AS [Level2_Required_Id0], [l1].[Name] AS [Name1], [l1].[OneToMany_Optional_Inverse3Id] AS [OneToMany_Optional_Inverse3Id0], [l1].[OneToMany_Optional_Self_Inverse3Id] AS [OneToMany_Optional_Self_Inverse3Id0], [l1].[OneToMany_Required_Inverse3Id] AS [OneToMany_Required_Inverse3Id0], [l1].[OneToMany_Required_Self_Inverse3Id] AS [OneToMany_Required_Self_Inverse3Id0], [l1].[OneToOne_Optional_PK_Inverse3Id] AS [OneToOne_Optional_PK_Inverse3Id0], [l1].[OneToOne_Optional_Self3Id] AS [OneToOne_Optional_Self3Id0], [l1].[PeriodEnd] AS [PeriodEnd1], [l1].[PeriodStart] AS [PeriodStart1] FROM ( - SELECT TOP(2) [l2].[Id], [l2].[Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Optional_Self_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToMany_Required_Self_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[OneToOne_Optional_Self2Id], [l2].[PeriodEnd], [l2].[PeriodStart] - FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] - WHERE [l].[Id] = [l2].[OneToMany_Optional_Inverse2Id] AND ([l2].[Name] <> N'Foo' OR [l2].[Name] IS NULL) - ORDER BY [l2].[Id] + SELECT TOP(2) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l0].[PeriodEnd], [l0].[PeriodStart] + FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] + WHERE [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] AND ([l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL) + ORDER BY [l0].[Id] ) AS [t] - LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] ON [t].[Id] = [l0].[Level2_Required_Id] - LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Id] = [l1].[OneToMany_Optional_Inverse3Id] + LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Id] = [l1].[Level2_Required_Id] + LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] ON [t].[Id] = [l2].[OneToMany_Optional_Inverse3Id] ) AS [t0] ORDER BY [l].[Id], [t0].[Id], [t0].[Id0] """); @@ -431,7 +431,7 @@ public override async Task Include_collection_with_groupby_in_subquery_and_filte AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t].[Name], [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l1].[PeriodEnd], [l1].[PeriodStart] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t].[Name], [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l1].[PeriodEnd], [l1].[PeriodStart] FROM ( SELECT [l].[Name] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] @@ -439,15 +439,15 @@ GROUP BY [l].[Name] HAVING [l].[Name] <> N'Foo' OR [l].[Name] IS NULL ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], [l0].[PeriodEnd], [l0].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] -LEFT JOIN [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t0].[Id] = [l1].[OneToMany_Optional_Inverse2Id] -ORDER BY [t].[Name], [t0].[Id] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] +LEFT JOIN [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t1].[Id] = [l1].[OneToMany_Optional_Inverse2Id] +ORDER BY [t].[Name], [t1].[Id] """); } @@ -460,17 +460,17 @@ public override async Task Select_subquery_single_nested_subquery2(bool async) SELECT [l].[Id], [t1].[Id], [t1].[Id0], [t1].[Id1], [t1].[c] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] LEFT JOIN ( - SELECT [l0].[Id], [t0].[Id] AS [Id0], [l1].[Id] AS [Id1], [t0].[c], [l0].[OneToMany_Optional_Inverse2Id] + SELECT [l0].[Id], [t0].[Id] AS [Id0], [l2].[Id] AS [Id1], [t0].[c], [l0].[OneToMany_Optional_Inverse2Id] FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] LEFT JOIN ( SELECT [t].[c], [t].[Id], [t].[OneToMany_Optional_Inverse3Id] FROM ( - SELECT 1 AS [c], [l2].[Id], [l2].[OneToMany_Optional_Inverse3Id], ROW_NUMBER() OVER(PARTITION BY [l2].[OneToMany_Optional_Inverse3Id] ORDER BY [l2].[Id]) AS [row] - FROM [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] + SELECT 1 AS [c], [l1].[Id], [l1].[OneToMany_Optional_Inverse3Id], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Optional_Inverse3Id] ORDER BY [l1].[Id]) AS [row] + FROM [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ) AS [t] WHERE [t].[row] <= 1 ) AS [t0] ON [l0].[Id] = [t0].[OneToMany_Optional_Inverse3Id] - LEFT JOIN [LevelFour] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t0].[Id] = [l1].[OneToMany_Optional_Inverse4Id] + LEFT JOIN [LevelFour] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] ON [t0].[Id] = [l2].[OneToMany_Optional_Inverse4Id] ) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] ORDER BY [l].[Id], [t1].[Id], [t1].[Id0], [t1].[Id1] """); @@ -534,25 +534,25 @@ public override async Task Filtered_include_Skip_Take_with_another_Skip_Take_on_ @__p_0='1' @__p_1='5' -SELECT [t].[Id], [t].[Date], [t].[Name], [t].[OneToMany_Optional_Self_Inverse1Id], [t].[OneToMany_Required_Self_Inverse1Id], [t].[OneToOne_Optional_Self1Id], [t].[PeriodEnd], [t].[PeriodStart], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t0].[PeriodEnd0], [t0].[PeriodStart0] +SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] FROM ( SELECT [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [l].[PeriodEnd], [l].[PeriodStart] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] ORDER BY [l].[Id] DESC OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id], [l0].[PeriodEnd] AS [PeriodEnd0], [l0].[PeriodStart] AS [PeriodStart0] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[PeriodEnd], [t].[PeriodStart], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l1].[PeriodEnd] AS [PeriodEnd0], [l1].[PeriodStart] AS [PeriodStart0] FROM ( - SELECT [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l1].[PeriodEnd], [l1].[PeriodStart] - FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Optional_Inverse2Id] - ORDER BY [l1].[Name] DESC + SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l0].[PeriodEnd], [l0].[PeriodStart] + FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] + WHERE [t0].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + ORDER BY [l0].[Name] DESC OFFSET 1 ROWS FETCH NEXT 4 ROWS ONLY - ) AS [t1] - LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] ON [t1].[Id] = [l0].[Level2_Optional_Id] -) AS [t0] -ORDER BY [t].[Id] DESC, [t0].[Name] DESC, [t0].[Id] + ) AS [t] + LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Id] = [l1].[Level2_Optional_Id] +) AS [t1] +ORDER BY [t0].[Id] DESC, [t1].[Name] DESC, [t1].[Id] """); } @@ -658,24 +658,24 @@ public override async Task Skip_Take_on_grouping_element_with_reference_include( AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Id0], [t0].[Date0], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[PeriodEnd0], [t0].[PeriodStart0] +SELECT [t0].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Date0], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] FROM ( SELECT [l].[Date] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Date] -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart], [l0].[Id] AS [Id0], [l0].[Date] AS [Date0], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l0].[PeriodEnd] AS [PeriodEnd0], [l0].[PeriodStart] AS [PeriodStart0] + SELECT [t].[Id], [t].[Date], [t].[Name], [t].[OneToMany_Optional_Self_Inverse1Id], [t].[OneToMany_Required_Self_Inverse1Id], [t].[OneToOne_Optional_Self1Id], [t].[PeriodEnd], [t].[PeriodStart], [l1].[Id] AS [Id0], [l1].[Date] AS [Date0], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l1].[PeriodEnd] AS [PeriodEnd0], [l1].[PeriodStart] AS [PeriodStart0] FROM ( - SELECT [l1].[Id], [l1].[Date], [l1].[Name], [l1].[OneToMany_Optional_Self_Inverse1Id], [l1].[OneToMany_Required_Self_Inverse1Id], [l1].[OneToOne_Optional_Self1Id], [l1].[PeriodEnd], [l1].[PeriodStart] - FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] - WHERE [t].[Date] = [l1].[Date] - ORDER BY [l1].[Name] + SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], [l0].[PeriodEnd], [l0].[PeriodStart] + FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] + WHERE [t0].[Date] = [l0].[Date] + ORDER BY [l0].[Name] OFFSET 1 ROWS FETCH NEXT 5 ROWS ONLY - ) AS [t1] - LEFT JOIN [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] ON [t1].[Id] = [l0].[Level1_Optional_Id] -) AS [t0] -ORDER BY [t].[Date], [t0].[Name], [t0].[Id] + ) AS [t] + LEFT JOIN [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Id] = [l1].[Level1_Optional_Id] +) AS [t1] +ORDER BY [t0].[Date], [t1].[Name], [t1].[Id] """); } @@ -685,24 +685,24 @@ public override async Task Skip_Take_on_grouping_element_with_collection_include AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Id0], [t0].[Date0], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[PeriodEnd0], [t0].[PeriodStart0] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Date0], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] FROM ( SELECT [l].[Date] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Date] ) AS [t] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart], [l0].[Id] AS [Id0], [l0].[Date] AS [Date0], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l0].[PeriodEnd] AS [PeriodEnd0], [l0].[PeriodStart] AS [PeriodStart0] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart], [l1].[Id] AS [Id0], [l1].[Date] AS [Date0], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l1].[PeriodEnd] AS [PeriodEnd0], [l1].[PeriodStart] AS [PeriodStart0] FROM ( - SELECT [l1].[Id], [l1].[Date], [l1].[Name], [l1].[OneToMany_Optional_Self_Inverse1Id], [l1].[OneToMany_Required_Self_Inverse1Id], [l1].[OneToOne_Optional_Self1Id], [l1].[PeriodEnd], [l1].[PeriodStart] - FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] - WHERE [t].[Date] = [l1].[Date] - ORDER BY [l1].[Name] + SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], [l0].[PeriodEnd], [l0].[PeriodStart] + FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] + WHERE [t].[Date] = [l0].[Date] + ORDER BY [l0].[Name] OFFSET 1 ROWS FETCH NEXT 5 ROWS ONLY - ) AS [t1] - LEFT JOIN [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] ON [t1].[Id] = [l0].[OneToMany_Optional_Inverse2Id] -) AS [t0] -ORDER BY [t].[Date], [t0].[Name], [t0].[Id] + ) AS [t0] + LEFT JOIN [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t0].[Id] = [l1].[OneToMany_Optional_Inverse2Id] +) AS [t1] +ORDER BY [t].[Date], [t1].[Name], [t1].[Id] """); } @@ -731,23 +731,23 @@ public override async Task Skip_Take_Distinct_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart] +SELECT [t0].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] FROM ( SELECT [l].[Date] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Date] -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT DISTINCT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT DISTINCT [t].[Id], [t].[Date], [t].[Name], [t].[OneToMany_Optional_Self_Inverse1Id], [t].[OneToMany_Required_Self_Inverse1Id], [t].[OneToOne_Optional_Self1Id], [t].[PeriodEnd], [t].[PeriodStart] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], [l0].[PeriodEnd], [l0].[PeriodStart] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - WHERE [t].[Date] = [l0].[Date] + WHERE [t0].[Date] = [l0].[Date] ORDER BY [l0].[Name] OFFSET 1 ROWS FETCH NEXT 5 ROWS ONLY - ) AS [t1] -) AS [t0] -ORDER BY [t].[Date] + ) AS [t] +) AS [t1] +ORDER BY [t0].[Date] """); } @@ -757,7 +757,7 @@ public override async Task Include_collection_with_groupby_in_subquery_and_filte AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t].[Name], [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l1].[PeriodEnd], [l1].[PeriodStart] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t].[Name], [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l1].[PeriodEnd], [l1].[PeriodStart] FROM ( SELECT [l].[Name] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] @@ -765,16 +765,16 @@ WHERE [l].[Id] > 3 GROUP BY [l].[Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], [l0].[PeriodEnd], [l0].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] WHERE [l0].[Id] > 3 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] -LEFT JOIN [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t0].[Id] = [l1].[OneToMany_Optional_Inverse2Id] -ORDER BY [t].[Name], [t0].[Id] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] +LEFT JOIN [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t1].[Id] = [l1].[OneToMany_Optional_Inverse2Id] +ORDER BY [t].[Name], [t1].[Id] """); } @@ -1054,23 +1054,23 @@ public override async Task Take_Select_collection_Take(bool async) """ @__p_0='1' -SELECT [t].[Id], [t].[Name], [t0].[Id], [t0].[Name], [t0].[Level1Id], [t0].[Level2Id], [t0].[Id0], [t0].[Date], [t0].[Name0], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart] +SELECT [t0].[Id], [t0].[Name], [t1].[Id], [t1].[Name], [t1].[Level1Id], [t1].[Level2Id], [t1].[Id0], [t1].[Date], [t1].[Name0], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] FROM ( SELECT TOP(@__p_0) [l].[Id], [l].[Name] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Name], [t1].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t1].[Level1_Required_Id] AS [Level2Id], [l0].[Id] AS [Id0], [l0].[Date], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], [l0].[PeriodEnd], [l0].[PeriodStart] + SELECT [t].[Id], [t].[Name], [t].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t].[Level1_Required_Id] AS [Level2Id], [l1].[Id] AS [Id0], [l1].[Date], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Self_Inverse1Id], [l1].[OneToMany_Required_Self_Inverse1Id], [l1].[OneToOne_Optional_Self1Id], [l1].[PeriodEnd], [l1].[PeriodStart] FROM ( - SELECT TOP(3) [l1].[Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Required_Inverse2Id] - FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Required_Inverse2Id] - ORDER BY [l1].[Id] - ) AS [t1] - INNER JOIN [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] ON [t1].[Level1_Required_Id] = [l0].[Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[Id] + SELECT TOP(3) [l0].[Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Required_Inverse2Id] + FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] + WHERE [t0].[Id] = [l0].[OneToMany_Required_Inverse2Id] + ORDER BY [l0].[Id] + ) AS [t] + INNER JOIN [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Level1_Required_Id] = [l1].[Id] +) AS [t1] +ORDER BY [t0].[Id], [t1].[Id] """); } @@ -1103,22 +1103,22 @@ public override async Task Include_collection_with_groupby_in_subquery(bool asyn AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t].[Name], [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l1].[PeriodEnd], [l1].[PeriodStart] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t].[Name], [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l1].[PeriodEnd], [l1].[PeriodStart] FROM ( SELECT [l].[Name] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], [l0].[PeriodEnd], [l0].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] -LEFT JOIN [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t0].[Id] = [l1].[OneToMany_Optional_Inverse2Id] -ORDER BY [t].[Name], [t0].[Id] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] +LEFT JOIN [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t1].[Id] = [l1].[OneToMany_Optional_Inverse2Id] +ORDER BY [t].[Name], [t1].[Id] """); } @@ -1162,7 +1162,7 @@ public override async Task Filtered_include_after_different_filtered_include_dif SELECT [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [l].[PeriodEnd], [l].[PeriodStart], [t2].[Id], [t2].[Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Optional_Self_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToMany_Required_Self_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[OneToOne_Optional_Self2Id], [t2].[PeriodEnd], [t2].[PeriodStart], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Name0], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Optional_Self_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToMany_Required_Self_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[OneToOne_Optional_Self3Id], [t2].[PeriodEnd0], [t2].[PeriodStart0] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] OUTER APPLY ( - SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[PeriodEnd], [t].[PeriodStart], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name] AS [Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[PeriodEnd], [t].[PeriodStart], [t1].[Id] AS [Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name] AS [Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id], [t1].[PeriodEnd] AS [PeriodEnd0], [t1].[PeriodStart] AS [PeriodStart0] FROM ( SELECT TOP(3) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l0].[PeriodEnd], [l0].[PeriodStart] FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] @@ -1170,14 +1170,14 @@ SELECT TOP(3) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Re ORDER BY [l0].[Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l1].[PeriodEnd], [l1].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Required_Inverse3Id] ORDER BY [l1].[Name] DESC) AS [row] FROM [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[Name] <> N'Bar' OR [l1].[Name] IS NULL - ) AS [t1] - WHERE 1 < [t1].[row] - ) AS [t0] ON [t].[Id] = [t0].[OneToMany_Required_Inverse3Id] + ) AS [t0] + WHERE 1 < [t0].[row] + ) AS [t1] ON [t].[Id] = [t1].[OneToMany_Required_Inverse3Id] ) AS [t2] ORDER BY [l].[Id], [t2].[Name], [t2].[Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[Name0] DESC """); @@ -1234,21 +1234,21 @@ public override async Task Skip_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] FROM ( SELECT [l].[Date] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], [l0].[PeriodEnd], [l0].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + ) AS [t0] + WHERE 1 < [t0].[row] +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -1432,19 +1432,19 @@ public override async Task Filtered_include_and_non_filtered_include_followed_by SELECT [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [l].[PeriodEnd], [l].[PeriodStart], [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id], [t1].[PeriodEnd0], [t1].[PeriodStart0], [t1].[Id1], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Name1], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Optional_Self_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToMany_Required_Self_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t1].[OneToOne_Optional_Self4Id], [t1].[PeriodEnd1], [t1].[PeriodStart1] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] OUTER APPLY ( - SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[PeriodEnd], [t].[PeriodStart], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id], [l0].[PeriodEnd] AS [PeriodEnd0], [l0].[PeriodStart] AS [PeriodStart0], [t0].[Id] AS [Id1], [t0].[Level3_Optional_Id], [t0].[Level3_Required_Id], [t0].[Name] AS [Name1], [t0].[OneToMany_Optional_Inverse4Id], [t0].[OneToMany_Optional_Self_Inverse4Id], [t0].[OneToMany_Required_Inverse4Id], [t0].[OneToMany_Required_Self_Inverse4Id], [t0].[OneToOne_Optional_PK_Inverse4Id], [t0].[OneToOne_Optional_Self4Id], [t0].[PeriodEnd] AS [PeriodEnd1], [t0].[PeriodStart] AS [PeriodStart1] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[PeriodEnd], [t].[PeriodStart], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l1].[PeriodEnd] AS [PeriodEnd0], [l1].[PeriodStart] AS [PeriodStart0], [t0].[Id] AS [Id1], [t0].[Level3_Optional_Id], [t0].[Level3_Required_Id], [t0].[Name] AS [Name1], [t0].[OneToMany_Optional_Inverse4Id], [t0].[OneToMany_Optional_Self_Inverse4Id], [t0].[OneToMany_Required_Inverse4Id], [t0].[OneToMany_Required_Self_Inverse4Id], [t0].[OneToOne_Optional_PK_Inverse4Id], [t0].[OneToOne_Optional_Self4Id], [t0].[PeriodEnd] AS [PeriodEnd1], [t0].[PeriodStart] AS [PeriodStart1] FROM ( - SELECT TOP(1) [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l1].[PeriodEnd], [l1].[PeriodStart] - FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] - WHERE [l].[Id] = [l1].[OneToMany_Optional_Inverse2Id] AND ([l1].[Name] <> N'Foo' OR [l1].[Name] IS NULL) - ORDER BY [l1].[Id] + SELECT TOP(1) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l0].[PeriodEnd], [l0].[PeriodStart] + FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] + WHERE [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] AND ([l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL) + ORDER BY [l0].[Id] ) AS [t] - LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] ON [t].[Id] = [l0].[OneToOne_Optional_PK_Inverse3Id] + LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Id] = [l1].[OneToOne_Optional_PK_Inverse3Id] LEFT JOIN ( SELECT [l2].[Id], [l2].[Level3_Optional_Id], [l2].[Level3_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse4Id], [l2].[OneToMany_Optional_Self_Inverse4Id], [l2].[OneToMany_Required_Inverse4Id], [l2].[OneToMany_Required_Self_Inverse4Id], [l2].[OneToOne_Optional_PK_Inverse4Id], [l2].[OneToOne_Optional_Self4Id], [l2].[PeriodEnd], [l2].[PeriodStart] FROM [LevelFour] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] WHERE [l2].[Id] > 1 - ) AS [t0] ON [l0].[Id] = [t0].[OneToMany_Optional_Inverse4Id] + ) AS [t0] ON [l1].[Id] = [t0].[OneToMany_Optional_Inverse4Id] ) AS [t1] ORDER BY [l].[Id], [t1].[Id], [t1].[Id0] """); @@ -1496,15 +1496,15 @@ LEFT JOIN ( SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l0].[PeriodEnd], [l0].[PeriodStart], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name] AS [Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0], [t0].[Id0] AS [Id00], [t0].[Level3_Optional_Id], [t0].[Level3_Required_Id], [t0].[Name0] AS [Name00], [t0].[OneToMany_Optional_Inverse4Id], [t0].[OneToMany_Optional_Self_Inverse4Id], [t0].[OneToMany_Required_Inverse4Id], [t0].[OneToMany_Required_Self_Inverse4Id], [t0].[OneToOne_Optional_PK_Inverse4Id], [t0].[OneToOne_Optional_Self4Id], [t0].[PeriodEnd0] AS [PeriodEnd00], [t0].[PeriodStart0] AS [PeriodStart00], [t0].[Id1], [t0].[Level3_Optional_Id0], [t0].[Level3_Required_Id0], [t0].[Name1], [t0].[OneToMany_Optional_Inverse4Id0], [t0].[OneToMany_Optional_Self_Inverse4Id0], [t0].[OneToMany_Required_Inverse4Id0], [t0].[OneToMany_Required_Self_Inverse4Id0], [t0].[OneToOne_Optional_PK_Inverse4Id0], [t0].[OneToOne_Optional_Self4Id0], [t0].[PeriodEnd1], [t0].[PeriodStart1] FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] OUTER APPLY ( - SELECT [t].[Id], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Optional_Self_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToMany_Required_Self_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[OneToOne_Optional_Self3Id], [t].[PeriodEnd], [t].[PeriodStart], [l1].[Id] AS [Id0], [l1].[Level3_Optional_Id], [l1].[Level3_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse4Id], [l1].[OneToMany_Optional_Self_Inverse4Id], [l1].[OneToMany_Required_Inverse4Id], [l1].[OneToMany_Required_Self_Inverse4Id], [l1].[OneToOne_Optional_PK_Inverse4Id], [l1].[OneToOne_Optional_Self4Id], [l1].[PeriodEnd] AS [PeriodEnd0], [l1].[PeriodStart] AS [PeriodStart0], [l2].[Id] AS [Id1], [l2].[Level3_Optional_Id] AS [Level3_Optional_Id0], [l2].[Level3_Required_Id] AS [Level3_Required_Id0], [l2].[Name] AS [Name1], [l2].[OneToMany_Optional_Inverse4Id] AS [OneToMany_Optional_Inverse4Id0], [l2].[OneToMany_Optional_Self_Inverse4Id] AS [OneToMany_Optional_Self_Inverse4Id0], [l2].[OneToMany_Required_Inverse4Id] AS [OneToMany_Required_Inverse4Id0], [l2].[OneToMany_Required_Self_Inverse4Id] AS [OneToMany_Required_Self_Inverse4Id0], [l2].[OneToOne_Optional_PK_Inverse4Id] AS [OneToOne_Optional_PK_Inverse4Id0], [l2].[OneToOne_Optional_Self4Id] AS [OneToOne_Optional_Self4Id0], [l2].[PeriodEnd] AS [PeriodEnd1], [l2].[PeriodStart] AS [PeriodStart1] + SELECT [t].[Id], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Optional_Self_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToMany_Required_Self_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[OneToOne_Optional_Self3Id], [t].[PeriodEnd], [t].[PeriodStart], [l2].[Id] AS [Id0], [l2].[Level3_Optional_Id], [l2].[Level3_Required_Id], [l2].[Name] AS [Name0], [l2].[OneToMany_Optional_Inverse4Id], [l2].[OneToMany_Optional_Self_Inverse4Id], [l2].[OneToMany_Required_Inverse4Id], [l2].[OneToMany_Required_Self_Inverse4Id], [l2].[OneToOne_Optional_PK_Inverse4Id], [l2].[OneToOne_Optional_Self4Id], [l2].[PeriodEnd] AS [PeriodEnd0], [l2].[PeriodStart] AS [PeriodStart0], [l3].[Id] AS [Id1], [l3].[Level3_Optional_Id] AS [Level3_Optional_Id0], [l3].[Level3_Required_Id] AS [Level3_Required_Id0], [l3].[Name] AS [Name1], [l3].[OneToMany_Optional_Inverse4Id] AS [OneToMany_Optional_Inverse4Id0], [l3].[OneToMany_Optional_Self_Inverse4Id] AS [OneToMany_Optional_Self_Inverse4Id0], [l3].[OneToMany_Required_Inverse4Id] AS [OneToMany_Required_Inverse4Id0], [l3].[OneToMany_Required_Self_Inverse4Id] AS [OneToMany_Required_Self_Inverse4Id0], [l3].[OneToOne_Optional_PK_Inverse4Id] AS [OneToOne_Optional_PK_Inverse4Id0], [l3].[OneToOne_Optional_Self4Id] AS [OneToOne_Optional_Self4Id0], [l3].[PeriodEnd] AS [PeriodEnd1], [l3].[PeriodStart] AS [PeriodStart1] FROM ( - SELECT TOP(1) [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Optional_Self_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToMany_Required_Self_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[OneToOne_Optional_Self3Id], [l3].[PeriodEnd], [l3].[PeriodStart] - FROM [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l3] - WHERE [l0].[Id] = [l3].[OneToMany_Optional_Inverse3Id] AND ([l3].[Name] <> N'Foo' OR [l3].[Name] IS NULL) - ORDER BY [l3].[Id] + SELECT TOP(1) [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l1].[PeriodEnd], [l1].[PeriodStart] + FROM [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] + WHERE [l0].[Id] = [l1].[OneToMany_Optional_Inverse3Id] AND ([l1].[Name] <> N'Foo' OR [l1].[Name] IS NULL) + ORDER BY [l1].[Id] ) AS [t] - LEFT JOIN [LevelFour] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Id] = [l1].[OneToMany_Optional_Inverse4Id] - LEFT JOIN [LevelFour] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] ON [t].[Id] = [l2].[OneToMany_Required_Inverse4Id] + LEFT JOIN [LevelFour] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] ON [t].[Id] = [l2].[OneToMany_Optional_Inverse4Id] + LEFT JOIN [LevelFour] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l3] ON [t].[Id] = [l3].[OneToMany_Required_Inverse4Id] ) AS [t0] ) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] ORDER BY [l].[Id], [t1].[Id], [t1].[Id0], [t1].[Id00] @@ -1555,23 +1555,23 @@ public override async Task Filtered_include_Take_with_another_Take_on_top_level( """ @__p_0='5' -SELECT [t].[Id], [t].[Date], [t].[Name], [t].[OneToMany_Optional_Self_Inverse1Id], [t].[OneToMany_Required_Self_Inverse1Id], [t].[OneToOne_Optional_Self1Id], [t].[PeriodEnd], [t].[PeriodStart], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t0].[PeriodEnd0], [t0].[PeriodStart0] +SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] FROM ( SELECT TOP(@__p_0) [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [l].[PeriodEnd], [l].[PeriodStart] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id], [l0].[PeriodEnd] AS [PeriodEnd0], [l0].[PeriodStart] AS [PeriodStart0] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[PeriodEnd], [t].[PeriodStart], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l1].[PeriodEnd] AS [PeriodEnd0], [l1].[PeriodStart] AS [PeriodStart0] FROM ( - SELECT TOP(4) [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l1].[PeriodEnd], [l1].[PeriodStart] - FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Optional_Inverse2Id] - ORDER BY [l1].[Name] DESC - ) AS [t1] - LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] ON [t1].[Id] = [l0].[Level2_Optional_Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[Name] DESC, [t0].[Id] + SELECT TOP(4) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l0].[PeriodEnd], [l0].[PeriodStart] + FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] + WHERE [t0].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + ORDER BY [l0].[Name] DESC + ) AS [t] + LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Id] = [l1].[Level2_Optional_Id] +) AS [t1] +ORDER BY [t0].[Id], [t1].[Name] DESC, [t1].[Id] """); } @@ -1712,21 +1712,21 @@ public override async Task Lift_projection_mapping_when_pushing_down_subquery(bo """ @__p_0='25' -SELECT [t].[Id], [t0].[Id], [l1].[Id], [t0].[c] +SELECT [t].[Id], [t1].[Id], [l1].[Id], [t1].[c] FROM ( SELECT TOP(@__p_0) [l].[Id] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[c], [t1].[OneToMany_Required_Inverse2Id] + SELECT [t0].[Id], [t0].[c], [t0].[OneToMany_Required_Inverse2Id] FROM ( SELECT [l0].[Id], 1 AS [c], [l0].[OneToMany_Required_Inverse2Id], ROW_NUMBER() OVER(PARTITION BY [l0].[OneToMany_Required_Inverse2Id] ORDER BY [l0].[Id]) AS [row] FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Id] = [t0].[OneToMany_Required_Inverse2Id] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Id] = [t1].[OneToMany_Required_Inverse2Id] LEFT JOIN [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Id] = [l1].[OneToMany_Required_Inverse2Id] -ORDER BY [t].[Id], [t0].[Id] +ORDER BY [t].[Id], [t1].[Id] """); } @@ -1786,7 +1786,7 @@ public override async Task Complex_query_issue_21665(bool async) AssertSql( """ -SELECT [t].[Id], [t].[Date], [t].[Name], [t].[OneToMany_Optional_Self_Inverse1Id], [t].[OneToMany_Required_Self_Inverse1Id], [t].[OneToOne_Optional_Self1Id], [t].[PeriodEnd], [t].[PeriodStart], [t].[Name0], [t].[c], [t].[c0], [t].[c1], [t].[Id0], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[ChildCount], [t0].[Level2Name], [t0].[Level2Count], [t0].[IsLevel2There], [t0].[Id0] +SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Name0], [t0].[c], [t0].[c0], [t0].[c1], [t0].[Id0], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[ChildCount], [t1].[Level2Name], [t1].[Level2Count], [t1].[IsLevel2There], [t1].[Id0] FROM ( SELECT TOP(1) [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [l].[PeriodEnd], [l].[PeriodStart], [l0].[Name] AS [Name0], ( SELECT COUNT(*) @@ -1805,31 +1805,31 @@ ELSE CAST(0 AS bit) LEFT JOIN [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] ON [l].[Id] = [l0].[Level1_Optional_Id] WHERE [l].[Id] = 2 ORDER BY [l].[Name] -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart], ( + SELECT [t].[Id], [t].[Date], [t].[Name], [t].[OneToMany_Optional_Self_Inverse1Id], [t].[OneToMany_Required_Self_Inverse1Id], [t].[OneToOne_Optional_Self1Id], [t].[PeriodEnd], [t].[PeriodStart], ( SELECT COUNT(*) - FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l5] - WHERE [t1].[Id] = [l5].[OneToMany_Optional_Self_Inverse1Id]) AS [ChildCount], [l4].[Name] AS [Level2Name], ( + FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l6] + WHERE [t].[Id] = [l6].[OneToMany_Optional_Self_Inverse1Id]) AS [ChildCount], [l5].[Name] AS [Level2Name], ( SELECT COUNT(*) - FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l6] - WHERE [t1].[Id] = [l6].[OneToMany_Optional_Inverse2Id]) AS [Level2Count], CASE + FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l7] + WHERE [t].[Id] = [l7].[OneToMany_Optional_Inverse2Id]) AS [Level2Count], CASE WHEN EXISTS ( SELECT 1 - FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l7] - WHERE [t1].[Id] = [l7].[OneToMany_Optional_Inverse2Id] AND [l7].[Id] = 2) THEN CAST(1 AS bit) + FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l8] + WHERE [t].[Id] = [l8].[OneToMany_Optional_Inverse2Id] AND [l8].[Id] = 2) THEN CAST(1 AS bit) ELSE CAST(0 AS bit) - END AS [IsLevel2There], [l4].[Id] AS [Id0] + END AS [IsLevel2There], [l5].[Id] AS [Id0] FROM ( - SELECT [l8].[Id], [l8].[Date], [l8].[Name], [l8].[OneToMany_Optional_Self_Inverse1Id], [l8].[OneToMany_Required_Self_Inverse1Id], [l8].[OneToOne_Optional_Self1Id], [l8].[PeriodEnd], [l8].[PeriodStart] - FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l8] - WHERE [t].[Id] = [l8].[OneToMany_Optional_Self_Inverse1Id] - ORDER BY [l8].[Name] + SELECT [l4].[Id], [l4].[Date], [l4].[Name], [l4].[OneToMany_Optional_Self_Inverse1Id], [l4].[OneToMany_Required_Self_Inverse1Id], [l4].[OneToOne_Optional_Self1Id], [l4].[PeriodEnd], [l4].[PeriodStart] + FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l4] + WHERE [t0].[Id] = [l4].[OneToMany_Optional_Self_Inverse1Id] + ORDER BY [l4].[Name] OFFSET 1 ROWS FETCH NEXT 5 ROWS ONLY - ) AS [t1] - LEFT JOIN [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l4] ON [t1].[Id] = [l4].[Level1_Optional_Id] -) AS [t0] -ORDER BY [t].[Name], [t].[Id], [t].[Id0], [t0].[Name], [t0].[Id] + ) AS [t] + LEFT JOIN [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l5] ON [t].[Id] = [l5].[Level1_Optional_Id] +) AS [t1] +ORDER BY [t0].[Name], [t0].[Id], [t0].[Id0], [t1].[Name], [t1].[Id] """); } @@ -1972,22 +1972,22 @@ public override async Task Filtered_include_with_Take_without_order_by_followed_ """ @__p_0='30' -SELECT [t].[Id], [t].[Date], [t].[Name], [t].[OneToMany_Optional_Self_Inverse1Id], [t].[OneToMany_Required_Self_Inverse1Id], [t].[OneToOne_Optional_Self1Id], [t].[PeriodEnd], [t].[PeriodStart], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t0].[PeriodEnd0], [t0].[PeriodStart0] +SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] FROM ( SELECT TOP(@__p_0) [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [l].[PeriodEnd], [l].[PeriodStart] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [l0].[Id] AS [Id0], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Inverse3Id], [l0].[OneToMany_Optional_Self_Inverse3Id], [l0].[OneToMany_Required_Inverse3Id], [l0].[OneToMany_Required_Self_Inverse3Id], [l0].[OneToOne_Optional_PK_Inverse3Id], [l0].[OneToOne_Optional_Self3Id], [l0].[PeriodEnd] AS [PeriodEnd0], [l0].[PeriodStart] AS [PeriodStart0] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[PeriodEnd], [t].[PeriodStart], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l1].[PeriodEnd] AS [PeriodEnd0], [l1].[PeriodStart] AS [PeriodStart0] FROM ( - SELECT TOP(40) [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l1].[PeriodEnd], [l1].[PeriodStart] - FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Optional_Inverse2Id] - ) AS [t1] - LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] ON [t1].[Id] = [l0].[Level2_Optional_Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[Id] + SELECT TOP(40) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l0].[PeriodEnd], [l0].[PeriodStart] + FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] + WHERE [t0].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + ) AS [t] + LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Id] = [l1].[Level2_Optional_Id] +) AS [t1] +ORDER BY [t0].[Id], [t1].[Id] """); } @@ -2121,21 +2121,21 @@ public override async Task Take_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] FROM ( SELECT [l].[Date] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], [l0].[PeriodEnd], [l0].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name] DESC) AS [row] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 10 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] DESC + ) AS [t0] + WHERE [t0].[row] <= 10 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] DESC """); } @@ -2217,7 +2217,7 @@ public override async Task Filtered_include_after_different_filtered_include_sam AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [l].[PeriodEnd], [l].[PeriodStart], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[PeriodEnd], [t1].[PeriodStart] +SELECT [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [l].[PeriodEnd], [l].[PeriodStart], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t2].[Id], [t2].[Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Optional_Self_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToMany_Required_Self_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[OneToOne_Optional_Self2Id], [t2].[PeriodEnd], [t2].[PeriodStart] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] LEFT JOIN ( SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[PeriodEnd], [t].[PeriodStart] @@ -2229,15 +2229,15 @@ WHERE [l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL WHERE [t].[row] <= 3 ) AS [t0] ON [l].[Id] = [t0].[OneToMany_Optional_Inverse2Id] LEFT JOIN ( - SELECT [t2].[Id], [t2].[Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Optional_Self_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToMany_Required_Self_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[OneToOne_Optional_Self2Id], [t2].[PeriodEnd], [t2].[PeriodStart] + SELECT [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[PeriodEnd], [t1].[PeriodStart] FROM ( SELECT [l1].[Id], [l1].[Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Optional_Self_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToMany_Required_Self_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[OneToOne_Optional_Self2Id], [l1].[PeriodEnd], [l1].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Required_Inverse2Id] ORDER BY [l1].[Name] DESC) AS [row] FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[Name] <> N'Bar' OR [l1].[Name] IS NULL - ) AS [t2] - WHERE 1 < [t2].[row] -) AS [t1] ON [l].[Id] = [t1].[OneToMany_Required_Inverse2Id] -ORDER BY [l].[Id], [t0].[OneToMany_Optional_Inverse2Id], [t0].[Name], [t0].[Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[Name] DESC + ) AS [t1] + WHERE 1 < [t1].[row] +) AS [t2] ON [l].[Id] = [t2].[OneToMany_Required_Inverse2Id] +ORDER BY [l].[Id], [t0].[OneToMany_Optional_Inverse2Id], [t0].[Name], [t0].[Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[Name] DESC """); } @@ -2247,21 +2247,21 @@ public override async Task Skip_Take_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] FROM ( SELECT [l].[Date] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], [l0].[PeriodEnd], [l0].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -2274,7 +2274,7 @@ public override async Task Skip_Take_on_grouping_element_inside_collection_proje SELECT [l].[Id], [t2].[Date], [t2].[Id], [t2].[Date0], [t2].[Name], [t2].[OneToMany_Optional_Self_Inverse1Id], [t2].[OneToMany_Required_Self_Inverse1Id], [t2].[OneToOne_Optional_Self1Id], [t2].[PeriodEnd], [t2].[PeriodStart] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] OUTER APPLY ( - SELECT [t].[Date], [t0].[Id], [t0].[Date] AS [Date0], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart] + SELECT [t].[Date], [t1].[Id], [t1].[Date] AS [Date0], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] FROM ( SELECT [l0].[Date] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] @@ -2282,14 +2282,14 @@ SELECT [l0].[Date] GROUP BY [l0].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l1].[Id], [l1].[Date], [l1].[Name], [l1].[OneToMany_Optional_Self_Inverse1Id], [l1].[OneToMany_Required_Self_Inverse1Id], [l1].[OneToOne_Optional_Self1Id], [l1].[PeriodEnd], [l1].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l1].[Date] ORDER BY [l1].[Name]) AS [row] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[Name] = [l].[Name] OR ([l1].[Name] IS NULL AND [l].[Name] IS NULL) - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 - ) AS [t0] ON [t].[Date] = [t0].[Date] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 + ) AS [t1] ON [t].[Date] = [t1].[Date] ) AS [t2] ORDER BY [l].[Id], [t2].[Date], [t2].[Date0], [t2].[Name] """); @@ -2414,25 +2414,25 @@ public override async Task Skip_Take_Select_collection_Skip_Take(bool async) """ @__p_0='1' -SELECT [t].[Id], [t].[Name], [t0].[Id], [t0].[Name], [t0].[Level1Id], [t0].[Level2Id], [t0].[Id0], [t0].[Date], [t0].[Name0], [t0].[OneToMany_Optional_Self_Inverse1Id], [t0].[OneToMany_Required_Self_Inverse1Id], [t0].[OneToOne_Optional_Self1Id], [t0].[PeriodEnd], [t0].[PeriodStart] +SELECT [t0].[Id], [t0].[Name], [t1].[Id], [t1].[Name], [t1].[Level1Id], [t1].[Level2Id], [t1].[Id0], [t1].[Date], [t1].[Name0], [t1].[OneToMany_Optional_Self_Inverse1Id], [t1].[OneToMany_Required_Self_Inverse1Id], [t1].[OneToOne_Optional_Self1Id], [t1].[PeriodEnd], [t1].[PeriodStart] FROM ( SELECT [l].[Id], [l].[Name] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] ORDER BY [l].[Id] OFFSET @__p_0 ROWS FETCH NEXT @__p_0 ROWS ONLY -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT [t1].[Id], [t1].[Name], [t1].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t1].[Level1_Required_Id] AS [Level2Id], [l0].[Id] AS [Id0], [l0].[Date], [l0].[Name] AS [Name0], [l0].[OneToMany_Optional_Self_Inverse1Id], [l0].[OneToMany_Required_Self_Inverse1Id], [l0].[OneToOne_Optional_Self1Id], [l0].[PeriodEnd], [l0].[PeriodStart] + SELECT [t].[Id], [t].[Name], [t].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t].[Level1_Required_Id] AS [Level2Id], [l1].[Id] AS [Id0], [l1].[Date], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Self_Inverse1Id], [l1].[OneToMany_Required_Self_Inverse1Id], [l1].[OneToOne_Optional_Self1Id], [l1].[PeriodEnd], [l1].[PeriodStart] FROM ( - SELECT [l1].[Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Required_Inverse2Id] - FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] - WHERE [t].[Id] = [l1].[OneToMany_Required_Inverse2Id] - ORDER BY [l1].[Id] + SELECT [l0].[Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Required_Inverse2Id] + FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] + WHERE [t0].[Id] = [l0].[OneToMany_Required_Inverse2Id] + ORDER BY [l0].[Id] OFFSET 1 ROWS FETCH NEXT 3 ROWS ONLY - ) AS [t1] - INNER JOIN [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] ON [t1].[Level1_Required_Id] = [l0].[Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[Id] + ) AS [t] + INNER JOIN [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Level1_Required_Id] = [l1].[Id] +) AS [t1] +ORDER BY [t0].[Id], [t1].[Id] """); } @@ -2492,7 +2492,7 @@ public override async Task Filtered_include_outer_parameter_used_inside_filter(b AssertSql( """ -SELECT [l].[Id], [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[PeriodEnd], [t].[PeriodStart], [t].[Id0], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Name0], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Optional_Self_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToMany_Required_Self_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[OneToOne_Optional_Self3Id], [t].[PeriodEnd0], [t].[PeriodStart0], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t0].[PeriodEnd0], [t0].[PeriodStart0] +SELECT [l].[Id], [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[PeriodEnd], [t].[PeriodStart], [t].[Id0], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Name0], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Optional_Self_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToMany_Required_Self_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[OneToOne_Optional_Self3Id], [t].[PeriodEnd0], [t].[PeriodStart0], [t1].[Id], [t1].[Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Optional_Self_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToMany_Required_Self_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[OneToOne_Optional_Self2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] OUTER APPLY ( SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l0].[PeriodEnd], [l0].[PeriodStart], [l1].[Id] AS [Id0], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l1].[PeriodEnd] AS [PeriodEnd0], [l1].[PeriodStart] AS [PeriodStart0] @@ -2500,15 +2500,15 @@ OUTER APPLY ( LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [l0].[Id] = [l1].[OneToMany_Optional_Inverse3Id] ) AS [t] OUTER APPLY ( - SELECT [l2].[Id], [l2].[Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Optional_Self_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToMany_Required_Self_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[OneToOne_Optional_Self2Id], [l2].[PeriodEnd], [l2].[PeriodStart], [t1].[Id] AS [Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Name] AS [Name0], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Optional_Self_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToMany_Required_Self_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[OneToOne_Optional_Self3Id], [t1].[PeriodEnd] AS [PeriodEnd0], [t1].[PeriodStart] AS [PeriodStart0] + SELECT [l2].[Id], [l2].[Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Optional_Self_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToMany_Required_Self_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[OneToOne_Optional_Self2Id], [l2].[PeriodEnd], [l2].[PeriodStart], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name] AS [Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0] FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Optional_Self_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToMany_Required_Self_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[OneToOne_Optional_Self3Id], [l3].[PeriodEnd], [l3].[PeriodStart] FROM [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l3] WHERE [l3].[Id] <> [l].[Id] - ) AS [t1] ON [l2].[Id] = [t1].[OneToMany_Optional_Inverse3Id] -) AS [t0] -ORDER BY [l].[Id], [t].[Id], [t].[Id0], [t0].[Id] + ) AS [t0] ON [l2].[Id] = [t0].[OneToMany_Optional_Inverse3Id] +) AS [t1] +ORDER BY [l].[Id], [t].[Id], [t].[Id0], [t1].[Id] """); } @@ -2523,15 +2523,15 @@ await base SELECT [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [l].[PeriodEnd], [l].[PeriodStart], [t0].[Id], [t0].[Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Optional_Self_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToMany_Required_Self_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[OneToOne_Optional_Self2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Id0], [t0].[Id1], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t0].[PeriodEnd0], [t0].[PeriodStart0], [t0].[Level2_Optional_Id0], [t0].[Level2_Required_Id0], [t0].[Name1], [t0].[OneToMany_Optional_Inverse3Id0], [t0].[OneToMany_Optional_Self_Inverse3Id0], [t0].[OneToMany_Required_Inverse3Id0], [t0].[OneToMany_Required_Self_Inverse3Id0], [t0].[OneToOne_Optional_PK_Inverse3Id0], [t0].[OneToOne_Optional_Self3Id0], [t0].[PeriodEnd1], [t0].[PeriodStart1] FROM [LevelOne] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] OUTER APPLY ( - SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[PeriodEnd], [t].[PeriodStart], [l0].[Id] AS [Id0], [l1].[Id] AS [Id1], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l1].[PeriodEnd] AS [PeriodEnd0], [l1].[PeriodStart] AS [PeriodStart0], [l0].[Level2_Optional_Id] AS [Level2_Optional_Id0], [l0].[Level2_Required_Id] AS [Level2_Required_Id0], [l0].[Name] AS [Name1], [l0].[OneToMany_Optional_Inverse3Id] AS [OneToMany_Optional_Inverse3Id0], [l0].[OneToMany_Optional_Self_Inverse3Id] AS [OneToMany_Optional_Self_Inverse3Id0], [l0].[OneToMany_Required_Inverse3Id] AS [OneToMany_Required_Inverse3Id0], [l0].[OneToMany_Required_Self_Inverse3Id] AS [OneToMany_Required_Self_Inverse3Id0], [l0].[OneToOne_Optional_PK_Inverse3Id] AS [OneToOne_Optional_PK_Inverse3Id0], [l0].[OneToOne_Optional_Self3Id] AS [OneToOne_Optional_Self3Id0], [l0].[PeriodEnd] AS [PeriodEnd1], [l0].[PeriodStart] AS [PeriodStart1] + SELECT [t].[Id], [t].[Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Optional_Self_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToMany_Required_Self_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[OneToOne_Optional_Self2Id], [t].[PeriodEnd], [t].[PeriodStart], [l1].[Id] AS [Id0], [l2].[Id] AS [Id1], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name] AS [Name0], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Optional_Self_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToMany_Required_Self_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[OneToOne_Optional_Self3Id], [l2].[PeriodEnd] AS [PeriodEnd0], [l2].[PeriodStart] AS [PeriodStart0], [l1].[Level2_Optional_Id] AS [Level2_Optional_Id0], [l1].[Level2_Required_Id] AS [Level2_Required_Id0], [l1].[Name] AS [Name1], [l1].[OneToMany_Optional_Inverse3Id] AS [OneToMany_Optional_Inverse3Id0], [l1].[OneToMany_Optional_Self_Inverse3Id] AS [OneToMany_Optional_Self_Inverse3Id0], [l1].[OneToMany_Required_Inverse3Id] AS [OneToMany_Required_Inverse3Id0], [l1].[OneToMany_Required_Self_Inverse3Id] AS [OneToMany_Required_Self_Inverse3Id0], [l1].[OneToOne_Optional_PK_Inverse3Id] AS [OneToOne_Optional_PK_Inverse3Id0], [l1].[OneToOne_Optional_Self3Id] AS [OneToOne_Optional_Self3Id0], [l1].[PeriodEnd] AS [PeriodEnd1], [l1].[PeriodStart] AS [PeriodStart1] FROM ( - SELECT TOP(2) [l2].[Id], [l2].[Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Optional_Self_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToMany_Required_Self_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[OneToOne_Optional_Self2Id], [l2].[PeriodEnd], [l2].[PeriodStart] - FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] - WHERE [l].[Id] = [l2].[OneToMany_Optional_Inverse2Id] AND ([l2].[Name] <> N'Foo' OR [l2].[Name] IS NULL) - ORDER BY [l2].[Id] + SELECT TOP(2) [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l0].[PeriodEnd], [l0].[PeriodStart] + FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] + WHERE [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] AND ([l0].[Name] <> N'Foo' OR [l0].[Name] IS NULL) + ORDER BY [l0].[Id] ) AS [t] - LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] ON [t].[Id] = [l0].[Level2_Required_Id] - LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Id] = [l1].[OneToMany_Optional_Inverse3Id] + LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Id] = [l1].[Level2_Required_Id] + LEFT JOIN [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] ON [t].[Id] = [l2].[OneToMany_Optional_Inverse3Id] ) AS [t0] ORDER BY [l].[Id], [t0].[Id], [t0].[Id0] """); @@ -2647,15 +2647,15 @@ LEFT JOIN ( SELECT [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id], [l0].[PeriodEnd], [l0].[PeriodStart], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Name] AS [Name0], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Optional_Self_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToMany_Required_Self_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[OneToOne_Optional_Self3Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0], [t0].[Id0] AS [Id00], [t0].[Level3_Optional_Id], [t0].[Level3_Required_Id], [t0].[Name0] AS [Name00], [t0].[OneToMany_Optional_Inverse4Id], [t0].[OneToMany_Optional_Self_Inverse4Id], [t0].[OneToMany_Required_Inverse4Id], [t0].[OneToMany_Required_Self_Inverse4Id], [t0].[OneToOne_Optional_PK_Inverse4Id], [t0].[OneToOne_Optional_Self4Id], [t0].[PeriodEnd0] AS [PeriodEnd00], [t0].[PeriodStart0] AS [PeriodStart00], [t0].[Id1], [t0].[Level3_Optional_Id0], [t0].[Level3_Required_Id0], [t0].[Name1], [t0].[OneToMany_Optional_Inverse4Id0], [t0].[OneToMany_Optional_Self_Inverse4Id0], [t0].[OneToMany_Required_Inverse4Id0], [t0].[OneToMany_Required_Self_Inverse4Id0], [t0].[OneToOne_Optional_PK_Inverse4Id0], [t0].[OneToOne_Optional_Self4Id0], [t0].[PeriodEnd1], [t0].[PeriodStart1] FROM [LevelTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] OUTER APPLY ( - SELECT [t].[Id], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Optional_Self_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToMany_Required_Self_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[OneToOne_Optional_Self3Id], [t].[PeriodEnd], [t].[PeriodStart], [l1].[Id] AS [Id0], [l1].[Level3_Optional_Id], [l1].[Level3_Required_Id], [l1].[Name] AS [Name0], [l1].[OneToMany_Optional_Inverse4Id], [l1].[OneToMany_Optional_Self_Inverse4Id], [l1].[OneToMany_Required_Inverse4Id], [l1].[OneToMany_Required_Self_Inverse4Id], [l1].[OneToOne_Optional_PK_Inverse4Id], [l1].[OneToOne_Optional_Self4Id], [l1].[PeriodEnd] AS [PeriodEnd0], [l1].[PeriodStart] AS [PeriodStart0], [l2].[Id] AS [Id1], [l2].[Level3_Optional_Id] AS [Level3_Optional_Id0], [l2].[Level3_Required_Id] AS [Level3_Required_Id0], [l2].[Name] AS [Name1], [l2].[OneToMany_Optional_Inverse4Id] AS [OneToMany_Optional_Inverse4Id0], [l2].[OneToMany_Optional_Self_Inverse4Id] AS [OneToMany_Optional_Self_Inverse4Id0], [l2].[OneToMany_Required_Inverse4Id] AS [OneToMany_Required_Inverse4Id0], [l2].[OneToMany_Required_Self_Inverse4Id] AS [OneToMany_Required_Self_Inverse4Id0], [l2].[OneToOne_Optional_PK_Inverse4Id] AS [OneToOne_Optional_PK_Inverse4Id0], [l2].[OneToOne_Optional_Self4Id] AS [OneToOne_Optional_Self4Id0], [l2].[PeriodEnd] AS [PeriodEnd1], [l2].[PeriodStart] AS [PeriodStart1] + SELECT [t].[Id], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Name], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Optional_Self_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToMany_Required_Self_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[OneToOne_Optional_Self3Id], [t].[PeriodEnd], [t].[PeriodStart], [l2].[Id] AS [Id0], [l2].[Level3_Optional_Id], [l2].[Level3_Required_Id], [l2].[Name] AS [Name0], [l2].[OneToMany_Optional_Inverse4Id], [l2].[OneToMany_Optional_Self_Inverse4Id], [l2].[OneToMany_Required_Inverse4Id], [l2].[OneToMany_Required_Self_Inverse4Id], [l2].[OneToOne_Optional_PK_Inverse4Id], [l2].[OneToOne_Optional_Self4Id], [l2].[PeriodEnd] AS [PeriodEnd0], [l2].[PeriodStart] AS [PeriodStart0], [l3].[Id] AS [Id1], [l3].[Level3_Optional_Id] AS [Level3_Optional_Id0], [l3].[Level3_Required_Id] AS [Level3_Required_Id0], [l3].[Name] AS [Name1], [l3].[OneToMany_Optional_Inverse4Id] AS [OneToMany_Optional_Inverse4Id0], [l3].[OneToMany_Optional_Self_Inverse4Id] AS [OneToMany_Optional_Self_Inverse4Id0], [l3].[OneToMany_Required_Inverse4Id] AS [OneToMany_Required_Inverse4Id0], [l3].[OneToMany_Required_Self_Inverse4Id] AS [OneToMany_Required_Self_Inverse4Id0], [l3].[OneToOne_Optional_PK_Inverse4Id] AS [OneToOne_Optional_PK_Inverse4Id0], [l3].[OneToOne_Optional_Self4Id] AS [OneToOne_Optional_Self4Id0], [l3].[PeriodEnd] AS [PeriodEnd1], [l3].[PeriodStart] AS [PeriodStart1] FROM ( - SELECT TOP(1) [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Optional_Self_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToMany_Required_Self_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[OneToOne_Optional_Self3Id], [l3].[PeriodEnd], [l3].[PeriodStart] - FROM [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l3] - WHERE [l0].[Id] = [l3].[OneToMany_Optional_Inverse3Id] AND ([l3].[Name] <> N'Foo' OR [l3].[Name] IS NULL) - ORDER BY [l3].[Id] + SELECT TOP(1) [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Optional_Self_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToMany_Required_Self_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[OneToOne_Optional_Self3Id], [l1].[PeriodEnd], [l1].[PeriodStart] + FROM [LevelThree] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] + WHERE [l0].[Id] = [l1].[OneToMany_Optional_Inverse3Id] AND ([l1].[Name] <> N'Foo' OR [l1].[Name] IS NULL) + ORDER BY [l1].[Id] ) AS [t] - LEFT JOIN [LevelFour] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Id] = [l1].[OneToMany_Optional_Inverse4Id] - LEFT JOIN [LevelFour] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] ON [t].[Id] = [l2].[OneToMany_Required_Inverse4Id] + LEFT JOIN [LevelFour] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] ON [t].[Id] = [l2].[OneToMany_Optional_Inverse4Id] + LEFT JOIN [LevelFour] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l3] ON [t].[Id] = [l3].[OneToMany_Required_Inverse4Id] ) AS [t0] ) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] ORDER BY [l].[Id], [t1].[Id], [t1].[Id0], [t1].[Id00] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalComplexNavigationsCollectionsSharedTypeQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalComplexNavigationsCollectionsSharedTypeQuerySqlServerTest.cs index 171729be129..95d3934a844 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalComplexNavigationsCollectionsSharedTypeQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalComplexNavigationsCollectionsSharedTypeQuerySqlServerTest.cs @@ -229,7 +229,7 @@ public override async Task Filtered_include_after_different_filtered_include_dif SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd0], [t2].[PeriodStart0] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] OUTER APPLY ( - SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0] + SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [t1].[Id] AS [Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd] AS [PeriodEnd0], [t1].[PeriodStart] AS [PeriodStart0] FROM ( SELECT TOP(3) [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] @@ -237,16 +237,16 @@ SELECT TOP(3) [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional ORDER BY [l0].[Level2_Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[PeriodEnd], [l1].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Required_Inverse3Id] ORDER BY [l1].[Level3_Name] DESC) AS [row] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL AND ([l1].[Level3_Name] <> N'Bar' OR [l1].[Level3_Name] IS NULL) - ) AS [t1] - WHERE 1 < [t1].[row] - ) AS [t0] ON CASE + ) AS [t0] + WHERE 1 < [t0].[row] + ) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] - END = [t0].[OneToMany_Required_Inverse3Id] + END = [t1].[OneToMany_Required_Inverse3Id] ) AS [t2] ORDER BY [l].[Id], [t2].[Level2_Name], [t2].[Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[Level3_Name] DESC """); @@ -258,7 +258,7 @@ public override async Task Filtered_include_after_different_filtered_include_sam AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[PeriodEnd], [t1].[PeriodStart] +SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] LEFT JOIN ( SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart] @@ -270,15 +270,15 @@ WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] WHERE [t].[row] <= 3 ) AS [t0] ON [l].[Id] = [t0].[OneToMany_Optional_Inverse2Id] LEFT JOIN ( - SELECT [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart] + SELECT [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[PeriodEnd], [t1].[PeriodStart] FROM ( SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[PeriodEnd], [l1].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Required_Inverse2Id] ORDER BY [l1].[Level2_Name] DESC) AS [row] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND ([l1].[Level2_Name] <> N'Bar' OR [l1].[Level2_Name] IS NULL) - ) AS [t2] - WHERE 1 < [t2].[row] -) AS [t1] ON [l].[Id] = [t1].[OneToMany_Required_Inverse2Id] -ORDER BY [l].[Id], [t0].[OneToMany_Optional_Inverse2Id], [t0].[Level2_Name], [t0].[Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[Level2_Name] DESC + ) AS [t1] + WHERE 1 < [t1].[row] +) AS [t2] ON [l].[Id] = [t2].[OneToMany_Required_Inverse2Id] +ORDER BY [l].[Id], [t0].[OneToMany_Optional_Inverse2Id], [t0].[Level2_Name], [t0].[Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[Level2_Name] DESC """); } @@ -288,7 +288,7 @@ public override async Task Filtered_include_after_reference_navigation(bool asyn AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd], [t0].[PeriodStart] +SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd], [t1].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart] @@ -296,17 +296,17 @@ LEFT JOIN ( WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l].[Id] = [t].[Level1_Optional_Id] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[PeriodEnd], [l1].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Optional_Inverse3Id] ORDER BY [l1].[Level3_Name]) AS [row] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL AND ([l1].[Level3_Name] <> N'Foo' OR [l1].[Level3_Name] IS NULL) - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 4 -) AS [t0] ON CASE + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 4 +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[PeriodEnd] IS NOT NULL AND [t].[PeriodStart] IS NOT NULL THEN [t].[Id] -END = [t0].[OneToMany_Optional_Inverse3Id] -ORDER BY [l].[Id], [t].[Id], [t0].[OneToMany_Optional_Inverse3Id], [t0].[Level3_Name] +END = [t1].[OneToMany_Optional_Inverse3Id] +ORDER BY [l].[Id], [t].[Id], [t1].[OneToMany_Optional_Inverse3Id], [t1].[Level3_Name] """); } @@ -698,7 +698,7 @@ public override async Task Filtered_include_on_ThenInclude(bool async) AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd], [t0].[PeriodStart] +SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd], [t1].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart] @@ -706,17 +706,17 @@ LEFT JOIN ( WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l].[Id] = [t].[Level1_Optional_Id] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[PeriodEnd], [l1].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Optional_Inverse3Id] ORDER BY [l1].[Level3_Name]) AS [row] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL AND ([l1].[Level3_Name] <> N'Foo' OR [l1].[Level3_Name] IS NULL) - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 4 -) AS [t0] ON CASE + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 4 +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[PeriodEnd] IS NOT NULL AND [t].[PeriodStart] IS NOT NULL THEN [t].[Id] -END = [t0].[OneToMany_Optional_Inverse3Id] -ORDER BY [l].[Id], [t].[Id], [t0].[OneToMany_Optional_Inverse3Id], [t0].[Level3_Name] +END = [t1].[OneToMany_Optional_Inverse3Id] +ORDER BY [l].[Id], [t].[Id], [t1].[OneToMany_Optional_Inverse3Id], [t1].[Level3_Name] """); } @@ -770,29 +770,29 @@ public override async Task Filtered_include_Take_with_another_Take_on_top_level( """ @__p_0='5' -SELECT [t].[Id], [t].[Date], [t].[Name], [t].[PeriodEnd], [t].[PeriodStart], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd0], [t2].[PeriodStart0] FROM ( SELECT TOP(@__p_0) [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t1] OUTER APPLY ( - SELECT [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t2].[Id] AS [Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd] AS [PeriodEnd0], [t2].[PeriodStart] AS [PeriodStart0] + SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0] FROM ( SELECT TOP(4) [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t1].[Id] = [l0].[OneToMany_Optional_Inverse2Id] ORDER BY [l0].[Level2_Name] DESC - ) AS [t0] + ) AS [t] LEFT JOIN ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[PeriodEnd], [l1].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE - WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] - END = [t2].[Level2_Optional_Id] -) AS [t1] -ORDER BY [t].[Id], [t1].[Level2_Name] DESC, [t1].[Id] + ) AS [t0] ON CASE + WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] + END = [t0].[Level2_Optional_Id] +) AS [t2] +ORDER BY [t1].[Id], [t2].[Level2_Name] DESC, [t2].[Id] """); } @@ -854,28 +854,28 @@ public override async Task Filtered_include_with_Take_without_order_by_followed_ AssertSql( """ -SELECT [t].[Id], [t].[Date], [t].[Name], [t].[PeriodEnd], [t].[PeriodStart], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd0], [t2].[PeriodStart0] FROM ( SELECT TOP(1) [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t1] OUTER APPLY ( - SELECT [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t2].[Id] AS [Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd] AS [PeriodEnd0], [t2].[PeriodStart] AS [PeriodStart0] + SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0] FROM ( SELECT TOP(40) [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[Id] = [l0].[OneToMany_Optional_Inverse2Id] - ) AS [t0] + WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t1].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + ) AS [t] LEFT JOIN ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[PeriodEnd], [l1].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE - WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] - END = [t2].[Level2_Optional_Id] -) AS [t1] -ORDER BY [t].[Id], [t1].[Id] + ) AS [t0] ON CASE + WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] + END = [t0].[Level2_Optional_Id] +) AS [t2] +ORDER BY [t1].[Id], [t2].[Id] """); } @@ -888,28 +888,28 @@ public override async Task Filtered_include_with_Take_without_order_by_followed_ """ @__p_0='30' -SELECT [t].[Id], [t].[Date], [t].[Name], [t].[PeriodEnd], [t].[PeriodStart], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd0], [t2].[PeriodStart0] FROM ( SELECT TOP(@__p_0) [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t1] OUTER APPLY ( - SELECT [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t2].[Id] AS [Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd] AS [PeriodEnd0], [t2].[PeriodStart] AS [PeriodStart0] + SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0] FROM ( SELECT TOP(40) [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[Id] = [l0].[OneToMany_Optional_Inverse2Id] - ) AS [t0] + WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t1].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + ) AS [t] LEFT JOIN ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[PeriodEnd], [l1].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE - WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] - END = [t2].[Level2_Optional_Id] -) AS [t1] -ORDER BY [t].[Id], [t1].[Id] + ) AS [t0] ON CASE + WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] + END = [t0].[Level2_Optional_Id] +) AS [t2] +ORDER BY [t1].[Id], [t2].[Id] """); } @@ -1051,31 +1051,31 @@ public override async Task Filtered_include_Skip_Take_with_another_Skip_Take_on_ @__p_0='1' @__p_1='5' -SELECT [t].[Id], [t].[Date], [t].[Name], [t].[PeriodEnd], [t].[PeriodStart], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd0], [t2].[PeriodStart0] FROM ( SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] ORDER BY [l].[Id] DESC OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY -) AS [t] +) AS [t1] OUTER APPLY ( - SELECT [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t2].[Id] AS [Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd] AS [PeriodEnd0], [t2].[PeriodStart] AS [PeriodStart0] + SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0] FROM ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[Id] = [l0].[OneToMany_Optional_Inverse2Id] + WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t1].[Id] = [l0].[OneToMany_Optional_Inverse2Id] ORDER BY [l0].[Level2_Name] DESC OFFSET 1 ROWS FETCH NEXT 4 ROWS ONLY - ) AS [t0] + ) AS [t] LEFT JOIN ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[PeriodEnd], [l1].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE - WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t0].[Id] - END = [t2].[Level2_Optional_Id] -) AS [t1] -ORDER BY [t].[Id] DESC, [t1].[Level2_Name] DESC, [t1].[Id] + ) AS [t0] ON CASE + WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] + END = [t0].[Level2_Optional_Id] +) AS [t2] +ORDER BY [t1].[Id] DESC, [t2].[Level2_Name] DESC, [t2].[Id] """); } @@ -1312,10 +1312,10 @@ public override async Task Include_collection_multiple_with_filter(bool async) AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd0], [t1].[PeriodStart0], [t1].[Id1], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t1].[PeriodEnd1], [t1].[PeriodStart1] +SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd0], [t2].[PeriodStart0], [t2].[Id1], [t2].[Level3_Optional_Id], [t2].[Level3_Required_Id], [t2].[Level4_Name], [t2].[OneToMany_Optional_Inverse4Id], [t2].[OneToMany_Required_Inverse4Id], [t2].[OneToOne_Optional_PK_Inverse4Id], [t2].[PeriodEnd1], [t2].[PeriodStart1] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[PeriodEnd], [l2].[PeriodStart], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0], [t2].[Id] AS [Id1], [t2].[Level3_Optional_Id], [t2].[Level3_Required_Id], [t2].[Level4_Name], [t2].[OneToMany_Optional_Inverse4Id], [t2].[OneToMany_Required_Inverse4Id], [t2].[OneToOne_Optional_PK_Inverse4Id], [t2].[PeriodEnd] AS [PeriodEnd1], [t2].[PeriodStart] AS [PeriodStart1] + SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[PeriodEnd], [l2].[PeriodStart], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0], [t1].[Id] AS [Id1], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t1].[PeriodEnd] AS [PeriodEnd1], [t1].[PeriodStart] AS [PeriodStart1] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Level3_Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[PeriodEnd], [l3].[PeriodStart] @@ -1328,11 +1328,11 @@ LEFT JOIN ( SELECT [l4].[Id], [l4].[Level3_Optional_Id], [l4].[Level3_Required_Id], [l4].[Level4_Name], [l4].[OneToMany_Optional_Inverse4Id], [l4].[OneToMany_Required_Inverse4Id], [l4].[OneToOne_Optional_PK_Inverse4Id], [l4].[PeriodEnd], [l4].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l4] WHERE [l4].[Level3_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse4Id] IS NOT NULL - ) AS [t2] ON CASE + ) AS [t1] ON CASE WHEN [t0].[Level2_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse3Id] IS NOT NULL AND [t0].[PeriodEnd] IS NOT NULL AND [t0].[PeriodStart] IS NOT NULL THEN [t0].[Id] - END = [t2].[Level3_Optional_Id] + END = [t1].[Level3_Optional_Id] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] +) AS [t2] ON [l].[Id] = [t2].[OneToMany_Optional_Inverse2Id] WHERE ( SELECT COUNT(*) FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] @@ -1344,7 +1344,7 @@ WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END = [t].[OneToOne_Optional_PK_Inverse3Id] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id] AND ([t].[Level3_Name] <> N'Foo' OR [t].[Level3_Name] IS NULL)) > 0 -ORDER BY [l].[Id], [t1].[Id], [t1].[Id0] +ORDER BY [l].[Id], [t2].[Id], [t2].[Id0] """); } @@ -1354,7 +1354,7 @@ public override async Task Include_collection_ThenInclude_reference_followed_by_ AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd0], [t0].[PeriodStart0], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] +SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd0], [t1].[PeriodStart0], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd0], [t2].[PeriodStart0] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart], [t].[Id] AS [Id0], [t].[Level2_Optional_Id], [t].[Level2_Required_Id], [t].[Level3_Name], [t].[OneToMany_Optional_Inverse3Id], [t].[OneToMany_Required_Inverse3Id], [t].[OneToOne_Optional_PK_Inverse3Id], [t].[PeriodEnd] AS [PeriodEnd0], [t].[PeriodStart] AS [PeriodStart0] @@ -1367,20 +1367,20 @@ WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END = [t].[OneToOne_Optional_PK_Inverse3Id] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t0] ON [l].[Id] = [t0].[OneToMany_Optional_Inverse2Id] +) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[PeriodEnd], [l2].[PeriodStart], [t2].[Id] AS [Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd] AS [PeriodEnd0], [t2].[PeriodStart] AS [PeriodStart0] + SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[PeriodEnd], [l2].[PeriodStart], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Level3_Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[PeriodEnd], [l3].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l3] WHERE [l3].[Level2_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE + ) AS [t0] ON CASE WHEN [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l2].[Id] - END = [t2].[OneToOne_Optional_PK_Inverse3Id] + END = [t0].[OneToOne_Optional_PK_Inverse3Id] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] -ORDER BY [l].[Id], [t0].[Id], [t0].[Id0], [t1].[Id] +) AS [t2] ON [l].[Id] = [t2].[OneToMany_Optional_Inverse2Id] +ORDER BY [l].[Id], [t1].[Id], [t1].[Id0], [t2].[Id] """); } @@ -1465,26 +1465,26 @@ public override async Task Include_collection_with_groupby_in_subquery(bool asyn AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart], [t].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart], [t].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart] FROM ( SELECT [l].[Name] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[PeriodEnd], [l0].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] LEFT JOIN ( SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[PeriodEnd], [l1].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t2] ON [t0].[Id] = [t2].[OneToMany_Optional_Inverse2Id] -ORDER BY [t].[Name], [t0].[Id] +) AS [t2] ON [t1].[Id] = [t2].[OneToMany_Optional_Inverse2Id] +ORDER BY [t].[Name], [t1].[Id] """); } @@ -1494,7 +1494,7 @@ public override async Task Include_collection_with_groupby_in_subquery_and_filte AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart], [t].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart], [t].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart] FROM ( SELECT [l].[Name] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] @@ -1502,19 +1502,19 @@ GROUP BY [l].[Name] HAVING [l].[Name] <> N'Foo' OR [l].[Name] IS NULL ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[PeriodEnd], [l0].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] LEFT JOIN ( SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[PeriodEnd], [l1].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t2] ON [t0].[Id] = [t2].[OneToMany_Optional_Inverse2Id] -ORDER BY [t].[Name], [t0].[Id] +) AS [t2] ON [t1].[Id] = [t2].[OneToMany_Optional_Inverse2Id] +ORDER BY [t].[Name], [t1].[Id] """); } @@ -1524,7 +1524,7 @@ public override async Task Include_collection_with_groupby_in_subquery_and_filte AssertSql( """ -SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart], [t].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart] +SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart], [t].[Name], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart] FROM ( SELECT [l].[Name] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] @@ -1532,20 +1532,20 @@ WHERE [l].[Id] > 3 GROUP BY [l].[Name] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[PeriodEnd], [l0].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l0].[Name] ORDER BY [l0].[Id]) AS [row] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] WHERE [l0].[Id] > 3 - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Name] = [t0].[Name] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Name] = [t1].[Name] LEFT JOIN ( SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[PeriodEnd], [l1].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t2] ON [t0].[Id] = [t2].[OneToMany_Optional_Inverse2Id] -ORDER BY [t].[Name], [t0].[Id] +) AS [t2] ON [t1].[Id] = [t2].[OneToMany_Optional_Inverse2Id] +ORDER BY [t].[Name], [t1].[Id] """); } @@ -1555,7 +1555,7 @@ public override async Task Include_nested_with_optional_navigation(bool async) AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Id0], [t0].[Level3_Optional_Id], [t0].[Level3_Required_Id], [t0].[Level4_Name], [t0].[OneToMany_Optional_Inverse4Id], [t0].[OneToMany_Required_Inverse4Id], [t0].[OneToOne_Optional_PK_Inverse4Id], [t0].[PeriodEnd0], [t0].[PeriodStart0] +SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart] @@ -1563,21 +1563,21 @@ LEFT JOIN ( WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l].[Id] = [t].[Level1_Optional_Id] LEFT JOIN ( - SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[PeriodEnd], [l1].[PeriodStart], [t1].[Id] AS [Id0], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t1].[PeriodEnd] AS [PeriodEnd0], [t1].[PeriodStart] AS [PeriodStart0] + SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[PeriodEnd], [l1].[PeriodStart], [t0].[Id] AS [Id0], [t0].[Level3_Optional_Id], [t0].[Level3_Required_Id], [t0].[Level4_Name], [t0].[OneToMany_Optional_Inverse4Id], [t0].[OneToMany_Required_Inverse4Id], [t0].[OneToOne_Optional_PK_Inverse4Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] LEFT JOIN ( SELECT [l2].[Id], [l2].[Level3_Optional_Id], [l2].[Level3_Required_Id], [l2].[Level4_Name], [l2].[OneToMany_Optional_Inverse4Id], [l2].[OneToMany_Required_Inverse4Id], [l2].[OneToOne_Optional_PK_Inverse4Id], [l2].[PeriodEnd], [l2].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] WHERE [l2].[Level3_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse4Id] IS NOT NULL - ) AS [t1] ON CASE + ) AS [t0] ON CASE WHEN [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [l1].[Id] - END = [t1].[Level3_Required_Id] + END = [t0].[Level3_Required_Id] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t0] ON CASE +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[PeriodEnd] IS NOT NULL AND [t].[PeriodStart] IS NOT NULL THEN [t].[Id] -END = [t0].[OneToMany_Required_Inverse3Id] +END = [t1].[OneToMany_Required_Inverse3Id] WHERE [t].[Level2_Name] <> N'L2 09' OR [t].[Level2_Name] IS NULL -ORDER BY [l].[Id], [t].[Id], [t0].[Id] +ORDER BY [l].[Id], [t].[Id], [t1].[Id] """); } @@ -1587,7 +1587,7 @@ public override async Task Include_partially_added_before_Where_and_then_build_u AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t].[Id], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] +SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t].[Id], [t2].[Id], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd], [t2].[PeriodStart], [t2].[Id0], [t2].[Level3_Optional_Id], [t2].[Level3_Required_Id], [t2].[Level4_Name], [t2].[OneToMany_Optional_Inverse4Id], [t2].[OneToMany_Required_Inverse4Id], [t2].[OneToOne_Optional_PK_Inverse4Id], [t2].[PeriodEnd0], [t2].[PeriodStart0] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart] @@ -1600,25 +1600,25 @@ LEFT JOIN ( WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t0] ON [l].[Id] = [t0].[Level1_Optional_Id] LEFT JOIN ( - SELECT [l2].[Id], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Level3_Name], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[PeriodEnd], [l2].[PeriodStart], [t2].[Id] AS [Id0], [t2].[Level3_Optional_Id], [t2].[Level3_Required_Id], [t2].[Level4_Name], [t2].[OneToMany_Optional_Inverse4Id], [t2].[OneToMany_Required_Inverse4Id], [t2].[OneToOne_Optional_PK_Inverse4Id], [t2].[PeriodEnd] AS [PeriodEnd0], [t2].[PeriodStart] AS [PeriodStart0] + SELECT [l2].[Id], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Level3_Name], [l2].[OneToMany_Optional_Inverse3Id], [l2].[OneToMany_Required_Inverse3Id], [l2].[OneToOne_Optional_PK_Inverse3Id], [l2].[PeriodEnd], [l2].[PeriodStart], [t1].[Id] AS [Id0], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t1].[PeriodEnd] AS [PeriodEnd0], [t1].[PeriodStart] AS [PeriodStart0] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[Level3_Optional_Id], [l3].[Level3_Required_Id], [l3].[Level4_Name], [l3].[OneToMany_Optional_Inverse4Id], [l3].[OneToMany_Required_Inverse4Id], [l3].[OneToOne_Optional_PK_Inverse4Id], [l3].[PeriodEnd], [l3].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l3] WHERE [l3].[Level3_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse4Id] IS NOT NULL - ) AS [t2] ON CASE + ) AS [t1] ON CASE WHEN [l2].[Level2_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [l2].[Id] - END = [t2].[Level3_Optional_Id] + END = [t1].[Level3_Optional_Id] WHERE [l2].[Level2_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t1] ON CASE +) AS [t2] ON CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[PeriodEnd] IS NOT NULL AND [t0].[PeriodStart] IS NOT NULL THEN [t0].[Id] -END = [t1].[OneToMany_Optional_Inverse3Id] +END = [t2].[OneToMany_Optional_Inverse3Id] WHERE CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[PeriodEnd] IS NOT NULL AND [t].[PeriodStart] IS NOT NULL THEN [t].[Id] END < 3 OR CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[PeriodEnd] IS NOT NULL AND [t0].[PeriodStart] IS NOT NULL THEN [t0].[Id] END > 8 -ORDER BY [l].[Id], [t].[Id], [t0].[Id], [t1].[Id] +ORDER BY [l].[Id], [t].[Id], [t0].[Id], [t2].[Id] """); } @@ -1628,7 +1628,7 @@ public override async Task Include_partially_added_before_Where_and_then_build_u AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t].[Id], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t3].[Id], [t3].[Level2_Optional_Id], [t3].[Level2_Required_Id], [t3].[Level3_Name], [t3].[OneToMany_Optional_Inverse3Id], [t3].[OneToMany_Required_Inverse3Id], [t3].[OneToOne_Optional_PK_Inverse3Id], [t3].[PeriodEnd], [t3].[PeriodStart], [t3].[Id0], [t3].[Level3_Optional_Id], [t3].[Level3_Required_Id], [t3].[Level4_Name], [t3].[OneToMany_Optional_Inverse4Id], [t3].[OneToMany_Required_Inverse4Id], [t3].[OneToOne_Optional_PK_Inverse4Id], [t3].[PeriodEnd0], [t3].[PeriodStart0] +SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t0].[Id], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t].[Id], [t3].[Id], [t3].[Level2_Optional_Id], [t3].[Level2_Required_Id], [t3].[Level3_Name], [t3].[OneToMany_Optional_Inverse3Id], [t3].[OneToMany_Required_Inverse3Id], [t3].[OneToOne_Optional_PK_Inverse3Id], [t3].[PeriodEnd], [t3].[PeriodStart], [t4].[Id], [t4].[Level2_Optional_Id], [t4].[Level2_Required_Id], [t4].[Level3_Name], [t4].[OneToMany_Optional_Inverse3Id], [t4].[OneToMany_Required_Inverse3Id], [t4].[OneToOne_Optional_PK_Inverse3Id], [t4].[PeriodEnd], [t4].[PeriodStart], [t4].[Id0], [t4].[Level3_Optional_Id], [t4].[Level3_Required_Id], [t4].[Level4_Name], [t4].[OneToMany_Optional_Inverse4Id], [t4].[OneToMany_Required_Inverse4Id], [t4].[OneToOne_Optional_PK_Inverse4Id], [t4].[PeriodEnd0], [t4].[PeriodStart0] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart] @@ -1652,29 +1652,29 @@ END AS [c] WHERE [l2].[Level2_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse3Id] IS NOT NULL ) AS [t2] WHERE [t2].[row] <= 3 -) AS [t1] ON CASE +) AS [t3] ON CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[PeriodEnd] IS NOT NULL AND [t0].[PeriodStart] IS NOT NULL THEN [t0].[Id] -END = [t1].[OneToMany_Optional_Inverse3Id] +END = [t3].[OneToMany_Optional_Inverse3Id] LEFT JOIN ( - SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Level3_Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[PeriodEnd], [l3].[PeriodStart], [t4].[Id] AS [Id0], [t4].[Level3_Optional_Id], [t4].[Level3_Required_Id], [t4].[Level4_Name], [t4].[OneToMany_Optional_Inverse4Id], [t4].[OneToMany_Required_Inverse4Id], [t4].[OneToOne_Optional_PK_Inverse4Id], [t4].[PeriodEnd] AS [PeriodEnd0], [t4].[PeriodStart] AS [PeriodStart0] + SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Level3_Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[PeriodEnd], [l3].[PeriodStart], [t1].[Id] AS [Id0], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t1].[PeriodEnd] AS [PeriodEnd0], [t1].[PeriodStart] AS [PeriodStart0] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l3] LEFT JOIN ( SELECT [l4].[Id], [l4].[Level3_Optional_Id], [l4].[Level3_Required_Id], [l4].[Level4_Name], [l4].[OneToMany_Optional_Inverse4Id], [l4].[OneToMany_Required_Inverse4Id], [l4].[OneToOne_Optional_PK_Inverse4Id], [l4].[PeriodEnd], [l4].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l4] WHERE [l4].[Level3_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse4Id] IS NOT NULL - ) AS [t4] ON CASE + ) AS [t1] ON CASE WHEN [l3].[Level2_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [l3].[Id] - END = [t4].[Level3_Optional_Id] + END = [t1].[Level3_Optional_Id] WHERE [l3].[Level2_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t3] ON CASE +) AS [t4] ON CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[PeriodEnd] IS NOT NULL AND [t0].[PeriodStart] IS NOT NULL THEN [t0].[Id] -END = [t3].[OneToMany_Required_Inverse3Id] +END = [t4].[OneToMany_Required_Inverse3Id] WHERE CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[PeriodEnd] IS NOT NULL AND [t].[PeriodStart] IS NOT NULL THEN [t].[Id] END < 3 OR CASE WHEN [t0].[OneToOne_Required_PK_Date] IS NOT NULL AND [t0].[Level1_Required_Id] IS NOT NULL AND [t0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[PeriodEnd] IS NOT NULL AND [t0].[PeriodStart] IS NOT NULL THEN [t0].[Id] END > 8 -ORDER BY [l].[Id], [t].[Id], [t0].[Id], [t1].[OneToMany_Optional_Inverse3Id], [t1].[c], [t1].[Id], [t3].[Id] +ORDER BY [l].[Id], [t].[Id], [t0].[Id], [t3].[OneToMany_Optional_Inverse3Id], [t3].[c], [t3].[Id], [t4].[Id] """); } @@ -1892,22 +1892,22 @@ public override async Task Lift_projection_mapping_when_pushing_down_subquery(bo """ @__p_0='25' -SELECT [t].[Id], [t0].[Id0], [t2].[Id], [t2].[Id0], [t0].[Id], [t0].[c] +SELECT [t].[Id], [t1].[Id0], [t2].[Id], [t2].[Id0], [t1].[Id], [t1].[c] FROM ( SELECT TOP(@__p_0) [l].[Id] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[c], [t1].[Id0], [t1].[OneToMany_Required_Inverse2Id] + SELECT [t0].[Id], [t0].[c], [t0].[Id0], [t0].[OneToMany_Required_Inverse2Id] FROM ( SELECT CASE WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END AS [Id], 1 AS [c], [l0].[Id] AS [Id0], [l0].[OneToMany_Required_Inverse2Id], ROW_NUMBER() OVER(PARTITION BY [l0].[OneToMany_Required_Inverse2Id] ORDER BY [l0].[Id]) AS [row] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Id] = [t0].[OneToMany_Required_Inverse2Id] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Id] = [t1].[OneToMany_Required_Inverse2Id] LEFT JOIN ( SELECT CASE WHEN [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l1].[Id] @@ -1915,7 +1915,7 @@ WHEN [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t2] ON [t].[Id] = [t2].[OneToMany_Required_Inverse2Id] -ORDER BY [t].[Id], [t0].[Id0] +ORDER BY [t].[Id], [t1].[Id0] """); } @@ -1925,7 +1925,7 @@ public override async Task Multiple_complex_includes(bool async) AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] +SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd0], [t2].[PeriodStart0] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart] @@ -1936,22 +1936,22 @@ LEFT JOIN ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[PeriodEnd], [l1].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t0] ON CASE +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[PeriodEnd] IS NOT NULL AND [t].[PeriodStart] IS NOT NULL THEN [t].[Id] -END = [t0].[OneToMany_Optional_Inverse3Id] +END = [t1].[OneToMany_Optional_Inverse3Id] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[PeriodEnd], [l2].[PeriodStart], [t2].[Id] AS [Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd] AS [PeriodEnd0], [t2].[PeriodStart] AS [PeriodStart0] + SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[PeriodEnd], [l2].[PeriodStart], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Level3_Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[PeriodEnd], [l3].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l3] WHERE [l3].[Level2_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE + ) AS [t0] ON CASE WHEN [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l2].[Id] - END = [t2].[Level2_Optional_Id] + END = [t0].[Level2_Optional_Id] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] -ORDER BY [l].[Id], [t].[Id], [t0].[Id], [t1].[Id] +) AS [t2] ON [l].[Id] = [t2].[OneToMany_Optional_Inverse2Id] +ORDER BY [l].[Id], [t].[Id], [t1].[Id], [t2].[Id] """); } @@ -1961,7 +1961,7 @@ public override async Task Multiple_complex_include_select(bool async) AssertSql( """ -SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t1].[Id], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] +SELECT [l].[Id], [l].[Date], [l].[Name], [l].[PeriodEnd], [l].[PeriodStart], [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t2].[Id], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd], [t2].[PeriodStart], [t2].[Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd0], [t2].[PeriodStart0] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart] @@ -1972,22 +1972,22 @@ LEFT JOIN ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[PeriodEnd], [l1].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t0] ON CASE +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[PeriodEnd] IS NOT NULL AND [t].[PeriodStart] IS NOT NULL THEN [t].[Id] -END = [t0].[OneToMany_Optional_Inverse3Id] +END = [t1].[OneToMany_Optional_Inverse3Id] LEFT JOIN ( - SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[PeriodEnd], [l2].[PeriodStart], [t2].[Id] AS [Id0], [t2].[Level2_Optional_Id], [t2].[Level2_Required_Id], [t2].[Level3_Name], [t2].[OneToMany_Optional_Inverse3Id], [t2].[OneToMany_Required_Inverse3Id], [t2].[OneToOne_Optional_PK_Inverse3Id], [t2].[PeriodEnd] AS [PeriodEnd0], [t2].[PeriodStart] AS [PeriodStart0] + SELECT [l2].[Id], [l2].[OneToOne_Required_PK_Date], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Level2_Name], [l2].[OneToMany_Optional_Inverse2Id], [l2].[OneToMany_Required_Inverse2Id], [l2].[OneToOne_Optional_PK_Inverse2Id], [l2].[PeriodEnd], [l2].[PeriodStart], [t0].[Id] AS [Id0], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] LEFT JOIN ( SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Level3_Name], [l3].[OneToMany_Optional_Inverse3Id], [l3].[OneToMany_Required_Inverse3Id], [l3].[OneToOne_Optional_PK_Inverse3Id], [l3].[PeriodEnd], [l3].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l3] WHERE [l3].[Level2_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t2] ON CASE + ) AS [t0] ON CASE WHEN [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l2].[Id] - END = [t2].[Level2_Optional_Id] + END = [t0].[Level2_Optional_Id] WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [t1] ON [l].[Id] = [t1].[OneToMany_Optional_Inverse2Id] -ORDER BY [l].[Id], [t].[Id], [t0].[Id], [t1].[Id] +) AS [t2] ON [l].[Id] = [t2].[OneToMany_Optional_Inverse2Id] +ORDER BY [l].[Id], [t].[Id], [t1].[Id], [t2].[Id] """); } @@ -2330,7 +2330,7 @@ public override async Task Optional_navigation_with_Include_ThenInclude(bool asy AssertSql( """ -SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [l].[Id], [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Id0], [t0].[Level3_Optional_Id], [t0].[Level3_Required_Id], [t0].[Level4_Name], [t0].[OneToMany_Optional_Inverse4Id], [t0].[OneToMany_Required_Inverse4Id], [t0].[OneToOne_Optional_PK_Inverse4Id], [t0].[PeriodEnd0], [t0].[PeriodStart0] +SELECT [t].[Id], [t].[OneToOne_Required_PK_Date], [t].[Level1_Optional_Id], [t].[Level1_Required_Id], [t].[Level2_Name], [t].[OneToMany_Optional_Inverse2Id], [t].[OneToMany_Required_Inverse2Id], [t].[OneToOne_Optional_PK_Inverse2Id], [t].[PeriodEnd], [t].[PeriodStart], [l].[Id], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart] @@ -2338,20 +2338,20 @@ LEFT JOIN ( WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l].[Id] = [t].[Level1_Optional_Id] LEFT JOIN ( - SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[PeriodEnd], [l1].[PeriodStart], [t1].[Id] AS [Id0], [t1].[Level3_Optional_Id], [t1].[Level3_Required_Id], [t1].[Level4_Name], [t1].[OneToMany_Optional_Inverse4Id], [t1].[OneToMany_Required_Inverse4Id], [t1].[OneToOne_Optional_PK_Inverse4Id], [t1].[PeriodEnd] AS [PeriodEnd0], [t1].[PeriodStart] AS [PeriodStart0] + SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[PeriodEnd], [l1].[PeriodStart], [t0].[Id] AS [Id0], [t0].[Level3_Optional_Id], [t0].[Level3_Required_Id], [t0].[Level4_Name], [t0].[OneToMany_Optional_Inverse4Id], [t0].[OneToMany_Required_Inverse4Id], [t0].[OneToOne_Optional_PK_Inverse4Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] LEFT JOIN ( SELECT [l2].[Id], [l2].[Level3_Optional_Id], [l2].[Level3_Required_Id], [l2].[Level4_Name], [l2].[OneToMany_Optional_Inverse4Id], [l2].[OneToMany_Required_Inverse4Id], [l2].[OneToOne_Optional_PK_Inverse4Id], [l2].[PeriodEnd], [l2].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l2] WHERE [l2].[Level3_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse4Id] IS NOT NULL - ) AS [t1] ON CASE + ) AS [t0] ON CASE WHEN [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL THEN [l1].[Id] - END = [t1].[Level3_Optional_Id] + END = [t0].[Level3_Optional_Id] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL -) AS [t0] ON CASE +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[PeriodEnd] IS NOT NULL AND [t].[PeriodStart] IS NOT NULL THEN [t].[Id] -END = [t0].[OneToMany_Optional_Inverse3Id] -ORDER BY [l].[Id], [t].[Id], [t0].[Id] +END = [t1].[OneToMany_Optional_Inverse3Id] +ORDER BY [l].[Id], [t].[Id], [t1].[Id] """); } @@ -2552,7 +2552,7 @@ public override async Task Project_collection_navigation_nested_with_take(bool a AssertSql( """ -SELECT [l].[Id], [t].[Id], [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd], [t0].[PeriodStart] +SELECT [l].[Id], [t].[Id], [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd], [t1].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] LEFT JOIN ( SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart] @@ -2560,16 +2560,16 @@ LEFT JOIN ( WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL ) AS [t] ON [l].[Id] = [t].[Level1_Optional_Id] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Level2_Optional_Id], [t1].[Level2_Required_Id], [t1].[Level3_Name], [t1].[OneToMany_Optional_Inverse3Id], [t1].[OneToMany_Required_Inverse3Id], [t1].[OneToOne_Optional_PK_Inverse3Id], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Level2_Optional_Id], [t0].[Level2_Required_Id], [t0].[Level3_Name], [t0].[OneToMany_Optional_Inverse3Id], [t0].[OneToMany_Required_Inverse3Id], [t0].[OneToOne_Optional_PK_Inverse3Id], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l1].[Id], [l1].[Level2_Optional_Id], [l1].[Level2_Required_Id], [l1].[Level3_Name], [l1].[OneToMany_Optional_Inverse3Id], [l1].[OneToMany_Required_Inverse3Id], [l1].[OneToOne_Optional_PK_Inverse3Id], [l1].[PeriodEnd], [l1].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l1].[OneToMany_Optional_Inverse3Id] ORDER BY [l1].[Id]) AS [row] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[Level2_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse3Id] IS NOT NULL - ) AS [t1] - WHERE [t1].[row] <= 50 -) AS [t0] ON CASE + ) AS [t0] + WHERE [t0].[row] <= 50 +) AS [t1] ON CASE WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[PeriodEnd] IS NOT NULL AND [t].[PeriodStart] IS NOT NULL THEN [t].[Id] -END = [t0].[OneToMany_Optional_Inverse3Id] +END = [t1].[OneToMany_Optional_Inverse3Id] ORDER BY [l].[Id], [t].[Id] """); } @@ -2930,21 +2930,21 @@ public override async Task Skip_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart] FROM ( SELECT [l].[Date] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[PeriodEnd], [l0].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + ) AS [t0] + WHERE 1 < [t0].[row] +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -2954,23 +2954,23 @@ public override async Task Skip_Take_Distinct_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart] +SELECT [t0].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart] FROM ( SELECT [l].[Date] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Date] -) AS [t] +) AS [t0] OUTER APPLY ( - SELECT DISTINCT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT DISTINCT [t].[Id], [t].[Date], [t].[Name], [t].[PeriodEnd], [t].[PeriodStart] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[PeriodEnd], [l0].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - WHERE [t].[Date] = [l0].[Date] + WHERE [t0].[Date] = [l0].[Date] ORDER BY [l0].[Name] OFFSET 1 ROWS FETCH NEXT 5 ROWS ONLY - ) AS [t1] -) AS [t0] -ORDER BY [t].[Date] + ) AS [t] +) AS [t1] +ORDER BY [t0].[Date] """); } @@ -2980,21 +2980,21 @@ public override async Task Skip_Take_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart] FROM ( SELECT [l].[Date] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[PeriodEnd], [l0].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -3007,7 +3007,7 @@ public override async Task Skip_Take_on_grouping_element_inside_collection_proje SELECT [l].[Id], [t2].[Date], [t2].[Id], [t2].[Date0], [t2].[Name], [t2].[PeriodEnd], [t2].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] OUTER APPLY ( - SELECT [t].[Date], [t0].[Id], [t0].[Date] AS [Date0], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart] + SELECT [t].[Date], [t1].[Id], [t1].[Date] AS [Date0], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart] FROM ( SELECT [l0].[Date] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] @@ -3015,14 +3015,14 @@ SELECT [l0].[Date] GROUP BY [l0].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l1].[Id], [l1].[Date], [l1].[Name], [l1].[PeriodEnd], [l1].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l1].[Date] ORDER BY [l1].[Name]) AS [row] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[Name] = [l].[Name] OR ([l1].[Name] IS NULL AND [l].[Name] IS NULL) - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 - ) AS [t0] ON [t].[Date] = [t0].[Date] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 + ) AS [t1] ON [t].[Date] = [t1].[Date] ) AS [t2] ORDER BY [l].[Id], [t2].[Date], [t2].[Date0], [t2].[Name] """); @@ -3064,21 +3064,21 @@ public override async Task Skip_Take_on_grouping_element_into_non_entity(bool as AssertSql( """ -SELECT [t].[Date], [t0].[Name], [t0].[Id] +SELECT [t].[Date], [t1].[Name], [t1].[Id] FROM ( SELECT [l].[Date] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Name], [t1].[Id], [t1].[Date] + SELECT [t0].[Name], [t0].[Id], [t0].[Date] FROM ( SELECT [l0].[Name], [l0].[Id], [l0].[Date], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -3088,14 +3088,14 @@ public override async Task Skip_Take_on_grouping_element_with_collection_include AssertSql( """ -SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] +SELECT [t].[Date], [t2].[Id], [t2].[Date], [t2].[Name], [t2].[PeriodEnd], [t2].[PeriodStart], [t2].[Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd0], [t2].[PeriodStart0] FROM ( SELECT [l].[Date] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Date] ) AS [t] OUTER APPLY ( - SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart], [t2].[Id] AS [Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd] AS [PeriodEnd0], [t2].[PeriodStart] AS [PeriodStart0] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart], [t1].[Id] AS [Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[PeriodEnd] AS [PeriodEnd0], [t1].[PeriodStart] AS [PeriodStart0] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[PeriodEnd], [l0].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] @@ -3107,9 +3107,9 @@ LEFT JOIN ( SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[PeriodEnd], [l1].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [t0].[Id] = [t2].[OneToMany_Optional_Inverse2Id] -) AS [t1] -ORDER BY [t].[Date], [t1].[Name], [t1].[Id] + ) AS [t1] ON [t0].[Id] = [t1].[OneToMany_Optional_Inverse2Id] +) AS [t2] +ORDER BY [t].[Date], [t2].[Name], [t2].[Id] """); } @@ -3119,28 +3119,28 @@ public override async Task Skip_Take_on_grouping_element_with_reference_include( AssertSql( """ -SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id0], [t1].[OneToOne_Required_PK_Date], [t1].[Level1_Optional_Id], [t1].[Level1_Required_Id], [t1].[Level2_Name], [t1].[OneToMany_Optional_Inverse2Id], [t1].[OneToMany_Required_Inverse2Id], [t1].[OneToOne_Optional_PK_Inverse2Id], [t1].[PeriodEnd0], [t1].[PeriodStart0] +SELECT [t1].[Date], [t2].[Id], [t2].[Date], [t2].[Name], [t2].[PeriodEnd], [t2].[PeriodStart], [t2].[Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd0], [t2].[PeriodStart0] FROM ( SELECT [l].[Date] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Date] -) AS [t] +) AS [t1] OUTER APPLY ( - SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart], [t2].[Id] AS [Id0], [t2].[OneToOne_Required_PK_Date], [t2].[Level1_Optional_Id], [t2].[Level1_Required_Id], [t2].[Level2_Name], [t2].[OneToMany_Optional_Inverse2Id], [t2].[OneToMany_Required_Inverse2Id], [t2].[OneToOne_Optional_PK_Inverse2Id], [t2].[PeriodEnd] AS [PeriodEnd0], [t2].[PeriodStart] AS [PeriodStart0] + SELECT [t].[Id], [t].[Date], [t].[Name], [t].[PeriodEnd], [t].[PeriodStart], [t0].[Id] AS [Id0], [t0].[OneToOne_Required_PK_Date], [t0].[Level1_Optional_Id], [t0].[Level1_Required_Id], [t0].[Level2_Name], [t0].[OneToMany_Optional_Inverse2Id], [t0].[OneToMany_Required_Inverse2Id], [t0].[OneToOne_Optional_PK_Inverse2Id], [t0].[PeriodEnd] AS [PeriodEnd0], [t0].[PeriodStart] AS [PeriodStart0] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[PeriodEnd], [l0].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - WHERE [t].[Date] = [l0].[Date] + WHERE [t1].[Date] = [l0].[Date] ORDER BY [l0].[Name] OFFSET 1 ROWS FETCH NEXT 5 ROWS ONLY - ) AS [t0] + ) AS [t] LEFT JOIN ( SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Optional_Inverse2Id], [l1].[OneToMany_Required_Inverse2Id], [l1].[OneToOne_Optional_PK_Inverse2Id], [l1].[PeriodEnd], [l1].[PeriodStart] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL - ) AS [t2] ON [t0].[Id] = [t2].[Level1_Optional_Id] -) AS [t1] -ORDER BY [t].[Date], [t1].[Name], [t1].[Id] + ) AS [t0] ON [t].[Id] = [t0].[Level1_Optional_Id] +) AS [t2] +ORDER BY [t1].[Date], [t2].[Name], [t2].[Id] """); } @@ -3152,31 +3152,31 @@ public override async Task Skip_Take_Select_collection_Skip_Take(bool async) """ @__p_0='1' -SELECT [t].[Id], [t].[Name], [t0].[Id], [t0].[Name], [t0].[Level1Id], [t0].[Level2Id], [t0].[Id0], [t0].[Date], [t0].[Name0], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Id1] +SELECT [t0].[Id], [t0].[Name], [t1].[Id], [t1].[Name], [t1].[Level1Id], [t1].[Level2Id], [t1].[Id0], [t1].[Date], [t1].[Name0], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id1] FROM ( SELECT [l].[Id], [l].[Name] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] ORDER BY [l].[Id] OFFSET @__p_0 ROWS FETCH NEXT @__p_0 ROWS ONLY -) AS [t] +) AS [t0] OUTER APPLY ( SELECT CASE - WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] - END AS [Id], [t1].[Level2_Name] AS [Name], [t1].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t1].[Level1_Required_Id] AS [Level2Id], [l0].[Id] AS [Id0], [l0].[Date], [l0].[Name] AS [Name0], [l0].[PeriodEnd], [l0].[PeriodStart], [t1].[Id] AS [Id1], [t1].[c] + WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] + END AS [Id], [t].[Level2_Name] AS [Name], [t].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t].[Level1_Required_Id] AS [Level2Id], [l1].[Id] AS [Id0], [l1].[Date], [l1].[Name] AS [Name0], [l1].[PeriodEnd], [l1].[PeriodStart], [t].[Id] AS [Id1], [t].[c] FROM ( - SELECT [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Required_Inverse2Id], [l1].[PeriodEnd], [l1].[PeriodStart], CASE - WHEN [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l1].[Id] + SELECT [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Required_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart], CASE + WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END AS [c] - FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] - WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[Id] = [l1].[OneToMany_Required_Inverse2Id] + FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] + WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[Id] = [l0].[OneToMany_Required_Inverse2Id] ORDER BY CASE - WHEN [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l1].[Id] + WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END OFFSET 1 ROWS FETCH NEXT 3 ROWS ONLY - ) AS [t1] - INNER JOIN [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] ON [t1].[Level1_Required_Id] = [l0].[Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[c], [t0].[Id1] + ) AS [t] + INNER JOIN [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Level1_Required_Id] = [l1].[Id] +) AS [t1] +ORDER BY [t0].[Id], [t1].[c], [t1].[Id1] """); } @@ -3186,21 +3186,21 @@ public override async Task Skip_Take_ToList_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart] FROM ( SELECT [l].[Date] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[PeriodEnd], [l0].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name]) AS [row] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - ) AS [t1] - WHERE 1 < [t1].[row] AND [t1].[row] <= 6 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 6 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] """); } @@ -3231,21 +3231,21 @@ public override async Task Take_on_grouping_element(bool async) AssertSql( """ -SELECT [t].[Date], [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart] +SELECT [t].[Date], [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart] FROM ( SELECT [l].[Date] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] GROUP BY [l].[Date] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[Date], [t1].[Name], [t1].[PeriodEnd], [t1].[PeriodStart] + SELECT [t0].[Id], [t0].[Date], [t0].[Name], [t0].[PeriodEnd], [t0].[PeriodStart] FROM ( SELECT [l0].[Id], [l0].[Date], [l0].[Name], [l0].[PeriodEnd], [l0].[PeriodStart], ROW_NUMBER() OVER(PARTITION BY [l0].[Date] ORDER BY [l0].[Name] DESC) AS [row] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] - ) AS [t1] - WHERE [t1].[row] <= 10 -) AS [t0] ON [t].[Date] = [t0].[Date] -ORDER BY [t].[Date], [t0].[Date], [t0].[Name] DESC + ) AS [t0] + WHERE [t0].[row] <= 10 +) AS [t1] ON [t].[Date] = [t1].[Date] +ORDER BY [t].[Date], [t1].[Date], [t1].[Name] DESC """); } @@ -3257,29 +3257,29 @@ public override async Task Take_Select_collection_Take(bool async) """ @__p_0='1' -SELECT [t].[Id], [t].[Name], [t0].[Id], [t0].[Name], [t0].[Level1Id], [t0].[Level2Id], [t0].[Id0], [t0].[Date], [t0].[Name0], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Id1] +SELECT [t0].[Id], [t0].[Name], [t1].[Id], [t1].[Name], [t1].[Level1Id], [t1].[Level2Id], [t1].[Id0], [t1].[Date], [t1].[Name0], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Id1] FROM ( SELECT TOP(@__p_0) [l].[Id], [l].[Name] FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] ORDER BY [l].[Id] -) AS [t] +) AS [t0] OUTER APPLY ( SELECT CASE - WHEN [t1].[OneToOne_Required_PK_Date] IS NOT NULL AND [t1].[Level1_Required_Id] IS NOT NULL AND [t1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t1].[Id] - END AS [Id], [t1].[Level2_Name] AS [Name], [t1].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t1].[Level1_Required_Id] AS [Level2Id], [l0].[Id] AS [Id0], [l0].[Date], [l0].[Name] AS [Name0], [l0].[PeriodEnd], [l0].[PeriodStart], [t1].[Id] AS [Id1], [t1].[c] + WHEN [t].[OneToOne_Required_PK_Date] IS NOT NULL AND [t].[Level1_Required_Id] IS NOT NULL AND [t].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [t].[Id] + END AS [Id], [t].[Level2_Name] AS [Name], [t].[OneToMany_Required_Inverse2Id] AS [Level1Id], [t].[Level1_Required_Id] AS [Level2Id], [l1].[Id] AS [Id0], [l1].[Date], [l1].[Name] AS [Name0], [l1].[PeriodEnd], [l1].[PeriodStart], [t].[Id] AS [Id1], [t].[c] FROM ( - SELECT TOP(3) [l1].[Id], [l1].[OneToOne_Required_PK_Date], [l1].[Level1_Required_Id], [l1].[Level2_Name], [l1].[OneToMany_Required_Inverse2Id], [l1].[PeriodEnd], [l1].[PeriodStart], CASE - WHEN [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l1].[Id] + SELECT TOP(3) [l0].[Id], [l0].[OneToOne_Required_PK_Date], [l0].[Level1_Required_Id], [l0].[Level2_Name], [l0].[OneToMany_Required_Inverse2Id], [l0].[PeriodEnd], [l0].[PeriodStart], CASE + WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END AS [c] - FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] - WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t].[Id] = [l1].[OneToMany_Required_Inverse2Id] + FROM [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] + WHERE [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL AND [t0].[Id] = [l0].[OneToMany_Required_Inverse2Id] ORDER BY CASE - WHEN [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l1].[Id] + WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END - ) AS [t1] - INNER JOIN [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] ON [t1].[Level1_Required_Id] = [l0].[Id] -) AS [t0] -ORDER BY [t].[Id], [t0].[c], [t0].[Id1] + ) AS [t] + INNER JOIN [Level1] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l1] ON [t].[Level1_Required_Id] = [l1].[Id] +) AS [t1] +ORDER BY [t0].[Id], [t1].[c], [t1].[Id1] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs index a50942b1618..854140dac48 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs @@ -510,19 +510,19 @@ public override async Task Anonymous_projection_take_followed_by_projecting_sing """ @__p_0='25' -SELECT [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[SynergyWithId] +SELECT [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[SynergyWithId] FROM ( SELECT TOP(@__p_0) [g].[FullName] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] ) AS [t] LEFT JOIN ( - SELECT [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[SynergyWithId] + SELECT [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[SynergyWithId] FROM ( SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[PeriodEnd], [w].[PeriodStart], [w].[SynergyWithId], ROW_NUMBER() OVER(PARTITION BY [w].[OwnerFullName] ORDER BY [w].[Id]) AS [row] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[FullName] = [t0].[OwnerFullName] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[FullName] = [t1].[OwnerFullName] """); } @@ -1644,22 +1644,22 @@ public override async Task Include_with_group_by_and_FirstOrDefault_gets_properl AssertSql( """ -SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Rank], [t0].[Name], [t0].[Location], [t0].[Nation], [t0].[PeriodEnd0], [t0].[PeriodStart0] +SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[Discriminator], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Rank], [t1].[Name], [t1].[Location], [t1].[Nation], [t1].[PeriodEnd0], [t1].[PeriodStart0] FROM ( SELECT [g].[Rank] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] GROUP BY [g].[Rank] ) AS [t] LEFT JOIN ( - SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[Discriminator], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Rank], [t1].[Name], [t1].[Location], [t1].[Nation], [t1].[PeriodEnd0], [t1].[PeriodStart0] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Rank], [t0].[Name], [t0].[Location], [t0].[Nation], [t0].[PeriodEnd0], [t0].[PeriodStart0] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[PeriodEnd], [g0].[PeriodStart], [g0].[Rank], [c].[Name], [c].[Location], [c].[Nation], [c].[PeriodEnd] AS [PeriodEnd0], [c].[PeriodStart] AS [PeriodStart0], ROW_NUMBER() OVER(PARTITION BY [g0].[Rank] ORDER BY [g0].[Nickname], [g0].[SquadId], [c].[Name]) AS [row] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g0] INNER JOIN [Cities] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [c] ON [g0].[CityOfBirthName] = [c].[Name] WHERE [g0].[HasSoulPatch] = CAST(1 AS bit) - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Rank] = [t0].[Rank] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Rank] = [t1].[Rank] """); } @@ -3325,12 +3325,12 @@ public override async Task Correlated_collections_multiple_nested_complex_collec AssertSql( """ -SELECT [g].[FullName], [g].[Nickname], [g].[SquadId], [t].[Id], [g1].[Nickname], [g1].[SquadId], [t0].[FullName], [t0].[Nickname], [t0].[SquadId], [t0].[Id], [t0].[Nickname0], [t0].[SquadId0], [t0].[Id0], [t0].[Name], [t0].[IsAutomatic], [t0].[Id1], [t0].[Nickname00], [t0].[HasSoulPatch], [t0].[SquadId00], [t2].[Id], [t2].[AmmunitionType], [t2].[IsAutomatic], [t2].[Name], [t2].[OwnerFullName], [t2].[PeriodEnd], [t2].[PeriodStart], [t2].[SynergyWithId], [t2].[Nickname], [t2].[SquadId] +SELECT [g].[FullName], [g].[Nickname], [g].[SquadId], [t].[Id], [g1].[Nickname], [g1].[SquadId], [t1].[FullName], [t1].[Nickname], [t1].[SquadId], [t1].[Id], [t1].[Nickname0], [t1].[SquadId0], [t1].[Id0], [t1].[Name], [t1].[IsAutomatic], [t1].[Id1], [t1].[Nickname00], [t1].[HasSoulPatch], [t1].[SquadId00], [t2].[Id], [t2].[AmmunitionType], [t2].[IsAutomatic], [t2].[Name], [t2].[OwnerFullName], [t2].[PeriodEnd], [t2].[PeriodStart], [t2].[SynergyWithId], [t2].[Nickname], [t2].[SquadId] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] LEFT JOIN [Tags] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [t] ON [g].[Nickname] = [t].[GearNickName] AND [g].[SquadId] = [t].[GearSquadId] LEFT JOIN [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g1] ON [t].[GearNickName] = [g1].[Nickname] AND [t].[GearSquadId] = [g1].[SquadId] LEFT JOIN ( - SELECT [g2].[FullName], [g2].[Nickname], [g2].[SquadId], [t1].[Id], [t1].[Nickname] AS [Nickname0], [t1].[SquadId] AS [SquadId0], [t1].[Id0], [t1].[Name], [t1].[IsAutomatic], [t1].[Id1], [t1].[Nickname0] AS [Nickname00], [t1].[HasSoulPatch], [t1].[SquadId0] AS [SquadId00], [g2].[Rank], [t1].[IsAutomatic0], [g2].[LeaderNickname], [g2].[LeaderSquadId] + SELECT [g2].[FullName], [g2].[Nickname], [g2].[SquadId], [t0].[Id], [t0].[Nickname] AS [Nickname0], [t0].[SquadId] AS [SquadId0], [t0].[Id0], [t0].[Name], [t0].[IsAutomatic], [t0].[Id1], [t0].[Nickname0] AS [Nickname00], [t0].[HasSoulPatch], [t0].[SquadId0] AS [SquadId00], [g2].[Rank], [t0].[IsAutomatic0], [g2].[LeaderNickname], [g2].[LeaderSquadId] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g2] LEFT JOIN ( SELECT [w].[Id], [g3].[Nickname], [g3].[SquadId], [s].[Id] AS [Id0], [w0].[Name], [w0].[IsAutomatic], [w0].[Id] AS [Id1], [g4].[Nickname] AS [Nickname0], [g4].[HasSoulPatch], [g4].[SquadId] AS [SquadId0], [w].[IsAutomatic] AS [IsAutomatic0], [w].[OwnerFullName] @@ -3340,9 +3340,9 @@ LEFT JOIN ( LEFT JOIN [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w0] ON [g3].[FullName] = [w0].[OwnerFullName] LEFT JOIN [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g4] ON [s].[Id] = [g4].[SquadId] WHERE [w].[Name] <> N'Bar' OR [w].[Name] IS NULL - ) AS [t1] ON [g2].[FullName] = [t1].[OwnerFullName] + ) AS [t0] ON [g2].[FullName] = [t0].[OwnerFullName] WHERE [g2].[FullName] <> N'Foo' -) AS [t0] ON [g].[Nickname] = [t0].[LeaderNickname] AND [g].[SquadId] = [t0].[LeaderSquadId] +) AS [t1] ON [g].[Nickname] = [t1].[LeaderNickname] AND [g].[SquadId] = [t1].[LeaderSquadId] LEFT JOIN ( SELECT [w1].[Id], [w1].[AmmunitionType], [w1].[IsAutomatic], [w1].[Name], [w1].[OwnerFullName], [w1].[PeriodEnd], [w1].[PeriodStart], [w1].[SynergyWithId], [g5].[Nickname], [g5].[SquadId] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w1] @@ -3352,7 +3352,7 @@ LEFT JOIN ( SELECT 1 FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g0] WHERE [g].[Nickname] = [g0].[LeaderNickname] AND [g].[SquadId] = [g0].[LeaderSquadId]) -ORDER BY [g].[HasSoulPatch] DESC, [t].[Note], [g].[Nickname], [g].[SquadId], [t].[Id], [g1].[Nickname], [g1].[SquadId], [t0].[Rank], [t0].[Nickname], [t0].[SquadId], [t0].[IsAutomatic0], [t0].[Id], [t0].[Nickname0], [t0].[SquadId0], [t0].[Id0], [t0].[Id1], [t0].[Nickname00], [t0].[SquadId00], [t2].[IsAutomatic], [t2].[Nickname] DESC, [t2].[Id] +ORDER BY [g].[HasSoulPatch] DESC, [t].[Note], [g].[Nickname], [g].[SquadId], [t].[Id], [g1].[Nickname], [g1].[SquadId], [t1].[Rank], [t1].[Nickname], [t1].[SquadId], [t1].[IsAutomatic0], [t1].[Id], [t1].[Nickname0], [t1].[SquadId0], [t1].[Id0], [t1].[Id1], [t1].[Nickname00], [t1].[SquadId00], [t2].[IsAutomatic], [t2].[Nickname] DESC, [t2].[Id] """); } @@ -3717,19 +3717,19 @@ public override async Task Project_collection_navigation_nested_with_take_compos AssertSql( """ -SELECT [t].[Id], [g].[Nickname], [g].[SquadId], [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Rank] +SELECT [t].[Id], [g].[Nickname], [g].[SquadId], [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[Discriminator], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Rank] FROM [Tags] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [t] LEFT JOIN [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] ON [t].[GearNickName] = [g].[Nickname] AND [t].[GearSquadId] = [g].[SquadId] LEFT JOIN ( - SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[Discriminator], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Rank] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Rank] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[PeriodEnd], [g0].[PeriodStart], [g0].[Rank], ROW_NUMBER() OVER(PARTITION BY [g0].[LeaderNickname], [g0].[LeaderSquadId] ORDER BY [g0].[Nickname], [g0].[SquadId]) AS [row] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g0] - ) AS [t1] - WHERE [t1].[row] <= 50 -) AS [t0] ON ([g].[Nickname] = [t0].[LeaderNickname] OR ([g].[Nickname] IS NULL AND [t0].[LeaderNickname] IS NULL)) AND [g].[SquadId] = [t0].[LeaderSquadId] + ) AS [t0] + WHERE [t0].[row] <= 50 +) AS [t1] ON ([g].[Nickname] = [t1].[LeaderNickname] OR ([g].[Nickname] IS NULL AND [t1].[LeaderNickname] IS NULL)) AND [g].[SquadId] = [t1].[LeaderSquadId] WHERE [g].[Discriminator] = N'Officer' -ORDER BY [t].[Id], [g].[Nickname], [g].[SquadId], [t0].[Nickname] +ORDER BY [t].[Id], [g].[Nickname], [g].[SquadId], [t1].[Nickname] """); } @@ -3804,21 +3804,21 @@ public override async Task Group_by_with_include_with_entity_in_result_selector( AssertSql( """ -SELECT [t].[Rank], [t].[c], [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Rank], [t0].[Name], [t0].[Location], [t0].[Nation], [t0].[PeriodEnd0], [t0].[PeriodStart0] +SELECT [t].[Rank], [t].[c], [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[Discriminator], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Rank], [t1].[Name], [t1].[Location], [t1].[Nation], [t1].[PeriodEnd0], [t1].[PeriodStart0] FROM ( SELECT [g].[Rank], COUNT(*) AS [c] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] GROUP BY [g].[Rank] ) AS [t] LEFT JOIN ( - SELECT [t1].[Nickname], [t1].[SquadId], [t1].[AssignedCityName], [t1].[CityOfBirthName], [t1].[Discriminator], [t1].[FullName], [t1].[HasSoulPatch], [t1].[LeaderNickname], [t1].[LeaderSquadId], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[Rank], [t1].[Name], [t1].[Location], [t1].[Nation], [t1].[PeriodEnd0], [t1].[PeriodStart0] + SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOfBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Rank], [t0].[Name], [t0].[Location], [t0].[Nation], [t0].[PeriodEnd0], [t0].[PeriodStart0] FROM ( SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[PeriodEnd], [g0].[PeriodStart], [g0].[Rank], [c].[Name], [c].[Location], [c].[Nation], [c].[PeriodEnd] AS [PeriodEnd0], [c].[PeriodStart] AS [PeriodStart0], ROW_NUMBER() OVER(PARTITION BY [g0].[Rank] ORDER BY [g0].[Nickname]) AS [row] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g0] INNER JOIN [Cities] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [c] ON [g0].[CityOfBirthName] = [c].[Name] - ) AS [t1] - WHERE [t1].[row] <= 1 -) AS [t0] ON [t].[Rank] = [t0].[Rank] + ) AS [t0] + WHERE [t0].[row] <= 1 +) AS [t1] ON [t].[Rank] = [t1].[Rank] ORDER BY [t].[Rank] """); } @@ -3888,13 +3888,13 @@ public override async Task Correlated_collection_after_distinct_3_levels(bool as AssertSql( """ -SELECT [t].[Id], [t].[Name], [t1].[Nickname], [t1].[FullName], [t1].[HasSoulPatch], [t1].[Id], [t1].[Name], [t1].[Nickname0], [t1].[FullName0], [t1].[HasSoulPatch0], [t1].[Id0] +SELECT [t].[Id], [t].[Name], [t2].[Nickname], [t2].[FullName], [t2].[HasSoulPatch], [t2].[Id], [t2].[Name], [t2].[Nickname0], [t2].[FullName0], [t2].[HasSoulPatch0], [t2].[Id0] FROM ( SELECT DISTINCT [s].[Id], [s].[Name] FROM [Squads] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [s] ) AS [t] OUTER APPLY ( - SELECT [t0].[Nickname], [t0].[FullName], [t0].[HasSoulPatch], [t2].[Id], [t2].[Name], [t2].[Nickname] AS [Nickname0], [t2].[FullName] AS [FullName0], [t2].[HasSoulPatch] AS [HasSoulPatch0], [t2].[Id0] + SELECT [t0].[Nickname], [t0].[FullName], [t0].[HasSoulPatch], [t1].[Id], [t1].[Name], [t1].[Nickname] AS [Nickname0], [t1].[FullName] AS [FullName0], [t1].[HasSoulPatch] AS [HasSoulPatch0], [t1].[Id0] FROM ( SELECT DISTINCT [g].[Nickname], [g].[FullName], [g].[HasSoulPatch] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] @@ -3904,9 +3904,9 @@ OUTER APPLY ( SELECT [t].[Id], [t].[Name], [t0].[Nickname], [t0].[FullName], [t0].[HasSoulPatch], [w].[Id] AS [Id0] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] WHERE [w].[OwnerFullName] = [t0].[FullName] - ) AS [t2] -) AS [t1] -ORDER BY [t].[Id], [t1].[Nickname], [t1].[FullName], [t1].[HasSoulPatch] + ) AS [t1] +) AS [t2] +ORDER BY [t].[Id], [t2].[Nickname], [t2].[FullName], [t2].[HasSoulPatch] """); } @@ -6828,21 +6828,21 @@ public override async Task Correlated_collections_deeply_nested_left_join(bool a AssertSql( """ -SELECT [t].[Id], [g].[Nickname], [g].[SquadId], [s].[Id], [t0].[Nickname], [t0].[SquadId], [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[SynergyWithId] +SELECT [t].[Id], [g].[Nickname], [g].[SquadId], [s].[Id], [t1].[Nickname], [t1].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[SynergyWithId] FROM [Tags] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [t] LEFT JOIN [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] ON [t].[GearNickName] = [g].[Nickname] LEFT JOIN [Squads] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [s] ON [g].[SquadId] = [s].[Id] LEFT JOIN ( - SELECT [g0].[Nickname], [g0].[SquadId], [t1].[Id], [t1].[AmmunitionType], [t1].[IsAutomatic], [t1].[Name], [t1].[OwnerFullName], [t1].[PeriodEnd], [t1].[PeriodStart], [t1].[SynergyWithId] + SELECT [g0].[Nickname], [g0].[SquadId], [t0].[Id], [t0].[AmmunitionType], [t0].[IsAutomatic], [t0].[Name], [t0].[OwnerFullName], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[SynergyWithId] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g0] LEFT JOIN ( SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[PeriodEnd], [w].[PeriodStart], [w].[SynergyWithId] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] WHERE [w].[IsAutomatic] = CAST(1 AS bit) - ) AS [t1] ON [g0].[FullName] = [t1].[OwnerFullName] + ) AS [t0] ON [g0].[FullName] = [t0].[OwnerFullName] WHERE [g0].[HasSoulPatch] = CAST(1 AS bit) -) AS [t0] ON [s].[Id] = [t0].[SquadId] -ORDER BY [t].[Note], [g].[Nickname] DESC, [t].[Id], [g].[SquadId], [s].[Id], [t0].[Nickname], [t0].[SquadId] +) AS [t1] ON [s].[Id] = [t1].[SquadId] +ORDER BY [t].[Note], [g].[Nickname] DESC, [t].[Id], [g].[SquadId], [s].[Id], [t1].[Nickname], [t1].[SquadId] """); } @@ -10073,12 +10073,12 @@ public override async Task Nav_expansion_with_member_pushdown_inside_Contains_ar SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[PeriodEnd], [g].[PeriodStart], [g].[Rank] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] WHERE ( - SELECT TOP(1) [w].[Name] - FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] - WHERE [g].[FullName] = [w].[OwnerFullName] - ORDER BY [w].[Id]) IN ( - SELECT [w0].[value] - FROM OPENJSON(@__weapons_0) WITH ([value] nvarchar(max) '$') AS [w0] + SELECT TOP(1) [w0].[Name] + FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w0] + WHERE [g].[FullName] = [w0].[OwnerFullName] + ORDER BY [w0].[Id]) IN ( + SELECT [w].[value] + FROM OPENJSON(@__weapons_0) WITH ([value] nvarchar(max) '$') AS [w] ) """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalManyToManyQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalManyToManyQuerySqlServerTest.cs index eadfcefd184..4bd372808da 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalManyToManyQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalManyToManyQuerySqlServerTest.cs @@ -1039,28 +1039,28 @@ public override async Task Filter_include_on_skip_navigation_combined_with_filte SELECT [e].[Id], [e].[CollectionInverseId], [e].[Name], [e].[PeriodEnd], [e].[PeriodStart], [e].[ReferenceInverseId], [t3].[OneId], [t3].[ThreeId], [t3].[Payload], [t3].[PeriodEnd], [t3].[PeriodStart], [t3].[Id], [t3].[Name], [t3].[PeriodEnd0], [t3].[PeriodStart0], [t3].[OneId0], [t3].[TwoId], [t3].[JoinOneToTwoExtraId], [t3].[PeriodEnd1], [t3].[PeriodStart1], [t3].[Id0], [t3].[CollectionInverseId], [t3].[ExtraId], [t3].[Name0], [t3].[PeriodEnd00], [t3].[PeriodStart00], [t3].[ReferenceInverseId], [t3].[EntityBranchId], [t3].[EntityOneId], [t3].[PeriodEnd2], [t3].[PeriodStart2], [t3].[Id1], [t3].[Discriminator], [t3].[Name1], [t3].[PeriodEnd01], [t3].[PeriodStart01], [t3].[Number], [t3].[IsGreen] FROM [EntityThrees] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [e] LEFT JOIN ( - SELECT [j].[OneId], [j].[ThreeId], [j].[Payload], [j].[PeriodEnd], [j].[PeriodStart], [e0].[Id], [e0].[Name], [e0].[PeriodEnd] AS [PeriodEnd0], [e0].[PeriodStart] AS [PeriodStart0], [t0].[OneId] AS [OneId0], [t0].[TwoId], [t0].[JoinOneToTwoExtraId], [t0].[PeriodEnd] AS [PeriodEnd1], [t0].[PeriodStart] AS [PeriodStart1], [t0].[Id] AS [Id0], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name] AS [Name0], [t0].[PeriodEnd0] AS [PeriodEnd00], [t0].[PeriodStart0] AS [PeriodStart00], [t0].[ReferenceInverseId], [t1].[EntityBranchId], [t1].[EntityOneId], [t1].[PeriodEnd] AS [PeriodEnd2], [t1].[PeriodStart] AS [PeriodStart2], [t1].[Id] AS [Id1], [t1].[Discriminator], [t1].[Name] AS [Name1], [t1].[PeriodEnd0] AS [PeriodEnd01], [t1].[PeriodStart0] AS [PeriodStart01], [t1].[Number], [t1].[IsGreen] + SELECT [j].[OneId], [j].[ThreeId], [j].[Payload], [j].[PeriodEnd], [j].[PeriodStart], [e0].[Id], [e0].[Name], [e0].[PeriodEnd] AS [PeriodEnd0], [e0].[PeriodStart] AS [PeriodStart0], [t1].[OneId] AS [OneId0], [t1].[TwoId], [t1].[JoinOneToTwoExtraId], [t1].[PeriodEnd] AS [PeriodEnd1], [t1].[PeriodStart] AS [PeriodStart1], [t1].[Id] AS [Id0], [t1].[CollectionInverseId], [t1].[ExtraId], [t1].[Name] AS [Name0], [t1].[PeriodEnd0] AS [PeriodEnd00], [t1].[PeriodStart0] AS [PeriodStart00], [t1].[ReferenceInverseId], [t2].[EntityBranchId], [t2].[EntityOneId], [t2].[PeriodEnd] AS [PeriodEnd2], [t2].[PeriodStart] AS [PeriodStart2], [t2].[Id] AS [Id1], [t2].[Discriminator], [t2].[Name] AS [Name1], [t2].[PeriodEnd0] AS [PeriodEnd01], [t2].[PeriodStart0] AS [PeriodStart01], [t2].[Number], [t2].[IsGreen] FROM [JoinOneToThreePayloadFull] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [j] INNER JOIN [EntityOnes] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [e0] ON [j].[OneId] = [e0].[Id] LEFT JOIN ( - SELECT [t].[OneId], [t].[TwoId], [t].[JoinOneToTwoExtraId], [t].[PeriodEnd], [t].[PeriodStart], [t].[Id], [t].[CollectionInverseId], [t].[ExtraId], [t].[Name], [t].[PeriodEnd0], [t].[PeriodStart0], [t].[ReferenceInverseId] + SELECT [t0].[OneId], [t0].[TwoId], [t0].[JoinOneToTwoExtraId], [t0].[PeriodEnd], [t0].[PeriodStart], [t0].[Id], [t0].[CollectionInverseId], [t0].[ExtraId], [t0].[Name], [t0].[PeriodEnd0], [t0].[PeriodStart0], [t0].[ReferenceInverseId] FROM ( SELECT [j0].[OneId], [j0].[TwoId], [j0].[JoinOneToTwoExtraId], [j0].[PeriodEnd], [j0].[PeriodStart], [e1].[Id], [e1].[CollectionInverseId], [e1].[ExtraId], [e1].[Name], [e1].[PeriodEnd] AS [PeriodEnd0], [e1].[PeriodStart] AS [PeriodStart0], [e1].[ReferenceInverseId], ROW_NUMBER() OVER(PARTITION BY [j0].[OneId] ORDER BY [e1].[Id]) AS [row] FROM [JoinOneToTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [j0] INNER JOIN [EntityTwos] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [e1] ON [j0].[TwoId] = [e1].[Id] - ) AS [t] - WHERE 1 < [t].[row] AND [t].[row] <= 3 - ) AS [t0] ON [e0].[Id] = [t0].[OneId] + ) AS [t0] + WHERE 1 < [t0].[row] AND [t0].[row] <= 3 + ) AS [t1] ON [e0].[Id] = [t1].[OneId] LEFT JOIN ( - SELECT [j1].[EntityBranchId], [j1].[EntityOneId], [j1].[PeriodEnd], [j1].[PeriodStart], [t2].[Id], [t2].[Discriminator], [t2].[Name], [t2].[PeriodEnd] AS [PeriodEnd0], [t2].[PeriodStart] AS [PeriodStart0], [t2].[Number], [t2].[IsGreen] + SELECT [j1].[EntityBranchId], [j1].[EntityOneId], [j1].[PeriodEnd], [j1].[PeriodStart], [t].[Id], [t].[Discriminator], [t].[Name], [t].[PeriodEnd] AS [PeriodEnd0], [t].[PeriodStart] AS [PeriodStart0], [t].[Number], [t].[IsGreen] FROM [JoinOneToBranch] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [j1] INNER JOIN ( SELECT [e2].[Id], [e2].[Discriminator], [e2].[Name], [e2].[PeriodEnd], [e2].[PeriodStart], [e2].[Number], [e2].[IsGreen] FROM [EntityRoots] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [e2] WHERE [e2].[Discriminator] IN (N'EntityBranch', N'EntityLeaf') - ) AS [t2] ON [j1].[EntityBranchId] = [t2].[Id] - WHERE [t2].[Id] < 20 - ) AS [t1] ON [e0].[Id] = [t1].[EntityOneId] + ) AS [t] ON [j1].[EntityBranchId] = [t].[Id] + WHERE [t].[Id] < 20 + ) AS [t2] ON [e0].[Id] = [t2].[EntityOneId] WHERE [e0].[Id] < 10 ) AS [t3] ON [e].[Id] = [t3].[ThreeId] ORDER BY [e].[Id], [t3].[OneId], [t3].[ThreeId], [t3].[Id], [t3].[OneId0], [t3].[Id0], [t3].[TwoId], [t3].[EntityBranchId], [t3].[EntityOneId] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalOwnedQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalOwnedQuerySqlServerTest.cs index bc75f321c30..36dfedf177b 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalOwnedQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalOwnedQuerySqlServerTest.cs @@ -1053,18 +1053,18 @@ ORDER BY [o].[Id] """, // """ -SELECT [o0].[ClientId], [o0].[Id], [o0].[OrderDate], [o0].[PeriodEnd], [o0].[PeriodStart], [o].[Id] +SELECT [o1].[ClientId], [o1].[Id], [o1].[OrderDate], [o1].[PeriodEnd], [o1].[PeriodStart], [o].[Id] FROM [OwnedPerson] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o] -INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o0] ON [o].[Id] = [o0].[ClientId] -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o].[Id] = [o1].[ClientId] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """, // """ -SELECT [o1].[OrderClientId], [o1].[OrderId], [o1].[Id], [o1].[Detail], [o1].[PeriodEnd], [o1].[PeriodStart], [o].[Id], [o0].[ClientId], [o0].[Id] +SELECT [o3].[OrderClientId], [o3].[OrderId], [o3].[Id], [o3].[Detail], [o3].[PeriodEnd], [o3].[PeriodStart], [o].[Id], [o1].[ClientId], [o1].[Id] FROM [OwnedPerson] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o] -INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o0] ON [o].[Id] = [o0].[ClientId] -INNER JOIN [OrderDetail] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o0].[ClientId] = [o1].[OrderClientId] AND [o0].[Id] = [o1].[OrderId] -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o].[Id] = [o1].[ClientId] +INNER JOIN [OrderDetail] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o3] ON [o1].[ClientId] = [o3].[OrderClientId] AND [o1].[Id] = [o3].[OrderId] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """); } @@ -1081,20 +1081,20 @@ ORDER BY [o].[Id] """, // """ -SELECT [o0].[ClientId], [o0].[Id], [o0].[OrderDate], [o0].[PeriodEnd], [o0].[PeriodStart], [o].[Id] +SELECT [o1].[ClientId], [o1].[Id], [o1].[OrderDate], [o1].[PeriodEnd], [o1].[PeriodStart], [o].[Id] FROM [OwnedPerson] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o] -INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o0] ON [o].[Id] = [o0].[ClientId] +INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o].[Id] = [o1].[ClientId] WHERE [o].[Discriminator] IN (N'Branch', N'LeafA') -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """, // """ -SELECT [o1].[OrderClientId], [o1].[OrderId], [o1].[Id], [o1].[Detail], [o1].[PeriodEnd], [o1].[PeriodStart], [o].[Id], [o0].[ClientId], [o0].[Id] +SELECT [o3].[OrderClientId], [o3].[OrderId], [o3].[Id], [o3].[Detail], [o3].[PeriodEnd], [o3].[PeriodStart], [o].[Id], [o1].[ClientId], [o1].[Id] FROM [OwnedPerson] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o] -INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o0] ON [o].[Id] = [o0].[ClientId] -INNER JOIN [OrderDetail] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o0].[ClientId] = [o1].[OrderClientId] AND [o0].[Id] = [o1].[OrderId] +INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o].[Id] = [o1].[ClientId] +INNER JOIN [OrderDetail] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o3] ON [o1].[ClientId] = [o3].[OrderClientId] AND [o1].[Id] = [o3].[OrderId] WHERE [o].[Discriminator] IN (N'Branch', N'LeafA') -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """); } @@ -1117,7 +1117,7 @@ ORDER BY [t].[Id] """ @__p_0='5' -SELECT [o0].[ClientId], [o0].[Id], [o0].[OrderDate], [o0].[PeriodEnd], [o0].[PeriodStart], [t0].[Id] +SELECT [o1].[ClientId], [o1].[Id], [o1].[OrderDate], [o1].[PeriodEnd], [o1].[PeriodStart], [t0].[Id] FROM ( SELECT TOP(@__p_0) [t].[Id] FROM ( @@ -1126,14 +1126,14 @@ SELECT TOP(@__p_0) [t].[Id] ) AS [t] ORDER BY [t].[Id] ) AS [t0] -INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o0] ON [t0].[Id] = [o0].[ClientId] -ORDER BY [t0].[Id], [o0].[ClientId], [o0].[Id] +INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [t0].[Id] = [o1].[ClientId] +ORDER BY [t0].[Id], [o1].[ClientId], [o1].[Id] """, // """ @__p_0='5' -SELECT [o1].[OrderClientId], [o1].[OrderId], [o1].[Id], [o1].[Detail], [o1].[PeriodEnd], [o1].[PeriodStart], [t0].[Id], [o0].[ClientId], [o0].[Id] +SELECT [o3].[OrderClientId], [o3].[OrderId], [o3].[Id], [o3].[Detail], [o3].[PeriodEnd], [o3].[PeriodStart], [t0].[Id], [o1].[ClientId], [o1].[Id] FROM ( SELECT TOP(@__p_0) [t].[Id] FROM ( @@ -1142,9 +1142,9 @@ SELECT TOP(@__p_0) [t].[Id] ) AS [t] ORDER BY [t].[Id] ) AS [t0] -INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o0] ON [t0].[Id] = [o0].[ClientId] -INNER JOIN [OrderDetail] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o0].[ClientId] = [o1].[OrderClientId] AND [o0].[Id] = [o1].[OrderId] -ORDER BY [t0].[Id], [o0].[ClientId], [o0].[Id] +INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [t0].[Id] = [o1].[ClientId] +INNER JOIN [OrderDetail] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o3] ON [o1].[ClientId] = [o3].[OrderClientId] AND [o1].[Id] = [o3].[OrderId] +ORDER BY [t0].[Id], [o1].[ClientId], [o1].[Id] """); } @@ -1161,20 +1161,20 @@ public override async Task Project_multiple_owned_navigations_split(bool async) """, // """ -SELECT [o0].[ClientId], [o0].[Id], [o0].[OrderDate], [o0].[PeriodEnd], [o0].[PeriodStart], [o].[Id], [p].[Id] +SELECT [o1].[ClientId], [o1].[Id], [o1].[OrderDate], [o1].[PeriodEnd], [o1].[PeriodStart], [o].[Id], [p].[Id] FROM [OwnedPerson] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o] LEFT JOIN [Planet] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [p] ON [o].[PersonAddress_Country_PlanetId] = [p].[Id] -INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o0] ON [o].[Id] = [o0].[ClientId] -ORDER BY [o].[Id], [p].[Id], [o0].[ClientId], [o0].[Id] +INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o].[Id] = [o1].[ClientId] +ORDER BY [o].[Id], [p].[Id], [o1].[ClientId], [o1].[Id] """, // """ -SELECT [o1].[OrderClientId], [o1].[OrderId], [o1].[Id], [o1].[Detail], [o1].[PeriodEnd], [o1].[PeriodStart], [o].[Id], [p].[Id], [o0].[ClientId], [o0].[Id] +SELECT [o3].[OrderClientId], [o3].[OrderId], [o3].[Id], [o3].[Detail], [o3].[PeriodEnd], [o3].[PeriodStart], [o].[Id], [p].[Id], [o1].[ClientId], [o1].[Id] FROM [OwnedPerson] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o] LEFT JOIN [Planet] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [p] ON [o].[PersonAddress_Country_PlanetId] = [p].[Id] -INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o0] ON [o].[Id] = [o0].[ClientId] -INNER JOIN [OrderDetail] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o0].[ClientId] = [o1].[OrderClientId] AND [o0].[Id] = [o1].[OrderId] -ORDER BY [o].[Id], [p].[Id], [o0].[ClientId], [o0].[Id] +INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o].[Id] = [o1].[ClientId] +INNER JOIN [OrderDetail] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o3] ON [o1].[ClientId] = [o3].[OrderClientId] AND [o1].[Id] = [o3].[OrderId] +ORDER BY [o].[Id], [p].[Id], [o1].[ClientId], [o1].[Id] """); } @@ -1212,20 +1212,20 @@ ORDER BY [o].[Id] """, // """ -SELECT [o0].[ClientId], [o0].[Id], [o0].[OrderDate], [o0].[PeriodEnd], [o0].[PeriodStart], [o].[Id] +SELECT [o1].[ClientId], [o1].[Id], [o1].[OrderDate], [o1].[PeriodEnd], [o1].[PeriodStart], [o].[Id] FROM [OwnedPerson] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o] -INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o0] ON [o].[Id] = [o0].[ClientId] +INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o].[Id] = [o1].[ClientId] WHERE [o].[Discriminator] = N'LeafA' -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """, // """ -SELECT [o1].[OrderClientId], [o1].[OrderId], [o1].[Id], [o1].[Detail], [o1].[PeriodEnd], [o1].[PeriodStart], [o].[Id], [o0].[ClientId], [o0].[Id] +SELECT [o3].[OrderClientId], [o3].[OrderId], [o3].[Id], [o3].[Detail], [o3].[PeriodEnd], [o3].[PeriodStart], [o].[Id], [o1].[ClientId], [o1].[Id] FROM [OwnedPerson] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o] -INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o0] ON [o].[Id] = [o0].[ClientId] -INNER JOIN [OrderDetail] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o0].[ClientId] = [o1].[OrderClientId] AND [o0].[Id] = [o1].[OrderId] +INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o].[Id] = [o1].[ClientId] +INNER JOIN [OrderDetail] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o3] ON [o1].[ClientId] = [o3].[OrderClientId] AND [o1].[Id] = [o3].[OrderId] WHERE [o].[Discriminator] = N'LeafA' -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """); } @@ -1242,20 +1242,20 @@ ORDER BY [o].[Id] """, // """ -SELECT [o0].[ClientId], [o0].[Id], [o0].[OrderDate], [o0].[PeriodEnd], [o0].[PeriodStart], [o].[Id] +SELECT [o1].[ClientId], [o1].[Id], [o1].[OrderDate], [o1].[PeriodEnd], [o1].[PeriodStart], [o].[Id] FROM [OwnedPerson] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o] -INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o0] ON [o].[Id] = [o0].[ClientId] +INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o].[Id] = [o1].[ClientId] WHERE [o].[Id] = 1 -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """, // """ -SELECT [o1].[OrderClientId], [o1].[OrderId], [o1].[Id], [o1].[Detail], [o1].[PeriodEnd], [o1].[PeriodStart], [o].[Id], [o0].[ClientId], [o0].[Id] +SELECT [o3].[OrderClientId], [o3].[OrderId], [o3].[Id], [o3].[Detail], [o3].[PeriodEnd], [o3].[PeriodStart], [o].[Id], [o1].[ClientId], [o1].[Id] FROM [OwnedPerson] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o] -INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o0] ON [o].[Id] = [o0].[ClientId] -INNER JOIN [OrderDetail] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o0].[ClientId] = [o1].[OrderClientId] AND [o0].[Id] = [o1].[OrderId] +INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o].[Id] = [o1].[ClientId] +INNER JOIN [OrderDetail] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o3] ON [o1].[ClientId] = [o3].[OrderClientId] AND [o1].[Id] = [o3].[OrderId] WHERE [o].[Id] = 1 -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """); } @@ -1272,20 +1272,20 @@ ORDER BY [o].[Id] """, // """ -SELECT [o0].[ClientId], [o0].[Id], [o0].[OrderDate], [o0].[PeriodEnd], [o0].[PeriodStart], [o].[Id] +SELECT [o1].[ClientId], [o1].[Id], [o1].[OrderDate], [o1].[PeriodEnd], [o1].[PeriodStart], [o].[Id] FROM [OwnedPerson] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o] -INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o0] ON [o].[Id] = [o0].[ClientId] +INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o].[Id] = [o1].[ClientId] WHERE [o].[Name] = N'Mona Cy' -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """, // """ -SELECT [o1].[OrderClientId], [o1].[OrderId], [o1].[Id], [o1].[Detail], [o1].[PeriodEnd], [o1].[PeriodStart], [o].[Id], [o0].[ClientId], [o0].[Id] +SELECT [o3].[OrderClientId], [o3].[OrderId], [o3].[Id], [o3].[Detail], [o3].[PeriodEnd], [o3].[PeriodStart], [o].[Id], [o1].[ClientId], [o1].[Id] FROM [OwnedPerson] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o] -INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o0] ON [o].[Id] = [o0].[ClientId] -INNER JOIN [OrderDetail] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o0].[ClientId] = [o1].[OrderClientId] AND [o0].[Id] = [o1].[OrderId] +INNER JOIN [Order] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o1] ON [o].[Id] = [o1].[ClientId] +INNER JOIN [OrderDetail] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o3] ON [o1].[ClientId] = [o3].[OrderClientId] AND [o1].[Id] = [o3].[OrderId] WHERE [o].[Name] = N'Mona Cy' -ORDER BY [o].[Id], [o0].[ClientId], [o0].[Id] +ORDER BY [o].[Id], [o1].[ClientId], [o1].[Id] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/UdfDbFunctionSqlServerTests.cs b/test/EFCore.SqlServer.FunctionalTests/Query/UdfDbFunctionSqlServerTests.cs index 6ec09bc44a5..5e071bd77c2 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/UdfDbFunctionSqlServerTests.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/UdfDbFunctionSqlServerTests.cs @@ -931,16 +931,16 @@ public override void TVF_with_argument_being_a_subquery_with_navigation_in_proje AssertSql( """ SELECT [c0].[LastName], ( - SELECT COALESCE(SUM(CAST(LEN([c2].[FirstName]) AS int)), 0) + SELECT COALESCE(SUM(CAST(LEN([c3].[FirstName]) AS int)), 0) FROM [Orders] AS [o0] INNER JOIN [Customers] AS [c1] ON [o0].[CustomerId] = [c1].[Id] - INNER JOIN [Customers] AS [c2] ON [o0].[CustomerId] = [c2].[Id] + INNER JOIN [Customers] AS [c3] ON [o0].[CustomerId] = [c3].[Id] WHERE 25 NOT IN ( SELECT [g0].[CustomerId] FROM [dbo].[GetOrdersWithMultipleProducts](( - SELECT TOP(1) [c3].[Id] - FROM [Customers] AS [c3] - ORDER BY [c3].[Id])) AS [g0] + SELECT TOP(1) [c2].[Id] + FROM [Customers] AS [c2] + ORDER BY [c2].[Id])) AS [g0] ) AND ([c0].[LastName] = [c1].[LastName] OR ([c0].[LastName] IS NULL AND [c1].[LastName] IS NULL))) AS [SumOfLengths] FROM [Orders] AS [o] INNER JOIN [Customers] AS [c0] ON [o].[CustomerId] = [c0].[Id] diff --git a/test/EFCore.SqlServer.FunctionalTests/TPTTableSplittingSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/TPTTableSplittingSqlServerTest.cs index 90bd53360df..82aa384d319 100644 --- a/test/EFCore.SqlServer.FunctionalTests/TPTTableSplittingSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/TPTTableSplittingSqlServerTest.cs @@ -39,10 +39,10 @@ LEFT JOIN ( SELECT [p0].[Name], [p0].[Computed], [p0].[Description], CASE WHEN [s].[VehicleName] IS NOT NULL THEN N'SolidRocket' WHEN [i].[VehicleName] IS NOT NULL THEN N'IntermittentCombustionEngine' - WHEN [c1].[VehicleName] IS NOT NULL THEN N'ContinuousCombustionEngine' + WHEN [c0].[VehicleName] IS NOT NULL THEN N'ContinuousCombustionEngine' END AS [Discriminator] FROM [PoweredVehicles] AS [p0] - LEFT JOIN [ContinuousCombustionEngines] AS [c1] ON [p0].[Name] = [c1].[VehicleName] + LEFT JOIN [ContinuousCombustionEngines] AS [c0] ON [p0].[Name] = [c0].[VehicleName] LEFT JOIN [IntermittentCombustionEngines] AS [i] ON [p0].[Name] = [i].[VehicleName] LEFT JOIN [SolidRockets] AS [s] ON [p0].[Name] = [s].[VehicleName] WHERE [p0].[Computed] IS NOT NULL @@ -50,12 +50,12 @@ WHERE [p0].[Computed] IS NOT NULL WHEN [t1].[Computed] IS NOT NULL THEN [t1].[Name] END LEFT JOIN ( - SELECT [c2].[VehicleName], [c2].[Capacity], [c2].[FuelType], [s0].[GrainGeometry], CASE + SELECT [c1].[VehicleName], [c1].[Capacity], [c1].[FuelType], [s0].[GrainGeometry], CASE WHEN [s0].[VehicleName] IS NOT NULL THEN N'SolidFuelTank' END AS [Discriminator] - FROM [CombustionEngines] AS [c2] - LEFT JOIN [SolidFuelTanks] AS [s0] ON [c2].[VehicleName] = [s0].[VehicleName] - WHERE [c2].[Capacity] IS NOT NULL + FROM [CombustionEngines] AS [c1] + LEFT JOIN [SolidFuelTanks] AS [s0] ON [c1].[VehicleName] = [s0].[VehicleName] + WHERE [c1].[Capacity] IS NOT NULL ) AS [t2] ON [t1].[Name] = CASE WHEN [t2].[Capacity] IS NOT NULL THEN [t2].[VehicleName] END diff --git a/test/EFCore.Sqlite.FunctionalTests/BulkUpdates/NorthwindBulkUpdatesSqliteTest.cs b/test/EFCore.Sqlite.FunctionalTests/BulkUpdates/NorthwindBulkUpdatesSqliteTest.cs index ce7ae359902..23a529cd717 100644 --- a/test/EFCore.Sqlite.FunctionalTests/BulkUpdates/NorthwindBulkUpdatesSqliteTest.cs +++ b/test/EFCore.Sqlite.FunctionalTests/BulkUpdates/NorthwindBulkUpdatesSqliteTest.cs @@ -231,12 +231,12 @@ SELECT 1 INNER JOIN "Orders" AS "o1" ON "o0"."OrderID" = "o1"."OrderID" WHERE "o1"."OrderID" IN ( SELECT ( - SELECT "o3"."OrderID" - FROM "Orders" AS "o3" - WHERE "o2"."CustomerID" = "o3"."CustomerID" OR ("o2"."CustomerID" IS NULL AND "o3"."CustomerID" IS NULL) + SELECT "o2"."OrderID" + FROM "Orders" AS "o2" + WHERE "o3"."CustomerID" = "o2"."CustomerID" OR ("o3"."CustomerID" IS NULL AND "o2"."CustomerID" IS NULL) LIMIT 1) - FROM "Orders" AS "o2" - GROUP BY "o2"."CustomerID" + FROM "Orders" AS "o3" + GROUP BY "o3"."CustomerID" HAVING COUNT(*) > 9 ) AND "o0"."OrderID" = "o"."OrderID" AND "o0"."ProductID" = "o"."ProductID") """); @@ -703,15 +703,15 @@ public override async Task Update_Where_Skip_set_constant(bool async) """ @__p_0='4' -UPDATE "Customers" AS "c" +UPDATE "Customers" AS "c0" SET "ContactName" = 'Updated' FROM ( - SELECT "c0"."CustomerID" - FROM "Customers" AS "c0" - WHERE "c0"."CustomerID" LIKE 'F%' + SELECT "c"."CustomerID" + FROM "Customers" AS "c" + WHERE "c"."CustomerID" LIKE 'F%' LIMIT -1 OFFSET @__p_0 ) AS "t" -WHERE "c"."CustomerID" = "t"."CustomerID" +WHERE "c0"."CustomerID" = "t"."CustomerID" """); } @@ -723,15 +723,15 @@ public override async Task Update_Where_Take_set_constant(bool async) """ @__p_0='4' -UPDATE "Customers" AS "c" +UPDATE "Customers" AS "c0" SET "ContactName" = 'Updated' FROM ( - SELECT "c0"."CustomerID" - FROM "Customers" AS "c0" - WHERE "c0"."CustomerID" LIKE 'F%' + SELECT "c"."CustomerID" + FROM "Customers" AS "c" + WHERE "c"."CustomerID" LIKE 'F%' LIMIT @__p_0 ) AS "t" -WHERE "c"."CustomerID" = "t"."CustomerID" +WHERE "c0"."CustomerID" = "t"."CustomerID" """); } @@ -744,15 +744,15 @@ public override async Task Update_Where_Skip_Take_set_constant(bool async) @__p_1='4' @__p_0='2' -UPDATE "Customers" AS "c" +UPDATE "Customers" AS "c0" SET "ContactName" = 'Updated' FROM ( - SELECT "c0"."CustomerID" - FROM "Customers" AS "c0" - WHERE "c0"."CustomerID" LIKE 'F%' + SELECT "c"."CustomerID" + FROM "Customers" AS "c" + WHERE "c"."CustomerID" LIKE 'F%' LIMIT @__p_1 OFFSET @__p_0 ) AS "t" -WHERE "c"."CustomerID" = "t"."CustomerID" +WHERE "c0"."CustomerID" = "t"."CustomerID" """); } @@ -762,14 +762,14 @@ public override async Task Update_Where_OrderBy_set_constant(bool async) AssertExecuteUpdateSql( """ -UPDATE "Customers" AS "c" +UPDATE "Customers" AS "c0" SET "ContactName" = 'Updated' FROM ( - SELECT "c0"."CustomerID" - FROM "Customers" AS "c0" - WHERE "c0"."CustomerID" LIKE 'F%' + SELECT "c"."CustomerID" + FROM "Customers" AS "c" + WHERE "c"."CustomerID" LIKE 'F%' ) AS "t" -WHERE "c"."CustomerID" = "t"."CustomerID" +WHERE "c0"."CustomerID" = "t"."CustomerID" """); } @@ -781,16 +781,16 @@ public override async Task Update_Where_OrderBy_Skip_set_constant(bool async) """ @__p_0='4' -UPDATE "Customers" AS "c" +UPDATE "Customers" AS "c0" SET "ContactName" = 'Updated' FROM ( - SELECT "c0"."CustomerID" - FROM "Customers" AS "c0" - WHERE "c0"."CustomerID" LIKE 'F%' - ORDER BY "c0"."City" + SELECT "c"."CustomerID" + FROM "Customers" AS "c" + WHERE "c"."CustomerID" LIKE 'F%' + ORDER BY "c"."City" LIMIT -1 OFFSET @__p_0 ) AS "t" -WHERE "c"."CustomerID" = "t"."CustomerID" +WHERE "c0"."CustomerID" = "t"."CustomerID" """); } @@ -802,16 +802,16 @@ public override async Task Update_Where_OrderBy_Take_set_constant(bool async) """ @__p_0='4' -UPDATE "Customers" AS "c" +UPDATE "Customers" AS "c0" SET "ContactName" = 'Updated' FROM ( - SELECT "c0"."CustomerID" - FROM "Customers" AS "c0" - WHERE "c0"."CustomerID" LIKE 'F%' - ORDER BY "c0"."City" + SELECT "c"."CustomerID" + FROM "Customers" AS "c" + WHERE "c"."CustomerID" LIKE 'F%' + ORDER BY "c"."City" LIMIT @__p_0 ) AS "t" -WHERE "c"."CustomerID" = "t"."CustomerID" +WHERE "c0"."CustomerID" = "t"."CustomerID" """); } @@ -824,16 +824,16 @@ public override async Task Update_Where_OrderBy_Skip_Take_set_constant(bool asyn @__p_1='4' @__p_0='2' -UPDATE "Customers" AS "c" +UPDATE "Customers" AS "c0" SET "ContactName" = 'Updated' FROM ( - SELECT "c0"."CustomerID" - FROM "Customers" AS "c0" - WHERE "c0"."CustomerID" LIKE 'F%' - ORDER BY "c0"."City" + SELECT "c"."CustomerID" + FROM "Customers" AS "c" + WHERE "c"."CustomerID" LIKE 'F%' + ORDER BY "c"."City" LIMIT @__p_1 OFFSET @__p_0 ) AS "t" -WHERE "c"."CustomerID" = "t"."CustomerID" +WHERE "c0"."CustomerID" = "t"."CustomerID" """); } @@ -846,21 +846,21 @@ public override async Task Update_Where_OrderBy_Skip_Take_Skip_Take_set_constant @__p_1='6' @__p_0='2' -UPDATE "Customers" AS "c" +UPDATE "Customers" AS "c0" SET "ContactName" = 'Updated' FROM ( SELECT "t"."CustomerID" FROM ( - SELECT "c0"."CustomerID", "c0"."City" - FROM "Customers" AS "c0" - WHERE "c0"."CustomerID" LIKE 'F%' - ORDER BY "c0"."City" + SELECT "c"."CustomerID", "c"."City" + FROM "Customers" AS "c" + WHERE "c"."CustomerID" LIKE 'F%' + ORDER BY "c"."City" LIMIT @__p_1 OFFSET @__p_0 ) AS "t" ORDER BY "t"."City" LIMIT @__p_0 OFFSET @__p_0 ) AS "t0" -WHERE "c"."CustomerID" = "t0"."CustomerID" +WHERE "c0"."CustomerID" = "t0"."CustomerID" """); } @@ -937,14 +937,14 @@ public override async Task Update_Where_Distinct_set_constant(bool async) AssertExecuteUpdateSql( """ -UPDATE "Customers" AS "c" +UPDATE "Customers" AS "c0" SET "ContactName" = 'Updated' FROM ( - SELECT DISTINCT "c0"."CustomerID", "c0"."Address", "c0"."City", "c0"."CompanyName", "c0"."ContactName", "c0"."ContactTitle", "c0"."Country", "c0"."Fax", "c0"."Phone", "c0"."PostalCode", "c0"."Region" - FROM "Customers" AS "c0" - WHERE "c0"."CustomerID" LIKE 'F%' + SELECT DISTINCT "c"."CustomerID", "c"."Address", "c"."City", "c"."CompanyName", "c"."ContactName", "c"."ContactTitle", "c"."Country", "c"."Fax", "c"."Phone", "c"."PostalCode", "c"."Region" + FROM "Customers" AS "c" + WHERE "c"."CustomerID" LIKE 'F%' ) AS "t" -WHERE "c"."CustomerID" = "t"."CustomerID" +WHERE "c0"."CustomerID" = "t"."CustomerID" """); } @@ -954,15 +954,15 @@ public override async Task Update_Where_using_navigation_set_null(bool async) AssertExecuteUpdateSql( """ -UPDATE "Orders" AS "o" +UPDATE "Orders" AS "o0" SET "OrderDate" = NULL FROM ( - SELECT "o0"."OrderID" - FROM "Orders" AS "o0" - LEFT JOIN "Customers" AS "c" ON "o0"."CustomerID" = "c"."CustomerID" + SELECT "o"."OrderID" + FROM "Orders" AS "o" + LEFT JOIN "Customers" AS "c" ON "o"."CustomerID" = "c"."CustomerID" WHERE "c"."City" = 'Seattle' ) AS "t" -WHERE "o"."OrderID" = "t"."OrderID" +WHERE "o0"."OrderID" = "t"."OrderID" """); } @@ -1111,18 +1111,18 @@ public override async Task Update_Union_set_constant(bool async) AssertExecuteUpdateSql( """ -UPDATE "Customers" AS "c" +UPDATE "Customers" AS "c1" SET "ContactName" = 'Updated' FROM ( + SELECT "c"."CustomerID", "c"."Address", "c"."City", "c"."CompanyName", "c"."ContactName", "c"."ContactTitle", "c"."Country", "c"."Fax", "c"."Phone", "c"."PostalCode", "c"."Region" + FROM "Customers" AS "c" + WHERE "c"."CustomerID" LIKE 'F%' + UNION SELECT "c0"."CustomerID", "c0"."Address", "c0"."City", "c0"."CompanyName", "c0"."ContactName", "c0"."ContactTitle", "c0"."Country", "c0"."Fax", "c0"."Phone", "c0"."PostalCode", "c0"."Region" FROM "Customers" AS "c0" - WHERE "c0"."CustomerID" LIKE 'F%' - UNION - SELECT "c1"."CustomerID", "c1"."Address", "c1"."City", "c1"."CompanyName", "c1"."ContactName", "c1"."ContactTitle", "c1"."Country", "c1"."Fax", "c1"."Phone", "c1"."PostalCode", "c1"."Region" - FROM "Customers" AS "c1" - WHERE "c1"."CustomerID" LIKE 'A%' + WHERE "c0"."CustomerID" LIKE 'A%' ) AS "t" -WHERE "c"."CustomerID" = "t"."CustomerID" +WHERE "c1"."CustomerID" = "t"."CustomerID" """); } @@ -1132,18 +1132,18 @@ public override async Task Update_Concat_set_constant(bool async) AssertExecuteUpdateSql( """ -UPDATE "Customers" AS "c" +UPDATE "Customers" AS "c1" SET "ContactName" = 'Updated' FROM ( + SELECT "c"."CustomerID" + FROM "Customers" AS "c" + WHERE "c"."CustomerID" LIKE 'F%' + UNION ALL SELECT "c0"."CustomerID" FROM "Customers" AS "c0" - WHERE "c0"."CustomerID" LIKE 'F%' - UNION ALL - SELECT "c1"."CustomerID" - FROM "Customers" AS "c1" - WHERE "c1"."CustomerID" LIKE 'A%' + WHERE "c0"."CustomerID" LIKE 'A%' ) AS "t" -WHERE "c"."CustomerID" = "t"."CustomerID" +WHERE "c1"."CustomerID" = "t"."CustomerID" """); } @@ -1153,18 +1153,18 @@ public override async Task Update_Except_set_constant(bool async) AssertExecuteUpdateSql( """ -UPDATE "Customers" AS "c" +UPDATE "Customers" AS "c1" SET "ContactName" = 'Updated' FROM ( + SELECT "c"."CustomerID", "c"."Address", "c"."City", "c"."CompanyName", "c"."ContactName", "c"."ContactTitle", "c"."Country", "c"."Fax", "c"."Phone", "c"."PostalCode", "c"."Region" + FROM "Customers" AS "c" + WHERE "c"."CustomerID" LIKE 'F%' + EXCEPT SELECT "c0"."CustomerID", "c0"."Address", "c0"."City", "c0"."CompanyName", "c0"."ContactName", "c0"."ContactTitle", "c0"."Country", "c0"."Fax", "c0"."Phone", "c0"."PostalCode", "c0"."Region" FROM "Customers" AS "c0" - WHERE "c0"."CustomerID" LIKE 'F%' - EXCEPT - SELECT "c1"."CustomerID", "c1"."Address", "c1"."City", "c1"."CompanyName", "c1"."ContactName", "c1"."ContactTitle", "c1"."Country", "c1"."Fax", "c1"."Phone", "c1"."PostalCode", "c1"."Region" - FROM "Customers" AS "c1" - WHERE "c1"."CustomerID" LIKE 'A%' + WHERE "c0"."CustomerID" LIKE 'A%' ) AS "t" -WHERE "c"."CustomerID" = "t"."CustomerID" +WHERE "c1"."CustomerID" = "t"."CustomerID" """); } @@ -1174,18 +1174,18 @@ public override async Task Update_Intersect_set_constant(bool async) AssertExecuteUpdateSql( """ -UPDATE "Customers" AS "c" +UPDATE "Customers" AS "c1" SET "ContactName" = 'Updated' FROM ( + SELECT "c"."CustomerID", "c"."Address", "c"."City", "c"."CompanyName", "c"."ContactName", "c"."ContactTitle", "c"."Country", "c"."Fax", "c"."Phone", "c"."PostalCode", "c"."Region" + FROM "Customers" AS "c" + WHERE "c"."CustomerID" LIKE 'F%' + INTERSECT SELECT "c0"."CustomerID", "c0"."Address", "c0"."City", "c0"."CompanyName", "c0"."ContactName", "c0"."ContactTitle", "c0"."Country", "c0"."Fax", "c0"."Phone", "c0"."PostalCode", "c0"."Region" FROM "Customers" AS "c0" - WHERE "c0"."CustomerID" LIKE 'F%' - INTERSECT - SELECT "c1"."CustomerID", "c1"."Address", "c1"."City", "c1"."CompanyName", "c1"."ContactName", "c1"."ContactTitle", "c1"."Country", "c1"."Fax", "c1"."Phone", "c1"."PostalCode", "c1"."Region" - FROM "Customers" AS "c1" - WHERE "c1"."CustomerID" LIKE 'A%' + WHERE "c0"."CustomerID" LIKE 'A%' ) AS "t" -WHERE "c"."CustomerID" = "t"."CustomerID" +WHERE "c1"."CustomerID" = "t"."CustomerID" """); } @@ -1212,19 +1212,19 @@ public override async Task Update_with_left_join_set_constant(bool async) AssertExecuteUpdateSql( """ -UPDATE "Customers" AS "c" +UPDATE "Customers" AS "c0" SET "ContactName" = 'Updated' FROM ( - SELECT "c0"."CustomerID" - FROM "Customers" AS "c0" + SELECT "c"."CustomerID" + FROM "Customers" AS "c" LEFT JOIN ( SELECT "o"."CustomerID" FROM "Orders" AS "o" WHERE "o"."OrderID" < 10300 - ) AS "t" ON "c0"."CustomerID" = "t"."CustomerID" - WHERE "c0"."CustomerID" LIKE 'F%' + ) AS "t" ON "c"."CustomerID" = "t"."CustomerID" + WHERE "c"."CustomerID" LIKE 'F%' ) AS "t0" -WHERE "c"."CustomerID" = "t0"."CustomerID" +WHERE "c0"."CustomerID" = "t0"."CustomerID" """); } @@ -1303,19 +1303,19 @@ public override async Task Update_Where_SelectMany_subquery_set_null(bool async) AssertExecuteUpdateSql( """ -UPDATE "Orders" AS "o" +UPDATE "Orders" AS "o0" SET "OrderDate" = NULL FROM ( SELECT "t"."OrderID" FROM "Customers" AS "c" INNER JOIN ( - SELECT "o0"."OrderID", "o0"."CustomerID" - FROM "Orders" AS "o0" - WHERE CAST(strftime('%Y', "o0"."OrderDate") AS INTEGER) = 1997 + SELECT "o"."OrderID", "o"."CustomerID" + FROM "Orders" AS "o" + WHERE CAST(strftime('%Y', "o"."OrderDate") AS INTEGER) = 1997 ) AS "t" ON "c"."CustomerID" = "t"."CustomerID" WHERE "c"."CustomerID" LIKE 'F%' ) AS "t0" -WHERE "o"."OrderID" = "t0"."OrderID" +WHERE "o0"."OrderID" = "t0"."OrderID" """); } diff --git a/test/EFCore.Sqlite.FunctionalTests/BulkUpdates/TPTFiltersInheritanceBulkUpdatesSqliteTest.cs b/test/EFCore.Sqlite.FunctionalTests/BulkUpdates/TPTFiltersInheritanceBulkUpdatesSqliteTest.cs index 77bdac0ab8d..653be674774 100644 --- a/test/EFCore.Sqlite.FunctionalTests/BulkUpdates/TPTFiltersInheritanceBulkUpdatesSqliteTest.cs +++ b/test/EFCore.Sqlite.FunctionalTests/BulkUpdates/TPTFiltersInheritanceBulkUpdatesSqliteTest.cs @@ -98,14 +98,14 @@ public override async Task Update_base_type(bool async) AssertExecuteUpdateSql( """ -UPDATE "Animals" AS "a" +UPDATE "Animals" AS "a0" SET "Name" = 'Animal' FROM ( - SELECT "a0"."Id" - FROM "Animals" AS "a0" - WHERE "a0"."CountryId" = 1 AND "a0"."Name" = 'Great spotted kiwi' + SELECT "a"."Id" + FROM "Animals" AS "a" + WHERE "a"."CountryId" = 1 AND "a"."Name" = 'Great spotted kiwi' ) AS "t" -WHERE "a"."Id" = "t"."Id" +WHERE "a0"."Id" = "t"."Id" """); } diff --git a/test/EFCore.Sqlite.FunctionalTests/BulkUpdates/TPTInheritanceBulkUpdatesSqliteTest.cs b/test/EFCore.Sqlite.FunctionalTests/BulkUpdates/TPTInheritanceBulkUpdatesSqliteTest.cs index 61b897a3f34..8c3a7859e65 100644 --- a/test/EFCore.Sqlite.FunctionalTests/BulkUpdates/TPTInheritanceBulkUpdatesSqliteTest.cs +++ b/test/EFCore.Sqlite.FunctionalTests/BulkUpdates/TPTInheritanceBulkUpdatesSqliteTest.cs @@ -83,14 +83,14 @@ public override async Task Update_base_type(bool async) AssertExecuteUpdateSql( """ -UPDATE "Animals" AS "a" +UPDATE "Animals" AS "a0" SET "Name" = 'Animal' FROM ( - SELECT "a0"."Id" - FROM "Animals" AS "a0" - WHERE "a0"."Name" = 'Great spotted kiwi' + SELECT "a"."Id" + FROM "Animals" AS "a" + WHERE "a"."Name" = 'Great spotted kiwi' ) AS "t" -WHERE "a"."Id" = "t"."Id" +WHERE "a0"."Id" = "t"."Id" """); } diff --git a/test/EFCore.Sqlite.FunctionalTests/Query/Ef6GroupBySqliteTest.cs b/test/EFCore.Sqlite.FunctionalTests/Query/Ef6GroupBySqliteTest.cs index 894cdd4cbdc..22327c57383 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Query/Ef6GroupBySqliteTest.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Query/Ef6GroupBySqliteTest.cs @@ -33,37 +33,13 @@ public override async Task Min_Grouped_from_LINQ_101(bool async) () => base.Min_Grouped_from_LINQ_101(async))).Message); public override async Task Whats_new_2021_sample_3(bool async) -#if DEBUG - // GroupBy debug assert. Issue #26104. - => Assert.StartsWith( - "Missing alias in the list", - (await Assert.ThrowsAsync( - () => base.Whats_new_2021_sample_3(async))).Message); -#else => await base.Whats_new_2021_sample_3(async); -#endif public override async Task Whats_new_2021_sample_5(bool async) -#if DEBUG - // GroupBy debug assert. Issue #26104. - => Assert.StartsWith( - "Missing alias in the list", - (await Assert.ThrowsAsync( - () => base.Whats_new_2021_sample_5(async))).Message); -#else => await base.Whats_new_2021_sample_5(async); -#endif public override async Task Whats_new_2021_sample_6(bool async) -#if DEBUG - // GroupBy debug assert. Issue #26104. - => Assert.StartsWith( - "Missing alias in the list", - (await Assert.ThrowsAsync( - () => base.Whats_new_2021_sample_6(async))).Message); -#else => await base.Whats_new_2021_sample_6(async); -#endif public override async Task Group_Join_from_LINQ_101(bool async) => Assert.Equal( diff --git a/test/EFCore.Sqlite.FunctionalTests/Query/GearsOfWarQuerySqliteTest.cs b/test/EFCore.Sqlite.FunctionalTests/Query/GearsOfWarQuerySqliteTest.cs index 54a4c38531f..53627c782e1 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Query/GearsOfWarQuerySqliteTest.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Query/GearsOfWarQuerySqliteTest.cs @@ -874,21 +874,21 @@ public override async Task Correlated_collections_deeply_nested_left_join(bool a AssertSql( """ -SELECT "t"."Id", "g"."Nickname", "g"."SquadId", "s"."Id", "t0"."Nickname", "t0"."SquadId", "t0"."Id", "t0"."AmmunitionType", "t0"."IsAutomatic", "t0"."Name", "t0"."OwnerFullName", "t0"."SynergyWithId" +SELECT "t"."Id", "g"."Nickname", "g"."SquadId", "s"."Id", "t1"."Nickname", "t1"."SquadId", "t1"."Id", "t1"."AmmunitionType", "t1"."IsAutomatic", "t1"."Name", "t1"."OwnerFullName", "t1"."SynergyWithId" FROM "Tags" AS "t" LEFT JOIN "Gears" AS "g" ON "t"."GearNickName" = "g"."Nickname" LEFT JOIN "Squads" AS "s" ON "g"."SquadId" = "s"."Id" LEFT JOIN ( - SELECT "g0"."Nickname", "g0"."SquadId", "t1"."Id", "t1"."AmmunitionType", "t1"."IsAutomatic", "t1"."Name", "t1"."OwnerFullName", "t1"."SynergyWithId" + SELECT "g0"."Nickname", "g0"."SquadId", "t0"."Id", "t0"."AmmunitionType", "t0"."IsAutomatic", "t0"."Name", "t0"."OwnerFullName", "t0"."SynergyWithId" FROM "Gears" AS "g0" LEFT JOIN ( SELECT "w"."Id", "w"."AmmunitionType", "w"."IsAutomatic", "w"."Name", "w"."OwnerFullName", "w"."SynergyWithId" FROM "Weapons" AS "w" WHERE "w"."IsAutomatic" - ) AS "t1" ON "g0"."FullName" = "t1"."OwnerFullName" + ) AS "t0" ON "g0"."FullName" = "t0"."OwnerFullName" WHERE "g0"."HasSoulPatch" -) AS "t0" ON "s"."Id" = "t0"."SquadId" -ORDER BY "t"."Note", "g"."Nickname" DESC, "t"."Id", "g"."SquadId", "s"."Id", "t0"."Nickname", "t0"."SquadId" +) AS "t1" ON "s"."Id" = "t1"."SquadId" +ORDER BY "t"."Note", "g"."Nickname" DESC, "t"."Id", "g"."SquadId", "s"."Id", "t1"."Nickname", "t1"."SquadId" """); } @@ -1219,20 +1219,20 @@ public override async Task Anonymous_projection_take_followed_by_projecting_sing """ @__p_0='25' -SELECT "t0"."Id", "t0"."AmmunitionType", "t0"."IsAutomatic", "t0"."Name", "t0"."OwnerFullName", "t0"."SynergyWithId" +SELECT "t1"."Id", "t1"."AmmunitionType", "t1"."IsAutomatic", "t1"."Name", "t1"."OwnerFullName", "t1"."SynergyWithId" FROM ( SELECT "g"."FullName" FROM "Gears" AS "g" LIMIT @__p_0 ) AS "t" LEFT JOIN ( - SELECT "t1"."Id", "t1"."AmmunitionType", "t1"."IsAutomatic", "t1"."Name", "t1"."OwnerFullName", "t1"."SynergyWithId" + SELECT "t0"."Id", "t0"."AmmunitionType", "t0"."IsAutomatic", "t0"."Name", "t0"."OwnerFullName", "t0"."SynergyWithId" FROM ( SELECT "w"."Id", "w"."AmmunitionType", "w"."IsAutomatic", "w"."Name", "w"."OwnerFullName", "w"."SynergyWithId", ROW_NUMBER() OVER(PARTITION BY "w"."OwnerFullName" ORDER BY "w"."Id") AS "row" FROM "Weapons" AS "w" - ) AS "t1" - WHERE "t1"."row" <= 1 -) AS "t0" ON "t"."FullName" = "t0"."OwnerFullName" + ) AS "t0" + WHERE "t0"."row" <= 1 +) AS "t1" ON "t"."FullName" = "t1"."OwnerFullName" """); } @@ -2081,21 +2081,21 @@ public override async Task Group_by_with_include_with_entity_in_result_selector( AssertSql( """ -SELECT "t"."Rank", "t"."c", "t0"."Nickname", "t0"."SquadId", "t0"."AssignedCityName", "t0"."CityOfBirthName", "t0"."Discriminator", "t0"."FullName", "t0"."HasSoulPatch", "t0"."LeaderNickname", "t0"."LeaderSquadId", "t0"."Rank", "t0"."Name", "t0"."Location", "t0"."Nation" +SELECT "t"."Rank", "t"."c", "t1"."Nickname", "t1"."SquadId", "t1"."AssignedCityName", "t1"."CityOfBirthName", "t1"."Discriminator", "t1"."FullName", "t1"."HasSoulPatch", "t1"."LeaderNickname", "t1"."LeaderSquadId", "t1"."Rank", "t1"."Name", "t1"."Location", "t1"."Nation" FROM ( SELECT "g"."Rank", COUNT(*) AS "c" FROM "Gears" AS "g" GROUP BY "g"."Rank" ) AS "t" LEFT JOIN ( - SELECT "t1"."Nickname", "t1"."SquadId", "t1"."AssignedCityName", "t1"."CityOfBirthName", "t1"."Discriminator", "t1"."FullName", "t1"."HasSoulPatch", "t1"."LeaderNickname", "t1"."LeaderSquadId", "t1"."Rank", "t1"."Name", "t1"."Location", "t1"."Nation" + SELECT "t0"."Nickname", "t0"."SquadId", "t0"."AssignedCityName", "t0"."CityOfBirthName", "t0"."Discriminator", "t0"."FullName", "t0"."HasSoulPatch", "t0"."LeaderNickname", "t0"."LeaderSquadId", "t0"."Rank", "t0"."Name", "t0"."Location", "t0"."Nation" FROM ( SELECT "g0"."Nickname", "g0"."SquadId", "g0"."AssignedCityName", "g0"."CityOfBirthName", "g0"."Discriminator", "g0"."FullName", "g0"."HasSoulPatch", "g0"."LeaderNickname", "g0"."LeaderSquadId", "g0"."Rank", "c"."Name", "c"."Location", "c"."Nation", ROW_NUMBER() OVER(PARTITION BY "g0"."Rank" ORDER BY "g0"."Nickname") AS "row" FROM "Gears" AS "g0" INNER JOIN "Cities" AS "c" ON "g0"."CityOfBirthName" = "c"."Name" - ) AS "t1" - WHERE "t1"."row" <= 1 -) AS "t0" ON "t"."Rank" = "t0"."Rank" + ) AS "t0" + WHERE "t0"."row" <= 1 +) AS "t1" ON "t"."Rank" = "t1"."Rank" ORDER BY "t"."Rank" """); } @@ -3308,19 +3308,19 @@ public override async Task Project_collection_navigation_nested_with_take_compos AssertSql( """ -SELECT "t"."Id", "g"."Nickname", "g"."SquadId", "t0"."Nickname", "t0"."SquadId", "t0"."AssignedCityName", "t0"."CityOfBirthName", "t0"."Discriminator", "t0"."FullName", "t0"."HasSoulPatch", "t0"."LeaderNickname", "t0"."LeaderSquadId", "t0"."Rank" +SELECT "t"."Id", "g"."Nickname", "g"."SquadId", "t1"."Nickname", "t1"."SquadId", "t1"."AssignedCityName", "t1"."CityOfBirthName", "t1"."Discriminator", "t1"."FullName", "t1"."HasSoulPatch", "t1"."LeaderNickname", "t1"."LeaderSquadId", "t1"."Rank" FROM "Tags" AS "t" LEFT JOIN "Gears" AS "g" ON "t"."GearNickName" = "g"."Nickname" AND "t"."GearSquadId" = "g"."SquadId" LEFT JOIN ( - SELECT "t1"."Nickname", "t1"."SquadId", "t1"."AssignedCityName", "t1"."CityOfBirthName", "t1"."Discriminator", "t1"."FullName", "t1"."HasSoulPatch", "t1"."LeaderNickname", "t1"."LeaderSquadId", "t1"."Rank" + SELECT "t0"."Nickname", "t0"."SquadId", "t0"."AssignedCityName", "t0"."CityOfBirthName", "t0"."Discriminator", "t0"."FullName", "t0"."HasSoulPatch", "t0"."LeaderNickname", "t0"."LeaderSquadId", "t0"."Rank" FROM ( SELECT "g0"."Nickname", "g0"."SquadId", "g0"."AssignedCityName", "g0"."CityOfBirthName", "g0"."Discriminator", "g0"."FullName", "g0"."HasSoulPatch", "g0"."LeaderNickname", "g0"."LeaderSquadId", "g0"."Rank", ROW_NUMBER() OVER(PARTITION BY "g0"."LeaderNickname", "g0"."LeaderSquadId" ORDER BY "g0"."Nickname", "g0"."SquadId") AS "row" FROM "Gears" AS "g0" - ) AS "t1" - WHERE "t1"."row" <= 50 -) AS "t0" ON ("g"."Nickname" = "t0"."LeaderNickname" OR ("g"."Nickname" IS NULL AND "t0"."LeaderNickname" IS NULL)) AND "g"."SquadId" = "t0"."LeaderSquadId" + ) AS "t0" + WHERE "t0"."row" <= 50 +) AS "t1" ON ("g"."Nickname" = "t1"."LeaderNickname" OR ("g"."Nickname" IS NULL AND "t1"."LeaderNickname" IS NULL)) AND "g"."SquadId" = "t1"."LeaderSquadId" WHERE "g"."Discriminator" = 'Officer' -ORDER BY "t"."Id", "g"."Nickname", "g"."SquadId", "t0"."Nickname" +ORDER BY "t"."Id", "g"."Nickname", "g"."SquadId", "t1"."Nickname" """); } @@ -6861,12 +6861,12 @@ public override async Task Correlated_collections_multiple_nested_complex_collec AssertSql( """ -SELECT "g"."FullName", "g"."Nickname", "g"."SquadId", "t"."Id", "g1"."Nickname", "g1"."SquadId", "t0"."FullName", "t0"."Nickname", "t0"."SquadId", "t0"."Id", "t0"."Nickname0", "t0"."SquadId0", "t0"."Id0", "t0"."Name", "t0"."IsAutomatic", "t0"."Id1", "t0"."Nickname00", "t0"."HasSoulPatch", "t0"."SquadId00", "t2"."Id", "t2"."AmmunitionType", "t2"."IsAutomatic", "t2"."Name", "t2"."OwnerFullName", "t2"."SynergyWithId", "t2"."Nickname", "t2"."SquadId" +SELECT "g"."FullName", "g"."Nickname", "g"."SquadId", "t"."Id", "g1"."Nickname", "g1"."SquadId", "t1"."FullName", "t1"."Nickname", "t1"."SquadId", "t1"."Id", "t1"."Nickname0", "t1"."SquadId0", "t1"."Id0", "t1"."Name", "t1"."IsAutomatic", "t1"."Id1", "t1"."Nickname00", "t1"."HasSoulPatch", "t1"."SquadId00", "t2"."Id", "t2"."AmmunitionType", "t2"."IsAutomatic", "t2"."Name", "t2"."OwnerFullName", "t2"."SynergyWithId", "t2"."Nickname", "t2"."SquadId" FROM "Gears" AS "g" LEFT JOIN "Tags" AS "t" ON "g"."Nickname" = "t"."GearNickName" AND "g"."SquadId" = "t"."GearSquadId" LEFT JOIN "Gears" AS "g1" ON "t"."GearNickName" = "g1"."Nickname" AND "t"."GearSquadId" = "g1"."SquadId" LEFT JOIN ( - SELECT "g2"."FullName", "g2"."Nickname", "g2"."SquadId", "t1"."Id", "t1"."Nickname" AS "Nickname0", "t1"."SquadId" AS "SquadId0", "t1"."Id0", "t1"."Name", "t1"."IsAutomatic", "t1"."Id1", "t1"."Nickname0" AS "Nickname00", "t1"."HasSoulPatch", "t1"."SquadId0" AS "SquadId00", "g2"."Rank", "t1"."IsAutomatic0", "g2"."LeaderNickname", "g2"."LeaderSquadId" + SELECT "g2"."FullName", "g2"."Nickname", "g2"."SquadId", "t0"."Id", "t0"."Nickname" AS "Nickname0", "t0"."SquadId" AS "SquadId0", "t0"."Id0", "t0"."Name", "t0"."IsAutomatic", "t0"."Id1", "t0"."Nickname0" AS "Nickname00", "t0"."HasSoulPatch", "t0"."SquadId0" AS "SquadId00", "g2"."Rank", "t0"."IsAutomatic0", "g2"."LeaderNickname", "g2"."LeaderSquadId" FROM "Gears" AS "g2" LEFT JOIN ( SELECT "w"."Id", "g3"."Nickname", "g3"."SquadId", "s"."Id" AS "Id0", "w0"."Name", "w0"."IsAutomatic", "w0"."Id" AS "Id1", "g4"."Nickname" AS "Nickname0", "g4"."HasSoulPatch", "g4"."SquadId" AS "SquadId0", "w"."IsAutomatic" AS "IsAutomatic0", "w"."OwnerFullName" @@ -6876,9 +6876,9 @@ LEFT JOIN ( LEFT JOIN "Weapons" AS "w0" ON "g3"."FullName" = "w0"."OwnerFullName" LEFT JOIN "Gears" AS "g4" ON "s"."Id" = "g4"."SquadId" WHERE "w"."Name" <> 'Bar' OR "w"."Name" IS NULL - ) AS "t1" ON "g2"."FullName" = "t1"."OwnerFullName" + ) AS "t0" ON "g2"."FullName" = "t0"."OwnerFullName" WHERE "g2"."FullName" <> 'Foo' -) AS "t0" ON "g"."Nickname" = "t0"."LeaderNickname" AND "g"."SquadId" = "t0"."LeaderSquadId" +) AS "t1" ON "g"."Nickname" = "t1"."LeaderNickname" AND "g"."SquadId" = "t1"."LeaderSquadId" LEFT JOIN ( SELECT "w1"."Id", "w1"."AmmunitionType", "w1"."IsAutomatic", "w1"."Name", "w1"."OwnerFullName", "w1"."SynergyWithId", "g5"."Nickname", "g5"."SquadId" FROM "Weapons" AS "w1" @@ -6888,7 +6888,7 @@ LEFT JOIN ( SELECT 1 FROM "Gears" AS "g0" WHERE "g"."Nickname" = "g0"."LeaderNickname" AND "g"."SquadId" = "g0"."LeaderSquadId") -ORDER BY "g"."HasSoulPatch" DESC, "t"."Note", "g"."Nickname", "g"."SquadId", "t"."Id", "g1"."Nickname", "g1"."SquadId", "t0"."Rank", "t0"."Nickname", "t0"."SquadId", "t0"."IsAutomatic0", "t0"."Id", "t0"."Nickname0", "t0"."SquadId0", "t0"."Id0", "t0"."Id1", "t0"."Nickname00", "t0"."SquadId00", "t2"."IsAutomatic", "t2"."Nickname" DESC, "t2"."Id" +ORDER BY "g"."HasSoulPatch" DESC, "t"."Note", "g"."Nickname", "g"."SquadId", "t"."Id", "g1"."Nickname", "g1"."SquadId", "t1"."Rank", "t1"."Nickname", "t1"."SquadId", "t1"."IsAutomatic0", "t1"."Id", "t1"."Nickname0", "t1"."SquadId0", "t1"."Id0", "t1"."Id1", "t1"."Nickname00", "t1"."SquadId00", "t2"."IsAutomatic", "t2"."Nickname" DESC, "t2"."Id" """); } @@ -7650,22 +7650,22 @@ public override async Task Include_with_group_by_and_FirstOrDefault_gets_properl AssertSql( """ -SELECT "t0"."Nickname", "t0"."SquadId", "t0"."AssignedCityName", "t0"."CityOfBirthName", "t0"."Discriminator", "t0"."FullName", "t0"."HasSoulPatch", "t0"."LeaderNickname", "t0"."LeaderSquadId", "t0"."Rank", "t0"."Name", "t0"."Location", "t0"."Nation" +SELECT "t1"."Nickname", "t1"."SquadId", "t1"."AssignedCityName", "t1"."CityOfBirthName", "t1"."Discriminator", "t1"."FullName", "t1"."HasSoulPatch", "t1"."LeaderNickname", "t1"."LeaderSquadId", "t1"."Rank", "t1"."Name", "t1"."Location", "t1"."Nation" FROM ( SELECT "g"."Rank" FROM "Gears" AS "g" GROUP BY "g"."Rank" ) AS "t" LEFT JOIN ( - SELECT "t1"."Nickname", "t1"."SquadId", "t1"."AssignedCityName", "t1"."CityOfBirthName", "t1"."Discriminator", "t1"."FullName", "t1"."HasSoulPatch", "t1"."LeaderNickname", "t1"."LeaderSquadId", "t1"."Rank", "t1"."Name", "t1"."Location", "t1"."Nation" + SELECT "t0"."Nickname", "t0"."SquadId", "t0"."AssignedCityName", "t0"."CityOfBirthName", "t0"."Discriminator", "t0"."FullName", "t0"."HasSoulPatch", "t0"."LeaderNickname", "t0"."LeaderSquadId", "t0"."Rank", "t0"."Name", "t0"."Location", "t0"."Nation" FROM ( SELECT "g0"."Nickname", "g0"."SquadId", "g0"."AssignedCityName", "g0"."CityOfBirthName", "g0"."Discriminator", "g0"."FullName", "g0"."HasSoulPatch", "g0"."LeaderNickname", "g0"."LeaderSquadId", "g0"."Rank", "c"."Name", "c"."Location", "c"."Nation", ROW_NUMBER() OVER(PARTITION BY "g0"."Rank" ORDER BY "g0"."Nickname", "g0"."SquadId", "c"."Name") AS "row" FROM "Gears" AS "g0" INNER JOIN "Cities" AS "c" ON "g0"."CityOfBirthName" = "c"."Name" WHERE "g0"."HasSoulPatch" - ) AS "t1" - WHERE "t1"."row" <= 1 -) AS "t0" ON "t"."Rank" = "t0"."Rank" + ) AS "t0" + WHERE "t0"."row" <= 1 +) AS "t1" ON "t"."Rank" = "t1"."Rank" """); } @@ -9548,13 +9548,13 @@ public override async Task Nav_expansion_with_member_pushdown_inside_Contains_ar SELECT "g"."Nickname", "g"."SquadId", "g"."AssignedCityName", "g"."CityOfBirthName", "g"."Discriminator", "g"."FullName", "g"."HasSoulPatch", "g"."LeaderNickname", "g"."LeaderSquadId", "g"."Rank" FROM "Gears" AS "g" WHERE ( - SELECT "w"."Name" - FROM "Weapons" AS "w" - WHERE "g"."FullName" = "w"."OwnerFullName" - ORDER BY "w"."Id" + SELECT "w0"."Name" + FROM "Weapons" AS "w0" + WHERE "g"."FullName" = "w0"."OwnerFullName" + ORDER BY "w0"."Id" LIMIT 1) IN ( - SELECT "w0"."value" - FROM json_each(@__weapons_0) AS "w0" + SELECT "w"."value" + FROM json_each(@__weapons_0) AS "w" ) """); } diff --git a/test/EFCore.Sqlite.FunctionalTests/Query/NorthwindMiscellaneousQuerySqliteTest.cs b/test/EFCore.Sqlite.FunctionalTests/Query/NorthwindMiscellaneousQuerySqliteTest.cs index 4605e5370ce..f4390c5cbca 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Query/NorthwindMiscellaneousQuerySqliteTest.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Query/NorthwindMiscellaneousQuerySqliteTest.cs @@ -438,19 +438,6 @@ public override async Task Correlated_collection_with_distinct_without_default_i public override Task Max_on_empty_sequence_throws(bool async) => Assert.ThrowsAsync(() => base.Max_on_empty_sequence_throws(async)); - public override async Task Parameter_collection_Contains_with_projection_and_ordering(bool async) - { -#if DEBUG - // GroupBy debug assert. Issue #26104. - Assert.StartsWith( - "Missing alias in the list", - (await Assert.ThrowsAsync( - () => base.Parameter_collection_Contains_with_projection_and_ordering(async))).Message); -#else - await base.Parameter_collection_Contains_with_projection_and_ordering(async); -#endif - } - [ConditionalFact] public async Task Single_Predicate_Cancellation() => await Assert.ThrowsAnyAsync( diff --git a/test/EFCore.Sqlite.FunctionalTests/Query/PrimitiveCollectionsQuerySqliteTest.cs b/test/EFCore.Sqlite.FunctionalTests/Query/PrimitiveCollectionsQuerySqliteTest.cs index 6628301f790..6179e4153a1 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Query/PrimitiveCollectionsQuerySqliteTest.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Query/PrimitiveCollectionsQuerySqliteTest.cs @@ -1203,18 +1203,18 @@ FROM json_each(@__Skip_0) AS "s" FROM ( SELECT "t0"."value" FROM ( - SELECT DISTINCT "t2"."value" + SELECT DISTINCT "t"."value" FROM ( SELECT "i"."value" FROM json_each("p"."Ints") AS "i" ORDER BY "i"."value" LIMIT -1 OFFSET 1 - ) AS "t2" + ) AS "t" ) AS "t0" ORDER BY "t0"."value" DESC LIMIT 20 ) AS "t1" - ) AS "t") = 3 + ) AS "t2") = 3 """); }