// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Linq ;
using System.Threading.Tasks ;
using Microsoft.EntityFrameworkCore.Query ;
using Microsoft.EntityFrameworkCore.TestUtilities ;
using Xunit ;
using Xunit.Abstractions ;
namespace EntityFramework.Jet.FunctionalTests.Query
{
public class GroupByQueryJetTest : GroupByQueryTestBase < NorthwindQueryJetFixture < NoopModelCustomizer > >
{
// ReSharper disable once UnusedParameter.Local
public GroupByQueryJetTest ( NorthwindQueryJetFixture < NoopModelCustomizer > fixture , ITestOutputHelper testOutputHelper )
: base ( fixture )
{
Fixture . TestSqlLoggerFactory . Clear ( ) ;
//Fixture.TestSqlLoggerFactory.SetTestOutputHelper(testOutputHelper);
}
public override async Task GroupBy_Property_Select_Average ( bool isAsync )
{
await base . GroupBy_Property_Select_Average ( isAsync ) ;
AssertSql (
@ "SELECT AVG(CAST([o].[OrderID] AS float))
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
// Validating that we don't generate warning when translating GroupBy. See Issue#11157
Assert . DoesNotContain ( "The LINQ expression 'GroupBy([o].CustomerID, [o])' could not be translated and will be evaluated locally." , Fixture . TestSqlLoggerFactory . Log . Select ( l = > l . Message ) ) ;
}
public override async Task GroupBy_Property_Select_Count ( bool isAsync )
{
await base . GroupBy_Property_Select_Count ( isAsync ) ;
AssertSql (
@ "SELECT COUNT(*)
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_Select_LongCount ( bool isAsync )
{
await base . GroupBy_Property_Select_LongCount ( isAsync ) ;
AssertSql (
@ "SELECT COUNT(*)
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_Select_Max ( bool isAsync )
{
await base . GroupBy_Property_Select_Max ( isAsync ) ;
AssertSql (
@ "SELECT MAX([o].[OrderID])
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_Select_Min ( bool isAsync )
{
await base . GroupBy_Property_Select_Min ( isAsync ) ;
AssertSql (
@ "SELECT MIN([o].[OrderID])
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_Select_Sum ( bool isAsync )
{
await base . GroupBy_Property_Select_Sum ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID])
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_Select_Sum_Min_Max_Avg ( bool isAsync )
{
await base . GroupBy_Property_Select_Sum_Min_Max_Avg ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID]) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_Select_Key_Average ( bool isAsync )
{
await base . GroupBy_Property_Select_Key_Average ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], AVG(CAST([o].[OrderID] AS float)) AS [Average]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_Select_Key_Count ( bool isAsync )
{
await base . GroupBy_Property_Select_Key_Count ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], COUNT(*) AS [Count]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_Select_Key_LongCount ( bool isAsync )
{
await base . GroupBy_Property_Select_Key_LongCount ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], COUNT(*) AS [LongCount]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_Select_Key_Max ( bool isAsync )
{
await base . GroupBy_Property_Select_Key_Max ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], MAX([o].[OrderID]) AS [Max]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_Select_Key_Min ( bool isAsync )
{
await base . GroupBy_Property_Select_Key_Min ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], MIN([o].[OrderID]) AS [Min]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_Select_Key_Sum ( bool isAsync )
{
await base . GroupBy_Property_Select_Key_Sum ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], SUM([o].[OrderID]) AS [Sum]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_Select_Key_Sum_Min_Max_Avg ( bool isAsync )
{
await base . GroupBy_Property_Select_Key_Sum_Min_Max_Avg ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], SUM([o].[OrderID]) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_Select_Sum_Min_Key_Max_Avg ( bool isAsync )
{
await base . GroupBy_Property_Select_Sum_Min_Key_Max_Avg ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID]) AS [Sum], MIN([o].[OrderID]) AS [Min], [o].[CustomerID] AS [Key], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_anonymous_Select_Average ( bool isAsync )
{
await base . GroupBy_anonymous_Select_Average ( isAsync ) ;
AssertSql (
@ "SELECT AVG(CAST([o].[OrderID] AS float))
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_anonymous_Select_Count ( bool isAsync )
{
await base . GroupBy_anonymous_Select_Count ( isAsync ) ;
AssertSql (
@ "SELECT COUNT(*)
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_anonymous_Select_LongCount ( bool isAsync )
{
await base . GroupBy_anonymous_Select_LongCount ( isAsync ) ;
AssertSql (
@ "SELECT COUNT(*)
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_anonymous_Select_Max ( bool isAsync )
{
await base . GroupBy_anonymous_Select_Max ( isAsync ) ;
AssertSql (
@ "SELECT MAX([o].[OrderID])
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_anonymous_Select_Min ( bool isAsync )
{
await base . GroupBy_anonymous_Select_Min ( isAsync ) ;
AssertSql (
@ "SELECT MIN([o].[OrderID])
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_anonymous_Select_Sum ( bool isAsync )
{
await base . GroupBy_anonymous_Select_Sum ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID])
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_anonymous_Select_Sum_Min_Max_Avg ( bool isAsync )
{
await base . GroupBy_anonymous_Select_Sum_Min_Max_Avg ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID]) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_anonymous_with_alias_Select_Key_Sum ( bool isAsync )
{
await base . GroupBy_anonymous_with_alias_Select_Key_Sum ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], SUM([o].[OrderID]) AS [Sum]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Composite_Select_Average ( bool isAsync )
{
await base . GroupBy_Composite_Select_Average ( isAsync ) ;
AssertSql (
@ "SELECT AVG(CAST([o].[OrderID] AS float))
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Composite_Select_Count ( bool isAsync )
{
await base . GroupBy_Composite_Select_Count ( isAsync ) ;
AssertSql (
@ "SELECT COUNT(*)
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Composite_Select_LongCount ( bool isAsync )
{
await base . GroupBy_Composite_Select_LongCount ( isAsync ) ;
AssertSql (
@ "SELECT COUNT(*)
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Composite_Select_Max ( bool isAsync )
{
await base . GroupBy_Composite_Select_Max ( isAsync ) ;
AssertSql (
@ "SELECT MAX([o].[OrderID])
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Composite_Select_Min ( bool isAsync )
{
await base . GroupBy_Composite_Select_Min ( isAsync ) ;
AssertSql (
@ "SELECT MIN([o].[OrderID])
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Composite_Select_Sum ( bool isAsync )
{
await base . GroupBy_Composite_Select_Sum ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID])
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Composite_Select_Sum_Min_Max_Avg ( bool isAsync )
{
await base . GroupBy_Composite_Select_Sum_Min_Max_Avg ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID]) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Composite_Select_Key_Average ( bool isAsync )
{
await base . GroupBy_Composite_Select_Key_Average ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID], [o].[EmployeeID], AVG(CAST([o].[OrderID] AS float)) AS [Average]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Composite_Select_Key_Count ( bool isAsync )
{
await base . GroupBy_Composite_Select_Key_Count ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID], [o].[EmployeeID], COUNT(*) AS [Count]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Composite_Select_Key_LongCount ( bool isAsync )
{
await base . GroupBy_Composite_Select_Key_LongCount ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID], [o].[EmployeeID], COUNT(*) AS [LongCount]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Composite_Select_Key_Max ( bool isAsync )
{
await base . GroupBy_Composite_Select_Key_Max ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID], [o].[EmployeeID], MAX([o].[OrderID]) AS [Max]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Composite_Select_Key_Min ( bool isAsync )
{
await base . GroupBy_Composite_Select_Key_Min ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID], [o].[EmployeeID], MIN([o].[OrderID]) AS [Min]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Composite_Select_Key_Sum ( bool isAsync )
{
await base . GroupBy_Composite_Select_Key_Sum ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID], [o].[EmployeeID], SUM([o].[OrderID]) AS [Sum]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Composite_Select_Key_Sum_Min_Max_Avg ( bool isAsync )
{
await base . GroupBy_Composite_Select_Key_Sum_Min_Max_Avg ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID], [o].[EmployeeID], SUM([o].[OrderID]) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Composite_Select_Sum_Min_Key_Max_Avg ( bool isAsync )
{
await base . GroupBy_Composite_Select_Sum_Min_Key_Max_Avg ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID]) AS [Sum], MIN([o].[OrderID]) AS [Min], [o].[CustomerID], [o].[EmployeeID], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Composite_Select_Sum_Min_Key_flattened_Max_Avg ( bool isAsync )
{
await base . GroupBy_Composite_Select_Sum_Min_Key_flattened_Max_Avg ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID]) AS [Sum], MIN([o].[OrderID]) AS [Min], [o].[CustomerID], [o].[EmployeeID], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Dto_as_key_Select_Sum ( bool isAsync )
{
await base . GroupBy_Dto_as_key_Select_Sum ( isAsync ) ;
AssertSql (
@ "SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
FROM [ Orders ] AS [ o0 ] ");
}
public override async Task GroupBy_Dto_as_element_selector_Select_Sum ( bool isAsync )
{
await base . GroupBy_Dto_as_element_selector_Select_Sum ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID], [o].[EmployeeID]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Composite_Select_Dto_Sum_Min_Key_flattened_Max_Avg ( bool isAsync )
{
await base . GroupBy_Composite_Select_Dto_Sum_Min_Key_flattened_Max_Avg ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID]) AS [Sum], MIN([o].[OrderID]) AS [Min], [o].[CustomerID], [o].[EmployeeID], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Composite_Select_Sum_Min_part_Key_flattened_Max_Avg ( bool isAsync )
{
await base . GroupBy_Composite_Select_Sum_Min_part_Key_flattened_Max_Avg ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID]) AS [Sum], MIN([o].[OrderID]) AS [Min], [o].[CustomerID], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Constant_Select_Sum_Min_Key_Max_Avg ( bool isAsync )
{
await base . GroupBy_Constant_Select_Sum_Min_Key_Max_Avg ( isAsync ) ;
AssertSql (
@ "SELECT SUM([t].[OrderID]) AS [Sum], MIN([t].[OrderID]) AS [Min], [t].[Key], MAX([t].[OrderID]) AS [Max], AVG(CAST([t].[OrderID] AS float)) AS [Avg]
FROM (
SELECT [ o ] . * , 2 AS [ Key ]
FROM [ Orders ] AS [ o ]
) AS [ t ]
GROUP BY [ t ] . [ Key ] ");
}
public override async Task GroupBy_after_predicate_Constant_Select_Sum_Min_Key_Max_Avg ( bool isAsync )
{
await base . GroupBy_after_predicate_Constant_Select_Sum_Min_Key_Max_Avg ( isAsync ) ;
AssertSql (
@ "SELECT SUM([t].[OrderID]) AS [Sum], MIN([t].[OrderID]) AS [Min], [t].[Key] AS [Random], MAX([t].[OrderID]) AS [Max], AVG(CAST([t].[OrderID] AS float)) AS [Avg]
FROM (
SELECT [ o ] . * , 2 AS [ Key ]
FROM [ Orders ] AS [ o ]
WHERE [ o ] . [ OrderID ] > 10500
) AS [ t ]
GROUP BY [ t ] . [ Key ] ");
}
public override async Task GroupBy_Constant_with_element_selector_Select_Sum_Min_Key_Max_Avg ( bool isAsync )
{
await base . GroupBy_Constant_with_element_selector_Select_Sum_Min_Key_Max_Avg ( isAsync ) ;
AssertSql (
@ "SELECT SUM([t].[OrderID]) AS [Sum], [t].[Key]
FROM (
SELECT [ o ] . [ OrderID ] , 2 AS [ Key ]
FROM [ Orders ] AS [ o ]
) AS [ t ]
GROUP BY [ t ] . [ Key ] ");
}
public override async Task GroupBy_param_Select_Sum_Min_Key_Max_Avg ( bool isAsync )
{
await base . GroupBy_param_Select_Sum_Min_Key_Max_Avg ( isAsync ) ;
AssertSql (
@ "@__a_0='2'
SELECT SUM ( [ t ] . [ OrderID ] ) AS [ Sum ] , MIN ( [ t ] . [ OrderID ] ) AS [ Min ] , [ t ] . [ Key ] , MAX ( [ t ] . [ OrderID ] ) AS [ Max ] , AVG ( CAST ( [ t ] . [ OrderID ] AS float ) ) AS [ Avg ]
FROM (
SELECT [ o ] . * , @__a_0 AS [ Key ]
FROM [ Orders ] AS [ o ]
) AS [ t ]
GROUP BY [ t ] . [ Key ] ");
}
public override async Task GroupBy_param_with_element_selector_Select_Sum_Min_Key_Max_Avg ( bool isAsync )
{
await base . GroupBy_param_with_element_selector_Select_Sum_Min_Key_Max_Avg ( isAsync ) ;
AssertSql (
@ "@__a_0='2'
SELECT SUM ( [ t ] . [ OrderID ] ) AS [ Sum ] , [ t ] . [ Key ]
FROM (
SELECT [ o ] . [ OrderID ] , @__a_0 AS [ Key ]
FROM [ Orders ] AS [ o ]
) AS [ t ]
GROUP BY [ t ] . [ Key ] ");
}
public override async Task GroupBy_Property_scalar_element_selector_Average ( bool isAsync )
{
await base . GroupBy_Property_scalar_element_selector_Average ( isAsync ) ;
AssertSql (
@ "SELECT AVG(CAST([o].[OrderID] AS float))
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_scalar_element_selector_Count ( bool isAsync )
{
await base . GroupBy_Property_scalar_element_selector_Count ( isAsync ) ;
AssertSql (
@ "SELECT COUNT(*)
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_scalar_element_selector_LongCount ( bool isAsync )
{
await base . GroupBy_Property_scalar_element_selector_LongCount ( isAsync ) ;
AssertSql (
@ "SELECT COUNT(*)
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_scalar_element_selector_Max ( bool isAsync )
{
await base . GroupBy_Property_scalar_element_selector_Max ( isAsync ) ;
AssertSql (
@ "SELECT MAX([o].[OrderID])
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_scalar_element_selector_Min ( bool isAsync )
{
await base . GroupBy_Property_scalar_element_selector_Min ( isAsync ) ;
AssertSql (
@ "SELECT MIN([o].[OrderID])
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_scalar_element_selector_Sum ( bool isAsync )
{
await base . GroupBy_Property_scalar_element_selector_Sum ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID])
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_scalar_element_selector_Sum_Min_Max_Avg ( bool isAsync )
{
await base . GroupBy_Property_scalar_element_selector_Sum_Min_Max_Avg ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID]) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_anonymous_element_selector_Average ( bool isAsync )
{
await base . GroupBy_Property_anonymous_element_selector_Average ( isAsync ) ;
AssertSql (
@ "SELECT AVG(CAST([o].[OrderID] AS float))
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_anonymous_element_selector_Count ( bool isAsync )
{
await base . GroupBy_Property_anonymous_element_selector_Count ( isAsync ) ;
AssertSql (
@ "SELECT COUNT(*)
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_anonymous_element_selector_LongCount ( bool isAsync )
{
await base . GroupBy_Property_anonymous_element_selector_LongCount ( isAsync ) ;
AssertSql (
@ "SELECT COUNT(*)
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_anonymous_element_selector_Max ( bool isAsync )
{
await base . GroupBy_Property_anonymous_element_selector_Max ( isAsync ) ;
AssertSql (
@ "SELECT MAX([o].[OrderID])
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_anonymous_element_selector_Min ( bool isAsync )
{
await base . GroupBy_Property_anonymous_element_selector_Min ( isAsync ) ;
AssertSql (
@ "SELECT MIN([o].[OrderID])
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_anonymous_element_selector_Sum ( bool isAsync )
{
await base . GroupBy_Property_anonymous_element_selector_Sum ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID])
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Property_anonymous_element_selector_Sum_Min_Max_Avg ( bool isAsync )
{
await base . GroupBy_Property_anonymous_element_selector_Sum_Min_Max_Avg ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID]) AS [Sum], MIN([o].[EmployeeID]) AS [Min], MAX([o].[EmployeeID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_empty_key_Aggregate ( bool isAsync )
{
await base . GroupBy_empty_key_Aggregate ( isAsync ) ;
AssertSql (
@ "SELECT SUM([t].[OrderID])
FROM (
SELECT [ o ] . * , 1 AS [ Key ]
FROM [ Orders ] AS [ o ]
) AS [ t ]
GROUP BY [ t ] . [ Key ] ");
}
public override async Task GroupBy_empty_key_Aggregate_Key ( bool isAsync )
{
await base . GroupBy_empty_key_Aggregate_Key ( isAsync ) ;
AssertSql (
@ "SELECT SUM([t].[OrderID]) AS [Sum]
FROM (
SELECT [ o ] . * , 1 AS [ Key ]
FROM [ Orders ] AS [ o ]
) AS [ t ]
GROUP BY [ t ] . [ Key ] ");
}
public override async Task OrderBy_GroupBy_Aggregate ( bool isAsync )
{
await base . OrderBy_GroupBy_Aggregate ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID])
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task OrderBy_Skip_GroupBy_Aggregate ( bool isAsync )
{
await base . OrderBy_Skip_GroupBy_Aggregate ( isAsync ) ;
AssertSql (
@ "@__p_0='80'
SELECT AVG ( CAST ( [ t ] . [ OrderID ] AS float ) )
FROM (
SELECT [ o ] . *
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ OrderID ]
OFFSET @__p_0 ROWS
) AS [ t ]
GROUP BY [ t ] . [ CustomerID ] ");
}
public override async Task OrderBy_Take_GroupBy_Aggregate ( bool isAsync )
{
await base . OrderBy_Take_GroupBy_Aggregate ( isAsync ) ;
AssertSql (
@ "@__p_0='500'
SELECT MIN ( [ t ] . [ OrderID ] )
FROM (
SELECT TOP @__p_0 [ o ] . *
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ OrderID ]
) AS [ t ]
GROUP BY [ t ] . [ CustomerID ] ");
}
public override async Task OrderBy_Skip_Take_GroupBy_Aggregate ( bool isAsync )
{
await base . OrderBy_Skip_Take_GroupBy_Aggregate ( isAsync ) ;
AssertSql (
@ "@__p_0='80'
@__p_1 = ' 500 '
SELECT MAX ( [ t ] . [ OrderID ] )
FROM (
SELECT [ o ] . *
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ OrderID ]
OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY
) AS [ t ]
GROUP BY [ t ] . [ CustomerID ] ");
}
public override async Task Distinct_GroupBy_Aggregate ( bool isAsync )
{
await base . Distinct_GroupBy_Aggregate ( isAsync ) ;
AssertSql (
@ "SELECT [t].[CustomerID] AS [Key], COUNT(*) AS [c]
FROM (
SELECT DISTINCT [ o ] . *
FROM [ Orders ] AS [ o ]
) AS [ t ]
GROUP BY [ t ] . [ CustomerID ] ");
}
public override async Task Anonymous_projection_Distinct_GroupBy_Aggregate ( bool isAsync )
{
await base . Anonymous_projection_Distinct_GroupBy_Aggregate ( isAsync ) ;
AssertSql (
@ "SELECT [t].[EmployeeID] AS [Key], COUNT(*) AS [c]
FROM (
SELECT DISTINCT [ o ] . [ OrderID ] , [ o ] . [ EmployeeID ]
FROM [ Orders ] AS [ o ]
) AS [ t ]
GROUP BY [ t ] . [ EmployeeID ] ");
}
public override async Task SelectMany_GroupBy_Aggregate ( bool isAsync )
{
await base . SelectMany_GroupBy_Aggregate ( isAsync ) ;
AssertSql (
@ "SELECT [c.Orders].[EmployeeID] AS [Key], COUNT(*) AS [c]
FROM [ Customers ] AS [ c ]
INNER JOIN [ Orders ] AS [ c . Orders ] ON [ c ] . [ CustomerID ] = [ c . Orders ] . [ CustomerID ]
GROUP BY [ c . Orders ] . [ EmployeeID ] ");
}
public override async Task Join_GroupBy_Aggregate ( bool isAsync )
{
await base . Join_GroupBy_Aggregate ( isAsync ) ;
AssertSql (
@ "SELECT [c].[CustomerID] AS [Key], AVG(CAST([o].[OrderID] AS float)) AS [Count]
FROM [ Orders ] AS [ o ]
INNER JOIN [ Customers ] AS [ c ] ON [ o ] . [ CustomerID ] = [ c ] . [ CustomerID ]
GROUP BY [ c ] . [ CustomerID ] ");
}
public override async Task GroupBy_required_navigation_member_Aggregate ( bool isAsync )
{
await base . GroupBy_required_navigation_member_Aggregate ( isAsync ) ;
AssertSql (
@ "SELECT [od.Order].[CustomerID] AS [CustomerId], COUNT(*) AS [Count]
FROM [ Order Details ] AS [ od ]
INNER JOIN [ Orders ] AS [ od . Order ] ON [ od ] . [ OrderID ] = [ od . Order ] . [ OrderID ]
GROUP BY [ od . Order ] . [ CustomerID ] ");
}
public override async Task Join_complex_GroupBy_Aggregate ( bool isAsync )
{
await base . Join_complex_GroupBy_Aggregate ( isAsync ) ;
AssertSql (
@ "@__p_0='100'
@__p_1 = ' 10 '
@__p_2 = ' 50 '
SELECT [ t0 ] . [ CustomerID ] AS [ Key ] , AVG ( CAST ( [ t ] . [ OrderID ] AS float ) ) AS [ Count ]
FROM (
SELECT TOP ( @__p_0 ) [ o ] . [ OrderID ] , [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] , [ o ] . [ OrderDate ]
FROM [ Orders ] AS [ o ]
WHERE [ o ] . [ OrderID ] < 10400
ORDER BY [ o ] . [ OrderDate ]
) AS [ t ]
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 ] NOT IN ( N ' DRACD ' , N ' FOLKO ' )
ORDER BY [ c ] . [ City ]
OFFSET @__p_1 ROWS FETCH NEXT @__p_2 ROWS ONLY
) AS [ t0 ] ON [ t ] . [ CustomerID ] = [ t0 ] . [ CustomerID ]
GROUP BY [ t0 ] . [ CustomerID ] ");
}
public override async Task GroupJoin_GroupBy_Aggregate ( bool isAsync )
{
await base . GroupJoin_GroupBy_Aggregate ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], AVG(CAST([o].[OrderID] AS float)) AS [Average]
FROM [ Customers ] AS [ c ]
LEFT JOIN [ Orders ] AS [ o ] ON [ c ] . [ CustomerID ] = [ o ] . [ CustomerID ]
WHERE [ o ] . [ OrderID ] IS NOT NULL
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupJoin_GroupBy_Aggregate_2 ( bool isAsync )
{
await base . GroupJoin_GroupBy_Aggregate_2 ( isAsync ) ;
AssertSql (
@ "SELECT [c].[CustomerID] AS [Key], MAX([c].[City]) AS [Max]
FROM [ Customers ] AS [ c ]
LEFT JOIN [ Orders ] AS [ o ] ON [ c ] . [ CustomerID ] = [ o ] . [ CustomerID ]
GROUP BY [ c ] . [ CustomerID ] ");
}
public override async Task GroupJoin_GroupBy_Aggregate_3 ( bool isAsync )
{
await base . GroupJoin_GroupBy_Aggregate_3 ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], AVG(CAST([o].[OrderID] AS float)) AS [Average]
FROM [ Orders ] AS [ o ]
LEFT JOIN [ Customers ] AS [ c ] ON [ o ] . [ CustomerID ] = [ c ] . [ CustomerID ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupJoin_GroupBy_Aggregate_4 ( bool isAsync )
{
await base . GroupJoin_GroupBy_Aggregate_4 ( isAsync ) ;
AssertSql (
@ "SELECT [c].[CustomerID] AS [Value], MAX([c].[City]) AS [Max]
FROM [ Customers ] AS [ c ]
LEFT JOIN [ Orders ] AS [ o ] ON [ c ] . [ CustomerID ] = [ o ] . [ CustomerID ]
GROUP BY [ c ] . [ CustomerID ] ");
}
public override async Task GroupJoin_GroupBy_Aggregate_5 ( bool isAsync )
{
await base . GroupJoin_GroupBy_Aggregate_5 ( isAsync ) ;
AssertSql (
@ "SELECT [o].[OrderID] AS [Value], AVG(CAST([o].[OrderID] AS float)) AS [Average]
FROM [ Orders ] AS [ o ]
LEFT JOIN [ Customers ] AS [ c ] ON [ o ] . [ CustomerID ] = [ c ] . [ CustomerID ]
GROUP BY [ o ] . [ OrderID ] ");
}
public override async Task GroupBy_optional_navigation_member_Aggregate ( bool isAsync )
{
await base . GroupBy_optional_navigation_member_Aggregate ( isAsync ) ;
AssertSql (
@ "SELECT [o.Customer].[Country], COUNT(*) AS [Count]
FROM [ Orders ] AS [ o ]
LEFT JOIN [ Customers ] AS [ o . Customer ] ON [ o ] . [ CustomerID ] = [ o . Customer ] . [ CustomerID ]
GROUP BY [ o . Customer ] . [ Country ] ");
}
public override async Task GroupJoin_complex_GroupBy_Aggregate ( bool isAsync )
{
await base . GroupJoin_complex_GroupBy_Aggregate ( isAsync ) ;
AssertSql (
@ "@__p_0='10'
@__p_1 = ' 50 '
@__p_2 = ' 100 '
SELECT [ t0 ] . [ CustomerID ] AS [ Key ] , AVG ( CAST ( [ t0 ] . [ OrderID ] AS float ) ) AS [ Count ]
FROM (
SELECT [ c ] . *
FROM [ Customers ] AS [ c ]
WHERE [ c ] . [ CustomerID ] NOT IN ( N ' DRACD ' , N ' FOLKO ' )
ORDER BY [ c ] . [ City ]
OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY
) AS [ t ]
INNER JOIN (
SELECT TOP ( @__p_2 ) [ o ] . [ OrderID ] , [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] , [ o ] . [ OrderDate ]
FROM [ Orders ] AS [ o ]
WHERE [ o ] . [ OrderID ] < 10400
ORDER BY [ o ] . [ OrderDate ]
) AS [ t0 ] ON [ t ] . [ CustomerID ] = [ t0 ] . [ CustomerID ]
WHERE [ t0 ] . [ OrderID ] > 10300
GROUP BY [ t0 ] . [ CustomerID ] ");
}
public override async Task Self_join_GroupBy_Aggregate ( bool isAsync )
{
await base . Self_join_GroupBy_Aggregate ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], AVG(CAST([o2].[OrderID] AS float)) AS [Count]
FROM [ Orders ] AS [ o ]
INNER JOIN [ Orders ] AS [ o2 ] ON [ o ] . [ OrderID ] = [ o2 ] . [ OrderID ]
WHERE [ o ] . [ OrderID ] < 10400
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_multi_navigation_members_Aggregate ( bool isAsync )
{
await base . GroupBy_multi_navigation_members_Aggregate ( isAsync ) ;
AssertSql (
@ "SELECT [od.Order].[CustomerID], [od.Product].[ProductName], COUNT(*) AS [Count]
FROM [ Order Details ] AS [ od ]
INNER JOIN [ Products ] AS [ od . Product ] ON [ od ] . [ ProductID ] = [ od . Product ] . [ ProductID ]
INNER JOIN [ Orders ] AS [ od . Order ] ON [ od ] . [ OrderID ] = [ od . Order ] . [ OrderID ]
GROUP BY [ od . Order ] . [ CustomerID ] , [ od . Product ] . [ ProductName ] ");
}
public override async Task Union_simple_groupby ( bool isAsync )
{
await base . Union_simple_groupby ( isAsync ) ;
AssertSql ( " " ) ;
}
public override async Task Select_anonymous_GroupBy_Aggregate ( bool isAsync )
{
await base . Select_anonymous_GroupBy_Aggregate ( isAsync ) ;
AssertSql (
@ "SELECT MIN([o].[OrderDate]) AS [Min], MAX([o].[OrderDate]) AS [Max], SUM([o].[OrderID]) AS [Sum], AVG(CAST([o].[OrderID] AS float)) AS [Avg]
FROM [ Orders ] AS [ o ]
WHERE [ o ] . [ OrderID ] < 10300
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_OrderBy_key ( bool isAsync )
{
await base . GroupBy_OrderBy_key ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], COUNT(*) AS [c]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ]
ORDER BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_OrderBy_count ( bool isAsync )
{
await base . GroupBy_OrderBy_count ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], COUNT(*) AS [Count]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ]
ORDER BY COUNT ( * ) , [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_OrderBy_count_Select_sum ( bool isAsync )
{
await base . GroupBy_OrderBy_count_Select_sum ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], SUM([o].[OrderID]) AS [Sum]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ]
ORDER BY COUNT ( * ) , [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_aggregate_Contains ( bool isAsync )
{
await base . GroupBy_aggregate_Contains ( isAsync ) ;
AssertSql (
@ "SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
FROM [ Orders ] AS [ o ]
WHERE [ o ] . [ CustomerID ] IN (
SELECT [ e ] . [ CustomerID ] AS [ Key ]
FROM [ Orders ] AS [ e ]
GROUP BY [ e ] . [ CustomerID ]
HAVING COUNT ( * ) > 30
) ");
}
public override async Task GroupBy_aggregate_Pushdown ( bool isAsync )
{
await base . GroupBy_aggregate_Pushdown ( isAsync ) ;
AssertSql (
@ "@__p_0='20'
@__p_1 = '4'
SELECT [ t ] . *
FROM (
SELECT TOP @__p_0 [ e ] . [ CustomerID ] AS [ c ]
FROM [ Orders ] AS [ e ]
GROUP BY [ e ] . [ CustomerID ]
HAVING COUNT ( * ) > 10
ORDER BY [ e ] . [ CustomerID ]
) AS [ t ]
ORDER BY [ t ] . [ c ]
OFFSET @__p_1 ROWS ");
}
public override void GroupBy_Select_sum_over_unmapped_property ( )
{
base . GroupBy_Select_sum_over_unmapped_property ( ) ;
AssertSql (
@ "SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_filter_key ( bool isAsync )
{
await base . GroupBy_filter_key ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], COUNT(*) AS [c]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ]
HAVING [ o ] . [ CustomerID ] = ' ALFKI ' ");
}
public override async Task GroupBy_filter_count ( bool isAsync )
{
await base . GroupBy_filter_count ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], COUNT(*) AS [Count]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ]
HAVING COUNT ( * ) > 4 ");
}
public override async Task GroupBy_filter_count_OrderBy_count_Select_sum ( bool isAsync )
{
await base . GroupBy_filter_count_OrderBy_count_Select_sum ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID] AS [Key], COUNT(*) AS [Count], SUM([o].[OrderID]) AS [Sum]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ]
HAVING COUNT ( * ) > 4
ORDER BY COUNT ( * ) , [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Aggregate_Join ( bool isAsync )
{
await base . GroupBy_Aggregate_Join ( isAsync ) ;
AssertContains (
@ "SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
FROM [ Orders ] AS [ o0 ] ",
/ /
@ "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 ] ",
/ /
@ "SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ CustomerID ] ");
}
public override async Task Join_GroupBy_Aggregate_multijoins ( bool isAsync )
{
await base . Join_GroupBy_Aggregate_multijoins ( isAsync ) ;
// This could be lifted. Blocked by bug #10812
AssertContains (
@ "SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
FROM [ Orders ] AS [ o0 ] ",
/ /
@ "SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], [t].[CustomerID], [t].[LastOrderID]
FROM [ Customers ] AS [ c ]
INNER JOIN (
SELECT [ o ] . [ CustomerID ] , MAX ( [ o ] . [ OrderID ] ) AS [ LastOrderID ]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ]
HAVING COUNT ( * ) > 5
) AS [ t ] ON [ c ] . [ CustomerID ] = [ t ] . [ CustomerID ] ");
}
public override async Task Join_GroupBy_Aggregate_single_join ( bool isAsync )
{
await base . Join_GroupBy_Aggregate_single_join ( isAsync ) ;
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].[CustomerID], [t].[LastOrderID]
FROM [ Customers ] AS [ c ]
INNER JOIN (
SELECT [ o ] . [ CustomerID ] , MAX ( [ o ] . [ OrderID ] ) AS [ LastOrderID ]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ]
HAVING COUNT ( * ) > 5
) AS [ t ] ON [ c ] . [ CustomerID ] = [ t ] . [ CustomerID ] ");
}
public override async Task Join_GroupBy_Aggregate_with_another_join ( bool isAsync )
{
await base . Join_GroupBy_Aggregate_with_another_join ( isAsync ) ;
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].[CustomerID], [t].[LastOrderID], [o0].[OrderID]
FROM [ Customers ] AS [ c ]
INNER JOIN (
SELECT [ o ] . [ CustomerID ] , MAX ( [ o ] . [ OrderID ] ) AS [ LastOrderID ]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ]
HAVING COUNT ( * ) > 5
) AS [ t ] ON [ c ] . [ CustomerID ] = [ t ] . [ CustomerID ]
INNER JOIN [ Orders ] AS [ o0 ] ON [ c ] . [ CustomerID ] = [ o0 ] . [ CustomerID ] ");
}
public override async Task Join_GroupBy_Aggregate_in_subquery ( bool isAsync )
{
await base . Join_GroupBy_Aggregate_in_subquery ( isAsync ) ;
AssertContains (
@ "SELECT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region], [t0].[CustomerID], [t0].[LastOrderID]
FROM [ Customers ] AS [ c0 ]
INNER JOIN (
SELECT [ o1 ] . [ CustomerID ] , MAX ( [ o1 ] . [ OrderID ] ) AS [ LastOrderID ]
FROM [ Orders ] AS [ o1 ]
GROUP BY [ o1 ] . [ CustomerID ]
HAVING COUNT ( * ) > 5
) AS [ t0 ] ON [ c0 ] . [ CustomerID ] = [ t0 ] . [ CustomerID ] ",
/ /
@ "SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
FROM [ Orders ] AS [ o ]
WHERE [ o ] . [ OrderID ] < 10400 ");
}
public override async Task Join_GroupBy_Aggregate_on_key ( bool isAsync )
{
await base . Join_GroupBy_Aggregate_on_key ( isAsync ) ;
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].[Key], [t].[LastOrderID]
FROM [ Customers ] AS [ c ]
INNER JOIN (
SELECT [ o ] . [ CustomerID ] AS [ Key ] , MAX ( [ o ] . [ OrderID ] ) AS [ LastOrderID ]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ]
HAVING COUNT ( * ) > 5
) AS [ t ] ON [ c ] . [ CustomerID ] = [ t ] . [ Key ] ");
}
public override async Task GroupBy_with_result_selector ( bool isAsync )
{
await base . GroupBy_with_result_selector ( isAsync ) ;
AssertSql (
@ "SELECT SUM([o].[OrderID]) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg]
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Sum_constant ( bool isAsync )
{
await base . GroupBy_Sum_constant ( isAsync ) ;
AssertSql (
@ "SELECT SUM(1)
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Sum_constant_cast ( bool isAsync )
{
await base . GroupBy_Sum_constant_cast ( isAsync ) ;
AssertSql (
@ "SELECT SUM(CAST(1 AS bigint))
FROM [ Orders ] AS [ o ]
GROUP BY [ o ] . [ CustomerID ] ");
}
public override async Task Distinct_GroupBy_OrderBy_key ( bool isAsync )
{
await base . Distinct_GroupBy_OrderBy_key ( isAsync ) ;
AssertSql (
@ "SELECT [t].[CustomerID] AS [Key], COUNT(*) AS [c]
FROM (
SELECT DISTINCT [ o ] . *
FROM [ Orders ] AS [ o ]
) AS [ t ]
GROUP BY [ t ] . [ CustomerID ]
ORDER BY [ t ] . [ CustomerID ] ");
}
public override void Select_nested_collection_with_groupby ( )
{
base . Select_nested_collection_with_groupby ( ) ;
AssertSql (
@ "SELECT (
SELECT CASE
WHEN EXISTS (
SELECT 1
FROM [ Orders ] AS [ o0 ]
WHERE [ c ] . [ CustomerID ] = [ o0 ] . [ CustomerID ] )
THEN CAST ( 1 AS BIT ) ELSE CAST ( 0 AS BIT )
END
) , [ c ] . [ CustomerID ]
FROM [ Customers ] AS [ c ]
WHERE [ c ] . [ CustomerID ] LIKE N 'A' + N '%' AND ( LEFT ( [ c ] . [ CustomerID ] , LEN ( N 'A' ) ) = N 'A' ) ",
/ /
@ "@_outer_CustomerID='ALFKI' (Size = 5)
SELECT [ o1 ] . [ OrderID ]
FROM [ Orders ] AS [ o1 ]
WHERE @_outer_CustomerID = [ o1 ] . [ CustomerID ]
ORDER BY [ o1 ] . [ OrderID ] ",
/ /
@ "@_outer_CustomerID='ANATR' (Size = 5)
SELECT [ o1 ] . [ OrderID ]
FROM [ Orders ] AS [ o1 ]
WHERE @_outer_CustomerID = [ o1 ] . [ CustomerID ]
ORDER BY [ o1 ] . [ OrderID ] ",
/ /
@ "@_outer_CustomerID='ANTON' (Size = 5)
SELECT [ o1 ] . [ OrderID ]
FROM [ Orders ] AS [ o1 ]
WHERE @_outer_CustomerID = [ o1 ] . [ CustomerID ]
ORDER BY [ o1 ] . [ OrderID ] ",
/ /
@ "@_outer_CustomerID='AROUT' (Size = 5)
SELECT [ o1 ] . [ OrderID ]
FROM [ Orders ] AS [ o1 ]
WHERE @_outer_CustomerID = [ o1 ] . [ CustomerID ]
ORDER BY [ o1 ] . [ OrderID ] ");
}
public override void Select_GroupBy_All ( )
{
base . Select_GroupBy_All ( ) ;
AssertSql (
@ "SELECT [o].[OrderID] AS [Order], [o].[CustomerID] AS [Customer]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_Where_in_aggregate ( bool isAsync )
{
await base . GroupBy_Where_in_aggregate ( isAsync ) ;
AssertSql (
@ "SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_anonymous ( bool isAsync )
{
await base . GroupBy_anonymous ( isAsync ) ;
AssertSql (
@ "SELECT [c].[City], [c].[CustomerID]
FROM [ Customers ] AS [ c ]
ORDER BY [ c ] . [ City ] ");
}
public override async Task GroupBy_anonymous_with_where ( bool isAsync )
{
await base . GroupBy_anonymous_with_where ( isAsync ) ;
AssertSql (
@ "SELECT [c].[City], [c].[CustomerID]
FROM [ Customers ] AS [ c ]
WHERE [ c ] . [ Country ] IN ( ' Argentina ' , ' Austria ' , ' Brazil ' , ' France ' , ' Germany ' , ' USA ' )
ORDER BY [ c ] . [ City ] ");
}
public override async Task GroupBy_anonymous_subquery ( bool isAsync )
{
await base . GroupBy_anonymous_subquery ( isAsync ) ;
AssertSql ( " " ) ;
}
public override async Task GroupBy_nested_order_by_enumerable ( bool isAsync )
{
await base . GroupBy_nested_order_by_enumerable ( isAsync ) ;
AssertSql (
@ "SELECT [c].[Country], [c].[CustomerID]
FROM [ Customers ] AS [ c ]
ORDER BY [ c ] . [ Country ] ");
}
public override async Task GroupBy_join_default_if_empty_anonymous ( bool isAsync )
{
await base . GroupBy_join_default_if_empty_anonymous ( isAsync ) ;
AssertSql (
@ "SELECT [order0].[OrderID], [order0].[CustomerID], [order0].[EmployeeID], [order0].[OrderDate], [orderDetail0].[OrderID], [orderDetail0].[ProductID], [orderDetail0].[Discount], [orderDetail0].[Quantity], [orderDetail0].[UnitPrice]
FROM [ Orders ] AS [ order0 ]
LEFT JOIN [ Order Details ] AS [ orderDetail0 ] ON [ order0 ] . [ OrderID ] = [ orderDetail0 ] . [ OrderID ]
ORDER BY [ order0 ] . [ OrderID ] ");
}
public override async Task GroupBy_SelectMany ( bool isAsync )
{
await base . GroupBy_SelectMany ( isAsync ) ;
AssertSql (
@ "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 ]
ORDER BY [ c ] . [ City ] ");
}
public override async Task GroupBy_simple ( bool isAsync )
{
await base . GroupBy_simple ( isAsync ) ;
AssertSql (
@ "SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_simple2 ( bool isAsync )
{
await base . GroupBy_simple2 ( isAsync ) ;
AssertSql (
@ "SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_first ( bool isAsync )
{
await base . GroupBy_first ( isAsync ) ;
AssertSql (
@ "SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
FROM [ Orders ] AS [ o ]
WHERE [ o ] . [ CustomerID ] = ' ALFKI '
ORDER BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_with_element_selector ( bool isAsync )
{
await base . GroupBy_with_element_selector ( isAsync ) ;
AssertSql (
@ "SELECT [o].[CustomerID], [o].[OrderID]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_with_element_selector2 ( bool isAsync )
{
await base . GroupBy_with_element_selector2 ( isAsync ) ;
AssertSql (
@ "SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_with_element_selector3 ( bool isAsync )
{
await base . GroupBy_with_element_selector3 ( isAsync ) ;
AssertSql (
@ "SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
FROM [ Employees ] AS [ e ]
ORDER BY [ e ] . [ EmployeeID ] ");
}
public override async Task GroupBy_DateTimeOffset_Property ( bool isAsync )
{
await base . GroupBy_DateTimeOffset_Property ( isAsync ) ;
AssertSql (
@ "SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
FROM [ Orders ] AS [ o ]
WHERE [ o ] . [ OrderDate ] IS NOT NULL
ORDER BY DatePart ( 'm' , [ o ] . [ OrderDate ] ) ");
}
public override async Task OrderBy_GroupBy_SelectMany ( bool isAsync )
{
await base . OrderBy_GroupBy_SelectMany ( isAsync ) ;
AssertSql (
@ "SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ CustomerID ] , [ o ] . [ OrderID ] ");
}
public override async Task OrderBy_GroupBy_SelectMany_shadow ( bool isAsync )
{
await base . OrderBy_GroupBy_SelectMany_shadow ( isAsync ) ;
AssertSql (
@ "SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
FROM [ Employees ] AS [ e ]
ORDER BY [ e ] . [ EmployeeID ] ");
}
public override async Task GroupBy_with_orderby ( bool isAsync )
{
await base . GroupBy_with_orderby ( isAsync ) ;
AssertSql (
@ "SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ CustomerID ] , [ o ] . [ OrderID ] ");
}
public override async Task GroupBy_with_orderby_and_anonymous_projection ( bool isAsync )
{
await base . GroupBy_with_orderby_and_anonymous_projection ( isAsync ) ;
AssertSql (
@ "SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_with_orderby_take_skip_distinct ( bool isAsync )
{
await base . GroupBy_with_orderby_take_skip_distinct ( isAsync ) ;
AssertSql (
@ "SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ CustomerID ] ");
}
public override async Task GroupBy_join_anonymous ( bool isAsync )
{
await base . GroupBy_join_anonymous ( isAsync ) ;
AssertSql (
@ "SELECT [order0].[OrderID], [order0].[CustomerID], [order0].[EmployeeID], [order0].[OrderDate], [orderDetail0].[OrderID], [orderDetail0].[ProductID], [orderDetail0].[Discount], [orderDetail0].[Quantity], [orderDetail0].[UnitPrice]
FROM [ Orders ] AS [ order0 ]
LEFT JOIN [ Order Details ] AS [ orderDetail0 ] ON [ order0 ] . [ OrderID ] = [ orderDetail0 ] . [ OrderID ]
ORDER BY [ order0 ] . [ OrderID ] ");
}
public override async Task GroupBy_Distinct ( bool isAsync )
{
await base . GroupBy_Distinct ( isAsync ) ;
AssertSql (
@ "SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
FROM [ Orders ] AS [ o0 ]
ORDER BY [ o0 ] . [ CustomerID ] ");
}
public override async Task OrderBy_Skip_GroupBy ( bool isAsync )
{
await base . OrderBy_Skip_GroupBy ( isAsync ) ;
AssertSql (
@ "@__p_0='800'
SELECT [ t ] . [ OrderID ] , [ t ] . [ CustomerID ] , [ t ] . [ EmployeeID ] , [ t ] . [ OrderDate ]
FROM (
SELECT [ o ] . [ OrderID ] , [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] , [ o ] . [ OrderDate ]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ OrderDate ] , [ o ] . [ OrderID ]
OFFSET @__p_0 ROWS
) AS [ t ]
ORDER BY [ t ] . [ CustomerID ] ");
}
public override async Task OrderBy_Take_GroupBy ( bool isAsync )
{
await base . OrderBy_Take_GroupBy ( isAsync ) ;
AssertSql (
@ "@__p_0='50'
SELECT [ t ] . [ OrderID ] , [ t ] . [ CustomerID ] , [ t ] . [ EmployeeID ] , [ t ] . [ OrderDate ]
FROM (
SELECT TOP @__p_0 [ o ] . [ OrderID ] , [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] , [ o ] . [ OrderDate ]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ OrderDate ]
) AS [ t ]
ORDER BY [ t ] . [ CustomerID ] ");
}
public override async Task OrderBy_Skip_Take_GroupBy ( bool isAsync )
{
await base . OrderBy_Skip_Take_GroupBy ( isAsync ) ;
AssertSql (
@ "@__p_0='450'
@__p_1 = ' 50 '
SELECT [ t ] . [ OrderID ] , [ t ] . [ CustomerID ] , [ t ] . [ EmployeeID ] , [ t ] . [ OrderDate ]
FROM (
SELECT [ o ] . [ OrderID ] , [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ] , [ o ] . [ OrderDate ]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ OrderDate ]
OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY
) AS [ t ]
ORDER BY [ t ] . [ CustomerID ] ");
}
public override async Task Select_Distinct_GroupBy ( bool isAsync )
{
await base . Select_Distinct_GroupBy ( isAsync ) ;
AssertSql (
@ "SELECT [t].[CustomerID], [t].[EmployeeID]
FROM (
SELECT DISTINCT [ o ] . [ CustomerID ] , [ o ] . [ EmployeeID ]
FROM [ Orders ] AS [ o ]
) AS [ t ]
ORDER BY [ t ] . [ CustomerID ] ");
}
public override async Task GroupBy_with_aggregate_through_navigation_property ( bool isAsync )
{
await base . GroupBy_with_aggregate_through_navigation_property ( isAsync ) ;
AssertSql (
@ "SELECT [c].[OrderID], [c].[CustomerID], [c].[EmployeeID], [c].[OrderDate]
FROM [ Orders ] AS [ c ]
ORDER BY [ c ] . [ EmployeeID ] ",
/ /
@ "SELECT [i#Customer0].[CustomerID], [i#Customer0].[Region]
FROM [ Customers ] AS [ i # Customer0 ] ",
/ /
@ "SELECT [i#Customer0].[CustomerID], [i#Customer0].[Region]
FROM [ Customers ] AS [ i # Customer0 ] ");
}
public override void GroupBy_anonymous_key_without_aggregate ( )
{
base . GroupBy_anonymous_key_without_aggregate ( ) ;
AssertSql (
@ "SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ CustomerID ] , [ o ] . [ OrderDate ] ");
}
public override async Task GroupBy_Shadow ( bool isAsync )
{
await base . GroupBy_Shadow ( isAsync ) ;
AssertSql (
@ "SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
FROM [ Employees ] AS [ e ]
WHERE ( [ e ] . [ Title ] = ' Sales Representative ' ) AND ( [ e ] . [ EmployeeID ] = 1 )
ORDER BY [ e ] . [ Title ] ");
}
public override async Task GroupBy_Shadow2 ( bool isAsync )
{
await base . GroupBy_Shadow2 ( isAsync ) ;
AssertSql (
@ "SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
FROM [ Employees ] AS [ e ]
WHERE ( [ e ] . [ Title ] = ' Sales Representative ' ) AND ( [ e ] . [ EmployeeID ] = 1 )
ORDER BY [ e ] . [ Title ] ");
}
public override async Task GroupBy_Shadow3 ( bool isAsync )
{
await base . GroupBy_Shadow3 ( isAsync ) ;
AssertSql (
@ "SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
FROM [ Employees ] AS [ e ]
WHERE [ e ] . [ EmployeeID ] = 1
ORDER BY [ e ] . [ EmployeeID ] ");
}
public override async Task GroupBy_Select_First_GroupBy ( bool isAsync )
{
await base . GroupBy_Select_First_GroupBy ( isAsync ) ;
AssertSql (
@ "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 ]
ORDER BY [ c ] . [ City ] ");
}
public override void Select_GroupBy ( )
{
base . Select_GroupBy ( ) ;
AssertSql (
@ "SELECT [o].[OrderID] AS [Order], [o].[CustomerID] AS [Customer]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ CustomerID ] ");
}
public override void Select_GroupBy_SelectMany ( )
{
base . Select_GroupBy_SelectMany ( ) ;
AssertSql (
@ "SELECT [o].[OrderID] AS [Order], [o].[CustomerID] AS [Customer]
FROM [ Orders ] AS [ o ]
ORDER BY [ o ] . [ OrderID ] ");
}
public override void Join_GroupBy_entity_ToList ( )
{
base . Join_GroupBy_entity_ToList ( ) ;
AssertSql (
@ "@__p_0='5'
@__p_1 = ' 50 '
SELECT [ t1 ] . [ CustomerID ] , [ t1 ] . [ Address ] , [ t1 ] . [ City ] , [ t1 ] . [ CompanyName ] , [ t1 ] . [ ContactName ] , [ t1 ] . [ ContactTitle ] , [ t1 ] . [ Country ] , [ t1 ] . [ Fax ] , [ t1 ] . [ Phone ] , [ t1 ] . [ PostalCode ] , [ t1 ] . [ Region ] , [ t2 ] . [ OrderID ] , [ t2 ] . [ CustomerID ] , [ t2 ] . [ EmployeeID ] , [ t2 ] . [ OrderDate ]
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 ] . [ CustomerID ]
) AS [ t1 ]
INNER JOIN (
SELECT TOP ( @__p_1 ) [ o0 ] . [ OrderID ] , [ o0 ] . [ CustomerID ] , [ o0 ] . [ EmployeeID ] , [ o0 ] . [ OrderDate ]
FROM [ Orders ] AS [ o0 ]
ORDER BY [ o0 ] . [ OrderID ]
) AS [ t2 ] ON [ t1 ] . [ CustomerID ] = [ t2 ] . [ CustomerID ] ");
}
public override void Double_GroupBy_with_aggregate ( )
{
base . Double_GroupBy_with_aggregate ( ) ;
AssertSql (
@ "SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
FROM [ Orders ] AS [ o0 ]
ORDER BY [ o0 ] . [ OrderID ] , [ o0 ] . [ OrderDate ] ");
}
private void AssertSql ( params string [ ] expected )
= > Fixture . TestSqlLoggerFactory . AssertSql ( expected ) ;
private void AssertContains ( params string [ ] expected )
= > Fixture . TestSqlLoggerFactory . AssertContains ( expected ) ;
protected override void ClearLog ( )
= > Fixture . TestSqlLoggerFactory . Clear ( ) ;
}
}