diff --git a/test/EFCore.Jet.FunctionalTests/GreenTests/ace_2010_odbc_x86.txt b/test/EFCore.Jet.FunctionalTests/GreenTests/ace_2010_odbc_x86.txt index a5d803b..9e74cf6 100644 --- a/test/EFCore.Jet.FunctionalTests/GreenTests/ace_2010_odbc_x86.txt +++ b/test/EFCore.Jet.FunctionalTests/GreenTests/ace_2010_odbc_x86.txt @@ -10158,6 +10158,8 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindKeylessEntitiesQueryJetTe EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindKeylessEntitiesQueryJetTest.KeylessEntity_with_included_navs_multi_level(async: True) EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindKeylessEntitiesQueryJetTest.KeylessEntity_with_mixed_tracking(isAsync: False) EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindKeylessEntitiesQueryJetTest.KeylessEntity_with_mixed_tracking(isAsync: True) +EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindKeylessEntitiesQueryJetTest.KeylessEntity_with_nav_defining_query(isAsync: False) +EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindKeylessEntitiesQueryJetTest.KeylessEntity_with_nav_defining_query(isAsync: True) EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindKeylessEntitiesQueryJetTest.Projecting_collection_correlated_with_keyless_entity_throws(async: False) EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindKeylessEntitiesQueryJetTest.Projecting_collection_correlated_with_keyless_entity_throws(async: True) EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindMiscellaneousQueryJetTest.Add_minutes_on_constant_value(async: False) diff --git a/test/EFCore.Jet.FunctionalTests/GreenTests/ace_2010_oledb_x86.txt b/test/EFCore.Jet.FunctionalTests/GreenTests/ace_2010_oledb_x86.txt index 704399f..cf2e135 100644 --- a/test/EFCore.Jet.FunctionalTests/GreenTests/ace_2010_oledb_x86.txt +++ b/test/EFCore.Jet.FunctionalTests/GreenTests/ace_2010_oledb_x86.txt @@ -1315,6 +1315,7 @@ EntityFrameworkCore.Jet.FunctionalTests.EverythingIsStringsJetTest.Can_read_back EntityFrameworkCore.Jet.FunctionalTests.EverythingIsStringsJetTest.Columns_have_expected_data_types EntityFrameworkCore.Jet.FunctionalTests.EverythingIsStringsJetTest.Object_to_string_conversion EntityFrameworkCore.Jet.FunctionalTests.EverythingIsStringsJetTest.Optional_datetime_reading_null_from_database +EntityFrameworkCore.Jet.FunctionalTests.ExecutionStrategyTest.Handles_commit_failure_async(realFailure: False) EntityFrameworkCore.Jet.FunctionalTests.ExecutionStrategyTest.Handles_commit_failure_multiple_SaveChanges(realFailure: False) EntityFrameworkCore.Jet.FunctionalTests.ExecutionStrategyTest.Handles_commit_failure_multiple_SaveChanges(realFailure: True) EntityFrameworkCore.Jet.FunctionalTests.ExecutionStrategyTest.Handles_commit_failure(realFailure: False) @@ -13387,6 +13388,8 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindKeylessEntitiesQueryJetTe EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindKeylessEntitiesQueryJetTest.KeylessEntity_with_included_navs_multi_level(async: True) EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindKeylessEntitiesQueryJetTest.KeylessEntity_with_mixed_tracking(isAsync: False) EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindKeylessEntitiesQueryJetTest.KeylessEntity_with_mixed_tracking(isAsync: True) +EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindKeylessEntitiesQueryJetTest.KeylessEntity_with_nav_defining_query(isAsync: False) +EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindKeylessEntitiesQueryJetTest.KeylessEntity_with_nav_defining_query(isAsync: True) EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindKeylessEntitiesQueryJetTest.Projecting_collection_correlated_with_keyless_entity_throws(async: False) EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindKeylessEntitiesQueryJetTest.Projecting_collection_correlated_with_keyless_entity_throws(async: True) EntityFrameworkCore.Jet.FunctionalTests.Query.NorthwindMiscellaneousQueryJetTest.Add_minutes_on_constant_value(async: False) diff --git a/test/EFCore.Jet.FunctionalTests/Query/NorthwindKeylessEntitiesQueryJetTest.cs b/test/EFCore.Jet.FunctionalTests/Query/NorthwindKeylessEntitiesQueryJetTest.cs index 0c3eeac..a0fa016 100644 --- a/test/EFCore.Jet.FunctionalTests/Query/NorthwindKeylessEntitiesQueryJetTest.cs +++ b/test/EFCore.Jet.FunctionalTests/Query/NorthwindKeylessEntitiesQueryJetTest.cs @@ -1,5 +1,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System.Data.Odbc; +using System.Data.OleDb; using System.Threading.Tasks; using EntityFrameworkCore.Jet.FunctionalTests.TestUtilities; using Microsoft.EntityFrameworkCore.Query; @@ -67,22 +69,16 @@ FROM `Alphabetical list of products` AS `a` public override async Task KeylessEntity_with_nav_defining_query(bool isAsync) { - await base.KeylessEntity_with_nav_defining_query(isAsync); - - AssertSql( - $@"{AssertSqlHelper.Declaration("@__ef_filter___searchTerm_0='A' (Size = 4000)")} - -{AssertSqlHelper.Declaration("@__ef_filter___searchTerm_1='A' (Size = 4000)")} - -SELECT `c`.`CompanyName`, ( - SELECT COUNT(*) - FROM `Orders` AS `o` - WHERE `c`.`CustomerID` = `o`.`CustomerID`) AS `OrderCount`, {AssertSqlHelper.Parameter("@__ef_filter___searchTerm_0")} AS `SearchTerm` -FROM `Customers` AS `c` -WHERE (({AssertSqlHelper.Parameter("@__ef_filter___searchTerm_1")} = '') OR (`c`.`CompanyName` IS NOT NULL AND (LEFT(`c`.`CompanyName`, LEN({AssertSqlHelper.Parameter("@__ef_filter___searchTerm_1")})) = {AssertSqlHelper.Parameter("@__ef_filter___searchTerm_1")}))) AND (( - SELECT COUNT(*) - FROM `Orders` AS `o` - WHERE `c`.`CustomerID` = `o`.`CustomerID`) > 0)"); + // FromSql mapping. Issue #21627. + var testStore = (JetTestStore)Fixture.TestStore; + if (testStore.IsOleDb()) + { + await Assert.ThrowsAsync(() => base.KeylessEntity_with_nav_defining_query(isAsync)); + } + else + { + await Assert.ThrowsAsync(() => base.KeylessEntity_with_nav_defining_query(isAsync)); + } } public override async Task KeylessEntity_with_mixed_tracking(bool isAsync) diff --git a/test/EFCore.Jet.FunctionalTests/TestUtilities/TestRelationalTransaction.cs b/test/EFCore.Jet.FunctionalTests/TestUtilities/TestRelationalTransaction.cs index 414aedb..feddb30 100644 --- a/test/EFCore.Jet.FunctionalTests/TestUtilities/TestRelationalTransaction.cs +++ b/test/EFCore.Jet.FunctionalTests/TestUtilities/TestRelationalTransaction.cs @@ -2,6 +2,8 @@ using System; using System.Data.Common; +using System.Threading.Tasks; +using System.Threading; using EntityFrameworkCore.Jet.Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Diagnostics; @@ -70,5 +72,29 @@ namespace EntityFrameworkCore.Jet.FunctionalTests.TestUtilities base.Commit(); } + + public override async Task CommitAsync(CancellationToken cancellationToken = default) + { + if (_testConnection.CommitFailures.Count > 0) + { + var fail = _testConnection.CommitFailures.Dequeue(); + if (fail.HasValue) + { + if (fail.Value) + { + await this.GetDbTransaction().RollbackAsync(cancellationToken); + } + else + { + await this.GetDbTransaction().CommitAsync(cancellationToken); + } + + await _testConnection.DbConnection.CloseAsync(); + throw _createExceptionFunc(_testConnection.ErrorNumber, _testConnection.ConnectionId); + } + } + + await base.CommitAsync(cancellationToken); + } } }