// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Threading.Tasks; using Xunit; namespace EntityFrameworkCore.Jet.FunctionalTests.Query { public partial class SimpleQueryJetTest { [ConditionalTheory] public override async Task KeylessEntity_simple(bool isAsync) { await base.KeylessEntity_simple(isAsync); AssertSql( @"SELECT [c].[CustomerID] + '' as [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]"); } [ConditionalTheory] public override async Task KeylessEntity_where_simple(bool isAsync) { await base.KeylessEntity_where_simple(isAsync); AssertSql( @"SELECT [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle] FROM ( SELECT [c].[CustomerID] + '' as [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 [c] WHERE [c].[City] = 'London'"); } public override void KeylessEntity_by_database_view() { base.KeylessEntity_by_database_view(); // See issue#17804 // when we have defining query and ToView, defining query wins // AssertSql( // @"SELECT [a].[CategoryName], [a].[ProductID], [a].[ProductName] //FROM [Alphabetical list of products] AS [a]"); AssertSql( @"SELECT [p].[ProductID], [p].[ProductName], 'Food' AS [CategoryName] FROM [Products] AS [p] WHERE [p].[Discontinued] <> True"); } public override void KeylessEntity_with_nav_defining_query() { base.KeylessEntity_with_nav_defining_query(); AssertSql( @"@__ef_filter___searchTerm_0='A' (Size = 4000) @__ef_filter___searchTerm_1='A' (Size = 4000) SELECT [c].[CompanyName], ( SELECT COUNT(*) FROM [Orders] AS [o] WHERE [c].[CustomerID] = [o].[CustomerID]) AS [OrderCount], @__ef_filter___searchTerm_0 AS [SearchTerm] FROM [Customers] AS [c] WHERE ((@__ef_filter___searchTerm_1 = '') OR ([c].[CompanyName] IS NOT NULL AND (LEFT([c].[CompanyName], LEN(@__ef_filter___searchTerm_1)) = @__ef_filter___searchTerm_1))) AND (( SELECT COUNT(*) FROM [Orders] AS [o] WHERE [c].[CustomerID] = [o].[CustomerID]) > 0)"); } public override async Task KeylessEntity_with_mixed_tracking(bool isAsync) { await base.KeylessEntity_with_mixed_tracking(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], [o].[CustomerID] FROM [Customers] AS [c] INNER JOIN ( select * from ""Orders"" ) AS [o] ON [c].[CustomerID] = [o].[CustomerID]"); } public override async Task KeylessEntity_with_defining_query(bool isAsync) { await base.KeylessEntity_with_defining_query(isAsync); AssertSql( @"SELECT [o].[CustomerID] FROM ( select * from ""Orders"" ) AS [o] WHERE [o].[CustomerID] = 'ALFKI'"); } public override async Task KeylessEntity_with_defining_query_and_correlated_collection(bool isAsync) { await base.KeylessEntity_with_defining_query_and_correlated_collection(isAsync); AssertSql( @"SELECT [o].[OrderID], [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate] FROM ( select * from ""Orders"" ) AS [o] LEFT JOIN [Customers] AS [c] ON [o].[CustomerID] = [c].[CustomerID] LEFT JOIN [Orders] AS [o0] ON [c].[CustomerID] = [o0].[CustomerID] WHERE [o].[CustomerID] = 'ALFKI' ORDER BY [c].[CustomerID], [o].[OrderID], [o0].[OrderID]"); } public override async Task KeylessEntity_select_where_navigation(bool isAsync) { await base.KeylessEntity_select_where_navigation(isAsync); AssertSql( @"SELECT [o].[CustomerID] FROM ( select * from ""Orders"" ) AS [o] LEFT JOIN [Customers] AS [c] ON [o].[CustomerID] = [c].[CustomerID] WHERE [c].[City] = 'Seattle'"); } public override async Task KeylessEntity_select_where_navigation_multi_level(bool isAsync) { await base.KeylessEntity_select_where_navigation_multi_level(isAsync); AssertSql( @"SELECT [o].[CustomerID] FROM ( select * from ""Orders"" ) AS [o] LEFT JOIN [Customers] AS [c] ON [o].[CustomerID] = [c].[CustomerID] WHERE EXISTS ( SELECT 1 FROM [Orders] AS [o0] WHERE [c].[CustomerID] IS NOT NULL AND ([c].[CustomerID] = [o0].[CustomerID]))"); } [ConditionalFact] public override void Auto_initialized_view_set() { base.Auto_initialized_view_set(); AssertSql( @"SELECT [c].[CustomerID] + '' as [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]"); } } }