diff --git a/src/EFCore.Jet.Data/JetCommand.cs b/src/EFCore.Jet.Data/JetCommand.cs
index be32f38..92e6c9b 100644
--- a/src/EFCore.Jet.Data/JetCommand.cs
+++ b/src/EFCore.Jet.Data/JetCommand.cs
@@ -397,22 +397,27 @@ namespace EntityFrameworkCore.Jet.Data
}
else
{
- for (var i = 0; i < usedParameterCount && command.Parameters.Count > 0; i++)
+ //don't touch parameters if EXEC stored procedure. Jet parameters do not use the @ symbol with parameter arguments in EXEC.
+ //As such this code would not find any parameters and clear them all out.
+ if (!commandText.StartsWith("EXEC", StringComparison.InvariantCultureIgnoreCase))
{
- command.Parameters.RemoveAt(0);
+ for (var i = 0; i < usedParameterCount && command.Parameters.Count > 0; i++)
+ {
+ command.Parameters.RemoveAt(0);
+ }
+
+ var parameterIndices = parser.GetStateIndices(
+ new[] { '@', '?' },
+ currentCommandStart,
+ commandDelimiter - currentCommandStart);
+
+ while (command.Parameters.Count > parameterIndices.Count)
+ {
+ command.Parameters.RemoveAt(parameterIndices.Count);
+ }
+
+ usedParameterCount += parameterIndices.Count;
}
-
- var parameterIndices = parser.GetStateIndices(
- new[] { '@', '?' },
- currentCommandStart,
- commandDelimiter - currentCommandStart);
-
- while (command.Parameters.Count > parameterIndices.Count)
- {
- command.Parameters.RemoveAt(parameterIndices.Count);
- }
-
- usedParameterCount += parameterIndices.Count;
}
commands.Add(command);
diff --git a/src/EFCore.Jet/Internal/JetModelValidator.cs b/src/EFCore.Jet/Internal/JetModelValidator.cs
index cf15b60..b909574 100644
--- a/src/EFCore.Jet/Internal/JetModelValidator.cs
+++ b/src/EFCore.Jet/Internal/JetModelValidator.cs
@@ -123,6 +123,29 @@ namespace EntityFrameworkCore.Jet.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.
+ ///
+ protected override void ValidateValueGeneration(
+ IEntityType entityType,
+ IKey key,
+ IDiagnosticsLogger logger)
+ {
+ if (entityType.GetTableName() != null
+ && (string?)entityType[RelationalAnnotationNames.MappingStrategy] == RelationalAnnotationNames.TpcMappingStrategy)
+ {
+ foreach (var storeGeneratedProperty in key.Properties.Where(
+ p => (p.ValueGenerated & ValueGenerated.OnAdd) != 0
+ && p.GetValueGenerationStrategy() == JetValueGenerationStrategy.IdentityColumn))
+ {
+ logger.TpcStoreGeneratedIdentityWarning(storeGeneratedProperty);
+ }
+ }
+ }
+
///
/// 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
diff --git a/src/EFCore.Jet/Query/Sql/Internal/JetQuerySqlGenerator.cs b/src/EFCore.Jet/Query/Sql/Internal/JetQuerySqlGenerator.cs
index 8a38eb3..a57177c 100644
--- a/src/EFCore.Jet/Query/Sql/Internal/JetQuerySqlGenerator.cs
+++ b/src/EFCore.Jet/Query/Sql/Internal/JetQuerySqlGenerator.cs
@@ -368,10 +368,14 @@ namespace EntityFrameworkCore.Jet.Query.Sql.Internal
if (parent.TryPeek(out var exp) && exp is SqlBinaryExpression)
{
+ Sql.Append("IIF(");
+ base.VisitColumn(columnExpression);
+ Sql.Append(" IS NULL, NULL, ");
Sql.Append(function);
Sql.Append("(");
base.VisitColumn(columnExpression);
Sql.Append(")");
+ Sql.Append(")");
return columnExpression;
}
}
@@ -944,5 +948,16 @@ namespace EntityFrameworkCore.Jet.Query.Sql.Internal
throw new InvalidOperationException(
RelationalStrings.ExecuteOperationWithUnsupportedOperatorInSqlGeneration(nameof(RelationalQueryableExtensions.ExecuteUpdate)));
}
+
+ ///
+ protected override void CheckComposableSqlTrimmed(ReadOnlySpan sql)
+ {
+ base.CheckComposableSqlTrimmed(sql);
+
+ if (sql.StartsWith("WITH", StringComparison.OrdinalIgnoreCase))
+ {
+ throw new InvalidOperationException(RelationalStrings.FromSqlNonComposable);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/src/EFCore.Jet/Update/Internal/JetUpdateSqlGenerator.cs b/src/EFCore.Jet/Update/Internal/JetUpdateSqlGenerator.cs
index 7daf389..8fef9f1 100644
--- a/src/EFCore.Jet/Update/Internal/JetUpdateSqlGenerator.cs
+++ b/src/EFCore.Jet/Update/Internal/JetUpdateSqlGenerator.cs
@@ -1,6 +1,7 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
+using System.Data;
using System.Globalization;
using System.Linq;
using System.Text;
@@ -157,5 +158,104 @@ namespace EntityFrameworkCore.Jet.Update.Internal
}, " AND ");
}
}
+
+ public override ResultSetMapping AppendStoredProcedureCall(
+ StringBuilder commandStringBuilder,
+ IReadOnlyModificationCommand command,
+ int commandPosition,
+ out bool requiresTransaction)
+ {
+ Check.DebugAssert(command.StoreStoredProcedure is not null, "command.StoredProcedure is not null");
+
+ var storedProcedure = command.StoreStoredProcedure;
+
+ var resultSetMapping = ResultSetMapping.NoResults;
+
+ foreach (var resultColumn in storedProcedure.ResultColumns)
+ {
+ resultSetMapping = ResultSetMapping.LastInResultSet;
+
+ if (resultColumn == command.RowsAffectedColumn)
+ {
+ resultSetMapping |= ResultSetMapping.ResultSetWithRowsAffectedOnly;
+ }
+ else
+ {
+ resultSetMapping = ResultSetMapping.LastInResultSet;
+ break;
+ }
+ }
+
+ Check.DebugAssert(
+ storedProcedure.Parameters.Any() || storedProcedure.ResultColumns.Any(),
+ "Stored procedure call with neither parameters nor result columns");
+
+ commandStringBuilder.Append("EXEC ");
+
+ if (storedProcedure.ReturnValue is not null)
+ {
+ var returnValueModification = command.ColumnModifications.First(c => c.Column is IStoreStoredProcedureReturnValue);
+
+ Check.DebugAssert(returnValueModification.UseCurrentValueParameter, "returnValueModification.UseCurrentValueParameter");
+ Check.DebugAssert(!returnValueModification.UseOriginalValueParameter, "!returnValueModification.UseOriginalValueParameter");
+
+ SqlGenerationHelper.GenerateParameterNamePlaceholder(commandStringBuilder, returnValueModification.ParameterName!);
+
+ commandStringBuilder.Append(" = ");
+
+ resultSetMapping |= ResultSetMapping.HasOutputParameters;
+ }
+
+ SqlGenerationHelper.DelimitIdentifier(commandStringBuilder, storedProcedure.Name, storedProcedure.Schema);
+
+ if (storedProcedure.Parameters.Any())
+ {
+ commandStringBuilder.Append(' ');
+
+ var first = true;
+
+ // Only positional parameter style supported for now, see #28439
+
+ // Note: the column modifications are already ordered according to the sproc parameter ordering
+ // (see ModificationCommand.GenerateColumnModifications)
+ for (var i = 0; i < command.ColumnModifications.Count; i++)
+ {
+ var columnModification = command.ColumnModifications[i];
+
+ if (columnModification.Column is not IStoreStoredProcedureParameter parameter)
+ {
+ continue;
+ }
+
+ if (first)
+ {
+ first = false;
+ }
+ else
+ {
+ commandStringBuilder.Append(", ");
+ }
+
+ Check.DebugAssert(columnModification.UseParameter, "Column modification matched a parameter, but UseParameter is false");
+
+ commandStringBuilder.Append(columnModification.UseOriginalValueParameter
+ ? columnModification.OriginalParameterName!
+ : columnModification.ParameterName!);
+
+ // Note that in/out parameters also get suffixed with OUTPUT in SQL Server
+ if (parameter.Direction.HasFlag(ParameterDirection.Output))
+ {
+ commandStringBuilder.Append(" OUTPUT");
+ resultSetMapping |= ResultSetMapping.HasOutputParameters;
+ }
+ }
+ }
+
+ commandStringBuilder.AppendLine(SqlGenerationHelper.StatementTerminator);
+
+ requiresTransaction = true;
+
+ return resultSetMapping;
+ }
}
}
diff --git a/test/EFCore.Jet.FunctionalTests/EntitySplittingSqlServerTest.cs b/test/EFCore.Jet.FunctionalTests/EntitySplittingSqlServerTest.cs
index f24a8b1..de9d3a6 100644
--- a/test/EFCore.Jet.FunctionalTests/EntitySplittingSqlServerTest.cs
+++ b/test/EFCore.Jet.FunctionalTests/EntitySplittingSqlServerTest.cs
@@ -19,60 +19,6 @@ public class EntitySplittingSqlServerTest : EntitySplittingTestBase
{
}
- [ConditionalFact]
- public virtual async Task Can_roundtrip_with_triggers()
- {
- await InitializeAsync(
- modelBuilder =>
- {
- OnModelCreating(modelBuilder);
-
- modelBuilder.Entity(
- ob =>
- {
- ob.SplitToTable(
- "MeterReadingDetails", t =>
- {
- t.HasTrigger("MeterReadingsDetails_Trigger");
- });
- });
- },
- sensitiveLogEnabled: false,
- seed: c =>
- {
- c.Database.ExecuteSqlRaw(
- @"
-CREATE OR ALTER TRIGGER [MeterReadingsDetails_Trigger]
-ON [MeterReadingDetails]
-FOR INSERT, UPDATE, DELETE AS
-BEGIN
- IF @@ROWCOUNT = 0
- return
-END");
- });
-
- await using (var context = CreateContext())
- {
- var meterReading = new MeterReading { ReadingStatus = MeterReadingStatus.NotAccesible, CurrentRead = "100" };
-
- await context.AddAsync(meterReading);
-
- TestSqlLoggerFactory.Clear();
-
- await context.SaveChangesAsync();
-
- Assert.Empty(TestSqlLoggerFactory.Log.Where(l => l.Level == LogLevel.Warning));
- }
-
- await using (var context = CreateContext())
- {
- var reading = await context.MeterReadings.SingleAsync();
-
- Assert.Equal(MeterReadingStatus.NotAccesible, reading.ReadingStatus);
- Assert.Equal("100", reading.CurrentRead);
- }
- }
-
public override async Task Can_roundtrip()
{
await base.Can_roundtrip();
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 bbf1c4e..91d35bd 100644
--- a/test/EFCore.Jet.FunctionalTests/GreenTests/ace_2010_odbc_x86.txt
+++ b/test/EFCore.Jet.FunctionalTests/GreenTests/ace_2010_odbc_x86.txt
@@ -7915,12 +7915,22 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.Bad_data_error
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.Bad_data_error_handling_null(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.Entity_equality_through_fromsql(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.Entity_equality_through_fromsql(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_Count_used_twice_with_parameters(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_Count_used_twice_with_parameters(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_Count_used_twice_without_parameters(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_Count_used_twice_without_parameters(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_used_twice_with_parameters(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_used_twice_with_parameters(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_used_twice_without_parameters(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_used_twice_without_parameters(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_annotations_do_not_affect_successive_calls(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_annotations_do_not_affect_successive_calls(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_composed_contains(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_composed_contains(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_composed_contains2(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_composed_contains2(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_composed_with_common_table_expression(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_composed_with_common_table_expression(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_composed_with_nullable_predicate(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_composed_with_nullable_predicate(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_queryable_composed_after_removing_whitespaces(async: False)
@@ -12957,6 +12967,8 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_annota
EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_annotations_do_not_affect_successive_calls(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_composed_contains(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_composed_contains(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_composed_with_common_table_expression(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_composed_with_common_table_expression(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_composed_with_empty_predicate(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_composed_with_empty_predicate(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_composed_with_predicate(async: False)
@@ -13093,6 +13105,10 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Inclu
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Include_reference_without_inheritance_with_filter(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Include_reference_without_inheritance(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Include_reference_without_inheritance(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Include_self_reference_with_inheritance_reverse(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Include_self_reference_with_inheritance_reverse(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Include_self_reference_with_inheritance(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Include_self_reference_with_inheritance(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Nested_include_collection_reference_on_non_entity_base_split(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Nested_include_collection_reference_on_non_entity_base_split(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Nested_include_collection_reference_on_non_entity_base(async: False)
@@ -13634,6 +13650,7 @@ EntityFrameworkCore.Jet.FunctionalTests.Scaffolding.JetDatabaseModelFactoryTest.
EntityFrameworkCore.Jet.FunctionalTests.Scaffolding.JetDatabaseModelFactoryTest.Simple_bool_literals_are_parsed_for_HasDefaultValue
EntityFrameworkCore.Jet.FunctionalTests.Scaffolding.JetDatabaseModelFactoryTest.Simple_byte_literals_are_parsed_for_HasDefaultValue
EntityFrameworkCore.Jet.FunctionalTests.Scaffolding.JetDatabaseModelFactoryTest.Simple_DateOnly_literals_are_parsed_for_HasDefaultValue
+EntityFrameworkCore.Jet.FunctionalTests.Scaffolding.JetDatabaseModelFactoryTest.Simple_DateTime_literals_are_parsed_for_HasDefaultValue
EntityFrameworkCore.Jet.FunctionalTests.Scaffolding.JetDatabaseModelFactoryTest.Simple_DateTimeOffset_literals_are_parsed_for_HasDefaultValue
EntityFrameworkCore.Jet.FunctionalTests.Scaffolding.JetDatabaseModelFactoryTest.Simple_decimal_literals_are_parsed_for_HasDefaultValue
EntityFrameworkCore.Jet.FunctionalTests.Scaffolding.JetDatabaseModelFactoryTest.Simple_double_literals_are_parsed_for_HasDefaultValue
@@ -14282,14 +14299,12 @@ EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Propertie
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToBytes", databaseType: "longbinary", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToChar", databaseType: "varchar(1)", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToDateTime", databaseType: "datetime", isNullable: True)
-EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToDateTimeOffset", databaseType: "datetime", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToEnum", databaseType: "integer", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToGuid", databaseType: "uniqueidentifier", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToNullableBool", databaseType: "smallint", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToNullableBytes", databaseType: "longbinary", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToNullableChar", databaseType: "varchar(1)", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToNullableDateTime", databaseType: "datetime", isNullable: True)
-EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToNullableDateTimeOffset", databaseType: "datetime", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToNullableEnum", databaseType: "integer", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToNullableGuid", databaseType: "uniqueidentifier", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToNullableNumber", databaseType: "byte", isNullable: True)
@@ -14315,14 +14330,12 @@ EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Propertie
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToBytes", databaseType: "longbinary", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToChar", databaseType: "varchar(1)", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToDateTime", databaseType: "datetime", isNullable: False)
-EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToDateTimeOffset", databaseType: "datetime", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToEnum", databaseType: "integer", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToGuid", databaseType: "uniqueidentifier", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToNullableBool", databaseType: "smallint", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToNullableBytes", databaseType: "longbinary", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToNullableChar", databaseType: "varchar(1)", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToNullableDateTime", databaseType: "datetime", isNullable: False)
-EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToNullableDateTimeOffset", databaseType: "datetime", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToNullableEnum", databaseType: "integer", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToNullableGuid", databaseType: "uniqueidentifier", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToNullableNumber", databaseType: "byte", isNullable: 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 70ce8f1..1428886 100644
--- a/test/EFCore.Jet.FunctionalTests/GreenTests/ace_2010_oledb_x86.txt
+++ b/test/EFCore.Jet.FunctionalTests/GreenTests/ace_2010_oledb_x86.txt
@@ -9297,12 +9297,20 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.Bad_data_error
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.Bad_data_error_handling_null(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.Entity_equality_through_fromsql(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.Entity_equality_through_fromsql(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_Count_used_twice_with_parameters(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_Count_used_twice_with_parameters(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_Count_used_twice_without_parameters(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_Count_used_twice_without_parameters(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_queryable_multiple_composed_with_parameters_and_closure_parameters_interpolated(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_queryable_multiple_composed_with_parameters_and_closure_parameters_interpolated(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_queryable_with_parameters_inline_interpolated(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_queryable_with_parameters_inline_interpolated(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_queryable_with_parameters_interpolated(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_queryable_with_parameters_interpolated(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_used_twice_with_parameters(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_used_twice_with_parameters(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_used_twice_without_parameters(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_used_twice_without_parameters(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_with_db_parameter_in_split_query(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_with_db_parameter_in_split_query(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSql_with_inlined_db_parameter_without_name_prefix(async: False)
@@ -9327,6 +9335,8 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_com
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_composed_contains(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_composed_contains2(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_composed_contains2(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_composed_with_common_table_expression(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_composed_with_common_table_expression(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_composed_with_nullable_predicate(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_composed_with_nullable_predicate(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.FromSqlQueryJetTest.FromSqlRaw_does_not_parameterize_interpolated_string(async: False)
@@ -9725,6 +9735,18 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Correlated_
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Correlated_collections_with_funky_orderby_complex_scenario2(isAsync: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Count_with_optional_navigation_is_translated_to_sql(isAsync: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Count_with_optional_navigation_is_translated_to_sql(isAsync: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddDays(isAsync: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddDays(isAsync: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddHours(isAsync: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddHours(isAsync: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddMinutes(isAsync: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddMinutes(isAsync: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddMonths(isAsync: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddMonths(isAsync: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddSeconds(isAsync: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddSeconds(isAsync: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddYears(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddYears(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.DateTimeOffsetNow_minus_timespan(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.DateTimeOffsetNow_minus_timespan(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Distinct_on_subquery_doesnt_get_lifted(isAsync: False)
@@ -10460,12 +10482,32 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_conta
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_contains_on_navigation_with_composite_keys(isAsync: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_count_subquery_without_collision(isAsync: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_count_subquery_without_collision(isAsync: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_DateOnly_AddDays(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_DateOnly_AddDays(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_DateOnly_AddMonths(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_DateOnly_AddMonths(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_DateOnly_AddYears(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_DateOnly_AddYears(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_DateOnly_Day(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_DateOnly_Day(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_DateOnly_DayOfWeek(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_DateOnly_DayOfWeek(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_DateOnly_DayOfYear(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_DateOnly_DayOfYear(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_DateOnly_Month(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_DateOnly_Month(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_DateOnly_Year(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_DateOnly_Year(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_day_component(isAsync: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_day_component(isAsync: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_dayofyear_component(isAsync: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_dayofyear_component(isAsync: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_minute_component(isAsync: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_minute_component(isAsync: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_month_component(isAsync: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_month_component(isAsync: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_second_component(isAsync: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_datetimeoffset_second_component(isAsync: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_enum_has_flag_subquery_client_eval(isAsync: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_enum_has_flag_subquery_client_eval(isAsync: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_enum_has_flag_subquery_with_pushdown(isAsync: False)
@@ -10478,6 +10520,8 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_enum_
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_enum_has_flag(isAsync: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_enum(isAsync: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_enum(isAsync: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_equals_method_on_nullable_with_object_overload(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_equals_method_on_nullable_with_object_overload(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_has_flag_with_nullable_parameter(isAsync: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_has_flag_with_nullable_parameter(isAsync: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_is_properly_lifted_from_subquery_created_by_include(isAsync: False)
@@ -10512,8 +10556,26 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_subqu
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_subquery_equality_to_null_without_composite_key(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeOnly_Add_TimeSpan(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeOnly_Add_TimeSpan(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeOnly_AddHours(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeOnly_AddHours(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeOnly_AddMinutes(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeOnly_AddMinutes(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeOnly_Hour(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeOnly_Hour(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeOnly_IsBetween(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeOnly_IsBetween(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeOnly_Minute(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeOnly_Minute(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeOnly_Second(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeOnly_Second(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeOnly_subtract_TimeOnly(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeOnly_subtract_TimeOnly(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeSpan_Hours(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeSpan_Hours(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeSpan_Minutes(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeSpan_Minutes(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeSpan_Seconds(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_TimeSpan_Seconds(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_with_enum_flags_parameter(isAsync: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.GearsOfWarQueryJetTest.Where_with_enum_flags_parameter(isAsync: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.IncludeOneToOneJetTest.Include_address
@@ -16009,6 +16071,8 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_annota
EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_annotations_do_not_affect_successive_calls(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_composed_contains(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_composed_contains(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_composed_with_common_table_expression(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_composed_with_common_table_expression(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_composed_with_empty_predicate(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_composed_with_empty_predicate(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.SqlQueryJetTest.SqlQueryRaw_composed_with_predicate(async: False)
@@ -16311,6 +16375,18 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Correlat
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Correlated_collections_with_funky_orderby_complex_scenario2(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Count_with_optional_navigation_is_translated_to_sql(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Count_with_optional_navigation_is_translated_to_sql(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddDays(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddDays(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddHours(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddHours(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddMinutes(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddMinutes(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddMonths(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddMonths(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddSeconds(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddSeconds(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddYears(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddYears(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.DateTimeOffsetNow_minus_timespan(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.DateTimeOffsetNow_minus_timespan(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Distinct_on_subquery_doesnt_get_lifted(async: False)
@@ -16858,6 +16934,8 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Select_n
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Select_null_propagation_works_for_multiple_navigations_with_composite_keys(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Select_null_propagation_works_for_navigations_with_composite_keys(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Select_null_propagation_works_for_navigations_with_composite_keys(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Select_required_navigation_on_derived_type(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Select_required_navigation_on_derived_type(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Select_required_navigation_on_the_same_type_with_cast(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Select_required_navigation_on_the_same_type_with_cast(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Select_Singleton_Navigation_With_Member_Access(async: False)
@@ -17042,12 +17120,32 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_co
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_contains_on_navigation_with_composite_keys(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_count_subquery_without_collision(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_count_subquery_without_collision(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_DateOnly_AddDays(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_DateOnly_AddDays(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_DateOnly_AddMonths(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_DateOnly_AddMonths(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_DateOnly_AddYears(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_DateOnly_AddYears(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_DateOnly_Day(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_DateOnly_Day(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_DateOnly_DayOfWeek(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_DateOnly_DayOfWeek(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_DateOnly_DayOfYear(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_DateOnly_DayOfYear(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_DateOnly_Month(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_DateOnly_Month(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_DateOnly_Year(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_DateOnly_Year(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_day_component(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_day_component(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_dayofyear_component(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_dayofyear_component(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_minute_component(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_minute_component(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_month_component(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_month_component(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_second_component(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_datetimeoffset_second_component(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_enum_has_flag_subquery_client_eval(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_enum_has_flag_subquery_client_eval(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_enum_has_flag_subquery_with_pushdown(async: False)
@@ -17060,6 +17158,8 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_en
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_enum_has_flag(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_enum(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_enum(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_equals_method_on_nullable_with_object_overload(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_equals_method_on_nullable_with_object_overload(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_has_flag_with_nullable_parameter(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_has_flag_with_nullable_parameter(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_is_properly_lifted_from_subquery_created_by_include(async: False)
@@ -17076,6 +17176,8 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_nu
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_nullable_enum_with_null_constant(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_nullable_enum_with_nullable_parameter(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_nullable_enum_with_nullable_parameter(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_required_navigation_on_derived_type(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_required_navigation_on_derived_type(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_subquery_boolean_with_pushdown(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_subquery_boolean_with_pushdown(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_subquery_boolean(async: False)
@@ -17092,8 +17194,26 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_su
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_subquery_equality_to_null_without_composite_key(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeOnly_Add_TimeSpan(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeOnly_Add_TimeSpan(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeOnly_AddHours(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeOnly_AddHours(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeOnly_AddMinutes(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeOnly_AddMinutes(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeOnly_Hour(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeOnly_Hour(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeOnly_IsBetween(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeOnly_IsBetween(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeOnly_Minute(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeOnly_Minute(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeOnly_Second(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeOnly_Second(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeOnly_subtract_TimeOnly(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeOnly_subtract_TimeOnly(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeSpan_Hours(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeSpan_Hours(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeSpan_Minutes(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeSpan_Minutes(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeSpan_Seconds(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_TimeSpan_Seconds(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_with_enum_flags_parameter(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCGearsOfWarQueryJetTest.Where_with_enum_flags_parameter(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCManyToManyNoTrackingQueryJetTest.Check_all_tests_overridden
@@ -17525,6 +17645,10 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Inclu
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Include_reference_without_inheritance_with_filter(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Include_reference_without_inheritance(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Include_reference_without_inheritance(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Include_self_reference_with_inheritance_reverse(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Include_self_reference_with_inheritance_reverse(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Include_self_reference_with_inheritance(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Include_self_reference_with_inheritance(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Nested_include_collection_reference_on_non_entity_base_split(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Nested_include_collection_reference_on_non_entity_base_split(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPCRelationshipsQueryJetTest.Nested_include_collection_reference_on_non_entity_base(async: False)
@@ -17907,6 +18031,18 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Correlat
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Correlated_collections_with_funky_orderby_complex_scenario2(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Count_with_optional_navigation_is_translated_to_sql(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Count_with_optional_navigation_is_translated_to_sql(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddDays(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddDays(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddHours(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddHours(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddMinutes(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddMinutes(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddMonths(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddMonths(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddSeconds(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddSeconds(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddYears(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.DateTimeOffset_DateAdd_AddYears(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.DateTimeOffsetNow_minus_timespan(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.DateTimeOffsetNow_minus_timespan(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Distinct_on_subquery_doesnt_get_lifted(async: False)
@@ -18640,12 +18776,32 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_co
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_contains_on_navigation_with_composite_keys(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_count_subquery_without_collision(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_count_subquery_without_collision(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_DateOnly_AddDays(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_DateOnly_AddDays(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_DateOnly_AddMonths(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_DateOnly_AddMonths(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_DateOnly_AddYears(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_DateOnly_AddYears(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_DateOnly_Day(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_DateOnly_Day(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_DateOnly_DayOfWeek(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_DateOnly_DayOfWeek(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_DateOnly_DayOfYear(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_DateOnly_DayOfYear(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_DateOnly_Month(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_DateOnly_Month(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_DateOnly_Year(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_DateOnly_Year(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_day_component(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_day_component(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_dayofyear_component(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_dayofyear_component(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_minute_component(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_minute_component(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_month_component(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_month_component(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_second_component(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_datetimeoffset_second_component(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_enum_has_flag_subquery_client_eval(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_enum_has_flag_subquery_client_eval(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_enum_has_flag_subquery_with_pushdown(async: False)
@@ -18658,6 +18814,8 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_en
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_enum_has_flag(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_enum(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_enum(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_equals_method_on_nullable_with_object_overload(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_equals_method_on_nullable_with_object_overload(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_has_flag_with_nullable_parameter(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_has_flag_with_nullable_parameter(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_is_properly_lifted_from_subquery_created_by_include(async: False)
@@ -18692,8 +18850,26 @@ EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_su
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_subquery_equality_to_null_without_composite_key(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeOnly_Add_TimeSpan(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeOnly_Add_TimeSpan(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeOnly_AddHours(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeOnly_AddHours(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeOnly_AddMinutes(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeOnly_AddMinutes(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeOnly_Hour(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeOnly_Hour(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeOnly_IsBetween(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeOnly_IsBetween(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeOnly_Minute(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeOnly_Minute(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeOnly_Second(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeOnly_Second(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeOnly_subtract_TimeOnly(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeOnly_subtract_TimeOnly(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeSpan_Hours(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeSpan_Hours(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeSpan_Minutes(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeSpan_Minutes(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeSpan_Seconds(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_TimeSpan_Seconds(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_with_enum_flags_parameter(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTGearsOfWarQueryJetTest.Where_with_enum_flags_parameter(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Query.TPTInheritanceQueryJetTest.Byte_enum_value_constant_used_in_projection(async: False)
@@ -19414,6 +19590,7 @@ EntityFrameworkCore.Jet.FunctionalTests.Scaffolding.JetDatabaseModelFactoryTest.
EntityFrameworkCore.Jet.FunctionalTests.Scaffolding.JetDatabaseModelFactoryTest.Simple_bool_literals_are_parsed_for_HasDefaultValue
EntityFrameworkCore.Jet.FunctionalTests.Scaffolding.JetDatabaseModelFactoryTest.Simple_byte_literals_are_parsed_for_HasDefaultValue
EntityFrameworkCore.Jet.FunctionalTests.Scaffolding.JetDatabaseModelFactoryTest.Simple_DateOnly_literals_are_parsed_for_HasDefaultValue
+EntityFrameworkCore.Jet.FunctionalTests.Scaffolding.JetDatabaseModelFactoryTest.Simple_DateTime_literals_are_parsed_for_HasDefaultValue
EntityFrameworkCore.Jet.FunctionalTests.Scaffolding.JetDatabaseModelFactoryTest.Simple_DateTimeOffset_literals_are_parsed_for_HasDefaultValue
EntityFrameworkCore.Jet.FunctionalTests.Scaffolding.JetDatabaseModelFactoryTest.Simple_decimal_literals_are_parsed_for_HasDefaultValue
EntityFrameworkCore.Jet.FunctionalTests.Scaffolding.JetDatabaseModelFactoryTest.Simple_double_literals_are_parsed_for_HasDefaultValue
@@ -20237,6 +20414,9 @@ EntityFrameworkCore.Jet.FunctionalTests.Update.NonSharedModelUpdatesJetTest.DbUp
EntityFrameworkCore.Jet.FunctionalTests.Update.NonSharedModelUpdatesJetTest.DbUpdateException_Entries_is_correct_with_multiple_inserts(async: True)
EntityFrameworkCore.Jet.FunctionalTests.Update.NonSharedModelUpdatesJetTest.Principal_and_dependent_roundtrips_with_cycle_breaking(async: False)
EntityFrameworkCore.Jet.FunctionalTests.Update.NonSharedModelUpdatesJetTest.Principal_and_dependent_roundtrips_with_cycle_breaking(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.Update.StoredProcedureUpdateJetTest.Delete(async: False)
+EntityFrameworkCore.Jet.FunctionalTests.Update.StoredProcedureUpdateJetTest.Delete(async: True)
+EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Can_insert_and_read_back_with_conversions(valueOrder: [0, 2, 0, 2])
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Convert_int_non_nulls_to_string_non_nulls_in_provider
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Convert_int_non_nulls_to_string_non_nulls_in_provider_object
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Convert_int_non_nulls_to_string_nulls_in_provider
@@ -20340,14 +20520,12 @@ EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Propertie
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToBytes", databaseType: "longbinary", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToChar", databaseType: "varchar(1)", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToDateTime", databaseType: "datetime", isNullable: True)
-EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToDateTimeOffset", databaseType: "datetime", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToEnum", databaseType: "integer", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToGuid", databaseType: "uniqueidentifier", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToNullableBool", databaseType: "smallint", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToNullableBytes", databaseType: "longbinary", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToNullableChar", databaseType: "varchar(1)", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToNullableDateTime", databaseType: "datetime", isNullable: True)
-EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToNullableDateTimeOffset", databaseType: "datetime", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToNullableEnum", databaseType: "integer", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToNullableGuid", databaseType: "uniqueidentifier", isNullable: True)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "NullableStringToNullableNumber", databaseType: "byte", isNullable: True)
@@ -20373,14 +20551,12 @@ EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Propertie
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToBytes", databaseType: "longbinary", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToChar", databaseType: "varchar(1)", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToDateTime", databaseType: "datetime", isNullable: False)
-EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToDateTimeOffset", databaseType: "datetime", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToEnum", databaseType: "integer", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToGuid", databaseType: "uniqueidentifier", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToNullableBool", databaseType: "smallint", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToNullableBytes", databaseType: "longbinary", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToNullableChar", databaseType: "varchar(1)", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToNullableDateTime", databaseType: "datetime", isNullable: False)
-EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToNullableDateTimeOffset", databaseType: "datetime", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToNullableEnum", databaseType: "integer", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToNullableGuid", databaseType: "uniqueidentifier", isNullable: False)
EntityFrameworkCore.Jet.FunctionalTests.ValueConvertersEndToEndJetTest.Properties_with_conversions_map_to_appropriately_null_columns(propertyName: "StringToNullableNumber", databaseType: "byte", isNullable: False)
diff --git a/test/EFCore.Jet.FunctionalTests/JetQueryTriggersTest.cs b/test/EFCore.Jet.FunctionalTests/JetQueryTriggersTest.cs
deleted file mode 100644
index c35ce97..0000000
--- a/test/EFCore.Jet.FunctionalTests/JetQueryTriggersTest.cs
+++ /dev/null
@@ -1,144 +0,0 @@
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-using System;
-using System.Linq;
-using EntityFrameworkCore.Jet.FunctionalTests.TestUtilities;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.TestUtilities;
-using Xunit;
-
-// ReSharper disable InconsistentNaming
-namespace EntityFrameworkCore.Jet.FunctionalTests
-{
- public class JetQueryTriggersTest : IClassFixture
- {
- public JetQueryTriggersTest(JetTriggersFixture fixture) => Fixture = fixture;
-
- private JetTriggersFixture Fixture { get; }
-
- [ConditionalFact]
- public void Triggers_with_subqueries_run_on_insert_update_and_delete()
- {
- using (var context = CreateContext())
- {
- var product = new Product { Name = "blah" };
- context.Products.Add(product);
- context.SaveChanges();
-
- Assert.Equal(1, product.StoreUpdated);
-
- product.Name = "fooh";
- context.SaveChanges();
-
- Assert.Equal(2, product.StoreUpdated);
-
- context.Products.Remove(product);
- context.SaveChanges();
-
- Assert.Empty(context.Products);
- }
- }
-
- [ConditionalFact]
- public void Triggers_with_subqueries_work_with_batch_operations()
- {
- using (var context = CreateContext())
- {
- var productToBeUpdated1 = new Product { Name = "u1" };
- var productToBeUpdated2 = new Product { Name = "u2" };
- context.Products.Add(productToBeUpdated1);
- context.Products.Add(productToBeUpdated2);
-
- var productToBeDeleted1 = new Product { Name = "d1" };
- var productToBeDeleted2 = new Product { Name = "d2" };
- context.Products.Add(productToBeDeleted1);
- context.Products.Add(productToBeDeleted2);
-
- context.SaveChanges();
-
- var productToBeAdded1 = new Product { Name = "a1" };
- var productToBeAdded2 = new Product { Name = "a2" };
- context.Products.Add(productToBeAdded1);
- context.Products.Add(productToBeAdded2);
-
- productToBeUpdated1.Name = "n1";
- productToBeUpdated2.Name = "n2";
-
- context.Products.Remove(productToBeDeleted1);
- context.Products.Remove(productToBeDeleted2);
-
- context.SaveChanges();
-
- Assert.Equal(1, productToBeAdded1.StoreUpdated);
- Assert.Equal(1, productToBeAdded2.StoreUpdated);
- Assert.Equal(2, productToBeUpdated1.StoreUpdated);
- Assert.Equal(2, productToBeUpdated2.StoreUpdated);
-
- var products = context.Products.ToList();
- Assert.Equal(4, products.Count);
-
- context.Products.RemoveRange(products);
-
- context.SaveChanges();
- }
- }
-
- protected QueryTriggersContext CreateContext() => (QueryTriggersContext)Fixture.CreateContext();
-
- protected class QueryTriggersContext : PoolableDbContext
- {
- public QueryTriggersContext(DbContextOptions options)
- : base(options)
- {
- }
-
- public virtual DbSet Products { get; set; }
-
- protected override void OnModelCreating(ModelBuilder modelBuilder)
- {
- modelBuilder.Entity(
- eb =>
- {
- eb.Property(e => e.StoreUpdated)
- .HasDefaultValue(0)
- .ValueGeneratedOnAddOrUpdate();
- eb.ToTable("UpdatedProducts");
- });
- }
- }
-
- protected class Product
- {
- public virtual int Id { get; set; }
- public virtual byte[] Version { get; set; }
- public virtual string Name { get; set; }
- public virtual int StoreUpdated { get; set; }
- }
-
- public class JetTriggersFixture : SharedStoreFixtureBase
- {
- protected override string StoreName { get; } = "JetQueryTriggers";
- protected override Type ContextType { get; } = typeof(QueryTriggersContext);
- protected override ITestStoreFactory TestStoreFactory => JetTestStoreFactory.Instance;
-
- protected override void Seed(DbContext context)
- {
- context.Database.EnsureCreatedResiliently();
-
- context.Database.ExecuteSqlRaw(
- @"
-CREATE TRIGGER TRG_InsertUpdateProduct
-ON UpdatedProducts
-AFTER INSERT, UPDATE AS
-BEGIN
- IF @@ROWCOUNT = 0
- return
- SET nocount on;
-
- UPDATE UpdatedProducts set StoreUpdated = StoreUpdated + 1
- WHERE Id IN(SELECT INSERTED.Id FROM INSERTED);
-END");
- }
- }
- }
-}
diff --git a/test/EFCore.Jet.FunctionalTests/JetTriggersTest.cs b/test/EFCore.Jet.FunctionalTests/JetTriggersTest.cs
deleted file mode 100644
index a80445c..0000000
--- a/test/EFCore.Jet.FunctionalTests/JetTriggersTest.cs
+++ /dev/null
@@ -1,200 +0,0 @@
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-using System;
-using System.Linq;
-using EntityFrameworkCore.Jet.FunctionalTests.TestUtilities;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.TestUtilities;
-using Xunit;
-
-// ReSharper disable ParameterOnlyUsedForPreconditionCheck.Local
-// ReSharper disable InconsistentNaming
-namespace EntityFrameworkCore.Jet.FunctionalTests
-{
- public class JetTriggersTest : IClassFixture
- {
- public JetTriggersTest(JetTriggersFixture fixture) => Fixture = fixture;
-
- private JetTriggersFixture Fixture { get; }
-
- [ConditionalFact]
- public void Triggers_run_on_insert_update_and_delete()
- {
- using (var context = CreateContext())
- {
- var product = new Product { Name = "blah" };
- context.Products.Add(product);
- context.SaveChanges();
-
- var firstVersion = product.Version;
- var productBackup = context.ProductBackups.AsNoTracking().Single();
- AssertEqual(product, productBackup);
-
- product.Name = "fooh";
- context.SaveChanges();
-
- Assert.NotEqual(firstVersion, product.Version);
- productBackup = context.ProductBackups.AsNoTracking().Single();
- AssertEqual(product, productBackup);
-
- context.Products.Remove(product);
- context.SaveChanges();
-
- Assert.Empty(context.Products);
- Assert.Empty(context.ProductBackups);
- }
- }
-
- [ConditionalFact]
- public void Triggers_work_with_batch_operations()
- {
- using (var context = CreateContext())
- {
- var productToBeUpdated1 = new Product { Name = "u1" };
- var productToBeUpdated2 = new Product { Name = "u2" };
- context.Products.Add(productToBeUpdated1);
- context.Products.Add(productToBeUpdated2);
-
- var productToBeDeleted1 = new Product { Name = "d1" };
- var productToBeDeleted2 = new Product { Name = "d2" };
- context.Products.Add(productToBeDeleted1);
- context.Products.Add(productToBeDeleted2);
-
- context.SaveChanges();
-
- var productToBeAdded1 = new Product { Name = "a1" };
- var productToBeAdded2 = new Product { Name = "a2" };
- context.Products.Add(productToBeAdded1);
- context.Products.Add(productToBeAdded2);
-
- productToBeUpdated1.Name = "n1";
- productToBeUpdated2.Name = "n2";
-
- context.Products.Remove(productToBeDeleted1);
- context.Products.Remove(productToBeDeleted2);
-
- context.SaveChanges();
-
- var productBackups = context.ProductBackups.ToList();
- Assert.Equal(4, productBackups.Count);
-
- AssertEqual(productToBeAdded1, productBackups.Single(p => p.Name == "a1"));
- AssertEqual(productToBeAdded2, productBackups.Single(p => p.Name == "a2"));
- AssertEqual(productToBeUpdated1, productBackups.Single(p => p.Name == "n1"));
- AssertEqual(productToBeUpdated2, productBackups.Single(p => p.Name == "n2"));
-
- context.Products.RemoveRange(context.Products);
-
- context.SaveChanges();
- }
- }
-
- private static void AssertEqual(Product product, ProductBackup productBackup)
- {
- Assert.Equal(product.Id, productBackup.Id);
- Assert.Equal(product.Name, productBackup.Name);
- Assert.Equal(product.Version, productBackup.Version);
- }
-
- protected TriggersContext CreateContext() => (TriggersContext)Fixture.CreateContext();
-
- protected class TriggersContext : PoolableDbContext
- {
- public TriggersContext(DbContextOptions options)
- : base(options)
- {
- }
-
- public virtual DbSet Products { get; set; }
- public virtual DbSet ProductBackups { get; set; }
-
- protected override void OnModelCreating(ModelBuilder modelBuilder)
- {
- modelBuilder.Entity(
- eb =>
- {
- eb.Property(e => e.Version)
- .ValueGeneratedOnAddOrUpdate()
- .IsConcurrencyToken();
- eb.Ignore(e => e.StoreUpdated);
- });
-
- modelBuilder.Entity()
- .Property(e => e.Id).ValueGeneratedNever();
- }
- }
-
- protected class Product
- {
- public virtual int Id { get; set; }
- public virtual byte[] Version { get; set; }
- public virtual string Name { get; set; }
- public virtual int StoreUpdated { get; set; }
- }
-
- protected class ProductBackup
- {
- public virtual int Id { get; set; }
- public virtual byte[] Version { get; set; }
- public virtual string Name { get; set; }
- }
-
- public class JetTriggersFixture : SharedStoreFixtureBase
- {
- protected override string StoreName { get; } = "JetTriggers";
- protected override Type ContextType { get; } = typeof(TriggersContext);
- protected override ITestStoreFactory TestStoreFactory => JetTestStoreFactory.Instance;
-
- protected override void Seed(PoolableDbContext context)
- {
- context.Database.EnsureCreatedResiliently();
-
- context.Database.ExecuteSqlRaw(
- @"
-CREATE TRIGGER TRG_InsertProduct
-ON Products
-AFTER INSERT AS
-BEGIN
- IF @@ROWCOUNT = 0
- return
- SET nocount on;
-
- INSERT INTO ProductBackups
- SELECT * FROM INSERTED;
-END");
-
- context.Database.ExecuteSqlRaw(
- @"
-CREATE TRIGGER TRG_UpdateProduct
-ON Products
-AFTER UPDATE AS
-BEGIN
- IF @@ROWCOUNT = 0
- return
- SET nocount on;
-
- UPDATE b
- SET b.Name = p.Name, b.Version = p.Version
- FROM ProductBackups b
- INNER JOIN Products p
- ON b.Id = p.Id
- WHERE p.Id IN(SELECT INSERTED.Id FROM INSERTED);
-END");
-
- context.Database.ExecuteSqlRaw(
- @"
-CREATE TRIGGER TRG_DeleteProduct
-ON Products
-AFTER DELETE AS
-BEGIN
- IF @@ROWCOUNT = 0
- return
- SET nocount on;
-
- DELETE FROM ProductBackups
- WHERE Id IN(SELECT DELETED.Id FROM DELETED);
-END");
- }
- }
- }
-}
diff --git a/test/EFCore.Jet.FunctionalTests/Query/FromSqlQueryJetTest.cs b/test/EFCore.Jet.FunctionalTests/Query/FromSqlQueryJetTest.cs
index e6ff1c9..093ab31 100644
--- a/test/EFCore.Jet.FunctionalTests/Query/FromSqlQueryJetTest.cs
+++ b/test/EFCore.Jet.FunctionalTests/Query/FromSqlQueryJetTest.cs
@@ -12,12 +12,18 @@ using Xunit;
using Xunit.Abstractions;
using EntityFrameworkCore.Jet.FunctionalTests.TestUtilities;
using System.Data.Odbc;
+using EntityFrameworkCore.Jet.Storage.Internal;
+using Microsoft.EntityFrameworkCore.Storage;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.EntityFrameworkCore.TestModels.Northwind;
+using Microsoft.EntityFrameworkCore;
+using System.Linq;
namespace EntityFrameworkCore.Jet.FunctionalTests.Query;
-public class FromSqlQueryJetTest : FromSqlQueryTestBase>
+public class FromSqlQueryJetTest : FromSqlQueryTestBase
{
- public FromSqlQueryJetTest(NorthwindQueryJetFixture fixture, ITestOutputHelper testOutputHelper)
+ public FromSqlQueryJetTest(FromSqlQueryJetTestFixture fixture, ITestOutputHelper testOutputHelper)
: base(fixture)
{
Fixture.TestSqlLoggerFactory.SetTestOutputHelper(testOutputHelper);
@@ -1003,4 +1009,81 @@ FROM (
private void AssertSql(params string[] expected)
=> Fixture.TestSqlLoggerFactory.AssertBaseline(expected);
+
+ public class FromSqlQueryJetTestFixture : NorthwindQueryJetFixture
+ {
+ protected override IServiceCollection AddServices(IServiceCollection serviceCollection)
+ => base.AddServices(serviceCollection)
+ .AddSingleton()
+ .AddScoped()
+ .AddSingleton();
+ }
+
+ public override async Task FromSql_used_twice_without_parameters(bool async)
+ {
+ await AssertAny(
+ async,
+ ss => ((DbSet)ss.Set())
+ .FromSqlRaw(NormalizeDelimitersInRawString("SELECT 'ALFKI' AS [CustomerID] FROM `#Dual`"))
+ .IgnoreQueryFilters(),
+ ss => ss.Set().Where(x => x.CustomerID == "ALFKI").Select(x => new OrderQuery(x.CustomerID)));
+
+ await AssertAny(
+ async,
+ ss => ((DbSet)ss.Set())
+ .FromSqlRaw(NormalizeDelimitersInRawString("SELECT 'ALFKI' AS [CustomerID] FROM `#Dual`"))
+ .IgnoreQueryFilters(),
+ ss => ss.Set().Where(x => x.CustomerID == "ALFKI").Select(x => new OrderQuery(x.CustomerID)));
+ }
+
+ public override async Task FromSql_used_twice_with_parameters(bool async)
+ {
+ await AssertAny(
+ async,
+ ss => ((DbSet)ss.Set())
+ .FromSqlRaw(NormalizeDelimitersInRawString("SELECT {0} AS [CustomerID] FROM `#Dual`"), "ALFKI")
+ .IgnoreQueryFilters(),
+ ss => ss.Set().Where(x => x.CustomerID == "ALFKI").Select(x => new OrderQuery(x.CustomerID)));
+
+ await AssertAny(
+ async,
+ ss => ((DbSet)ss.Set())
+ .FromSqlRaw(NormalizeDelimitersInRawString("SELECT {0} AS [CustomerID] FROM `#Dual`"), "ALFKI")
+ .IgnoreQueryFilters(),
+ ss => ss.Set().Where(x => x.CustomerID == "ALFKI").Select(x => new OrderQuery(x.CustomerID)));
+ }
+
+ public override async Task FromSql_Count_used_twice_without_parameters(bool async)
+ {
+ await AssertCount(
+ async,
+ ss => ((DbSet)ss.Set())
+ .FromSqlRaw(NormalizeDelimitersInRawString("SELECT 'ALFKI' AS [CustomerID] FROM `#Dual`"))
+ .IgnoreQueryFilters(),
+ ss => ss.Set().Where(x => x.CustomerID == "ALFKI").Select(x => new OrderQuery(x.CustomerID)));
+
+ await AssertCount(
+ async,
+ ss => ((DbSet)ss.Set())
+ .FromSqlRaw(NormalizeDelimitersInRawString("SELECT 'ALFKI' AS [CustomerID] FROM `#Dual`"))
+ .IgnoreQueryFilters(),
+ ss => ss.Set().Where(x => x.CustomerID == "ALFKI").Select(x => new OrderQuery(x.CustomerID)));
+ }
+
+ public override async Task FromSql_Count_used_twice_with_parameters(bool async)
+ {
+ await AssertCount(
+ async,
+ ss => ((DbSet)ss.Set())
+ .FromSqlRaw(NormalizeDelimitersInRawString("SELECT {0} AS [CustomerID] FROM `#Dual`"), "ALFKI")
+ .IgnoreQueryFilters(),
+ ss => ss.Set().Where(x => x.CustomerID == "ALFKI").Select(x => new OrderQuery(x.CustomerID)));
+
+ await AssertCount(
+ async,
+ ss => ((DbSet)ss.Set())
+ .FromSqlRaw(NormalizeDelimitersInRawString("SELECT {0} AS [CustomerID] FROM `#Dual`"), "ALFKI")
+ .IgnoreQueryFilters(),
+ ss => ss.Set().Where(x => x.CustomerID == "ALFKI").Select(x => new OrderQuery(x.CustomerID)));
+ }
}
diff --git a/test/EFCore.Jet.FunctionalTests/Query/GearsOfWarQueryJetFixture.cs b/test/EFCore.Jet.FunctionalTests/Query/GearsOfWarQueryJetFixture.cs
index 69b7da9..d90788e 100644
--- a/test/EFCore.Jet.FunctionalTests/Query/GearsOfWarQueryJetFixture.cs
+++ b/test/EFCore.Jet.FunctionalTests/Query/GearsOfWarQueryJetFixture.cs
@@ -24,7 +24,43 @@ namespace EntityFrameworkCore.Jet.FunctionalTests.Query
// Drop constraint to workaround Jet limitation regarding compound foreign keys and NULL.
context.Database.ExecuteSql($"ALTER TABLE `Gears` DROP CONSTRAINT `FK_Gears_Gears_LeaderNickname_LeaderSquadId`");
- base.Seed(context);
+ var squads = GearsOfWarData.CreateSquads();
+ var missions = GearsOfWarData.CreateMissions();
+ var squadMissions = GearsOfWarData.CreateSquadMissions();
+ var cities = GearsOfWarData.CreateCities();
+ var weapons = GearsOfWarData.CreateWeapons();
+ var tags = GearsOfWarData.CreateTags();
+ var gears = GearsOfWarData.CreateGears();
+ var locustLeaders = GearsOfWarData.CreateLocustLeaders();
+ var factions = GearsOfWarData.CreateFactions();
+ var locustHighCommands = GearsOfWarData.CreateHighCommands();
+
+ foreach (var mission in missions)
+ {
+ if (mission.Timeline.Year < 100)
+ {
+ mission.Timeline = mission.Timeline.AddYears(100);
+ }
+ }
+
+ GearsOfWarData.WireUp(
+ squads, missions, squadMissions, cities, weapons, tags, gears, locustLeaders, factions, locustHighCommands);
+
+ context.Squads.AddRange(squads);
+ context.Missions.AddRange(missions);
+ context.SquadMissions.AddRange(squadMissions);
+ context.Cities.AddRange(cities);
+ context.Weapons.AddRange(weapons);
+ context.Tags.AddRange(tags);
+ context.Gears.AddRange(gears);
+ context.LocustLeaders.AddRange(locustLeaders);
+ context.Factions.AddRange(factions);
+ context.LocustHighCommands.AddRange(locustHighCommands);
+ context.SaveChanges();
+
+ GearsOfWarData.WireUp2(locustLeaders, factions);
+
+ context.SaveChanges();
}
public override ISetSource GetExpectedData()
@@ -33,6 +69,10 @@ namespace EntityFrameworkCore.Jet.FunctionalTests.Query
foreach (var mission in data.Missions)
{
+ if (mission.Timeline.Year < 100)
+ {
+ mission.Timeline = mission.Timeline.AddYears(100);
+ }
mission.Timeline = JetTestHelpers.GetExpectedValue(mission.Timeline);
}
diff --git a/test/EFCore.Jet.FunctionalTests/Query/GearsOfWarQueryJetTest.cs b/test/EFCore.Jet.FunctionalTests/Query/GearsOfWarQueryJetTest.cs
index d182f58..cc1ef00 100644
--- a/test/EFCore.Jet.FunctionalTests/Query/GearsOfWarQueryJetTest.cs
+++ b/test/EFCore.Jet.FunctionalTests/Query/GearsOfWarQueryJetTest.cs
@@ -2587,9 +2587,11 @@ WHERE DATEPART('y', `m`.`Timeline`) = 2
await base.Where_datetimeoffset_day_component(isAsync);
AssertSql(
- $@"SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Rating`, `m`.`Timeline`
+ """
+SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
FROM `Missions` AS `m`
-WHERE DATEPART('d', `m`.`Timeline`) = 2");
+WHERE DATEPART('d', `m`.`Timeline`) = 2
+""");
}
public override async Task Where_datetimeoffset_hour_component(bool isAsync)
@@ -2607,9 +2609,11 @@ WHERE DATEPART('h', `m`.`Timeline`) = 10");
await base.Where_datetimeoffset_minute_component(isAsync);
AssertSql(
- $@"SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Rating`, `m`.`Timeline`
+ """
+SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
FROM `Missions` AS `m`
-WHERE DATEPART('n', `m`.`Timeline`) = 0");
+WHERE DATEPART('n', `m`.`Timeline`) = 0
+""");
}
public override async Task Where_datetimeoffset_second_component(bool isAsync)
@@ -2617,9 +2621,11 @@ WHERE DATEPART('n', `m`.`Timeline`) = 0");
await base.Where_datetimeoffset_second_component(isAsync);
AssertSql(
- $@"SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Rating`, `m`.`Timeline`
+ """
+SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
FROM `Missions` AS `m`
-WHERE DATEPART('s', `m`.`Timeline`) = 0");
+WHERE DATEPART('s', `m`.`Timeline`) = 0
+""");
}
public override async Task Where_datetimeoffset_millisecond_component(bool isAsync)
@@ -2646,8 +2652,10 @@ FROM `Missions` AS `m`");
await base.DateTimeOffset_DateAdd_AddDays(isAsync);
AssertSql(
- $@"SELECT DATEADD('d', CAST(1.0E0 AS int), `m`.`Timeline`)
-FROM `Missions` AS `m`");
+ """
+SELECT DATEADD('d', 1.0, `m`.`Timeline`)
+FROM `Missions` AS `m`
+""");
}
public override async Task DateTimeOffset_DateAdd_AddHours(bool isAsync)
@@ -2655,8 +2663,10 @@ FROM `Missions` AS `m`");
await base.DateTimeOffset_DateAdd_AddHours(isAsync);
AssertSql(
- $@"SELECT DATEADD('h', CAST(1.0E0 AS int), `m`.`Timeline`)
-FROM `Missions` AS `m`");
+ """
+SELECT DATEADD('h', 1.0, `m`.`Timeline`)
+FROM `Missions` AS `m`
+""");
}
public override async Task DateTimeOffset_DateAdd_AddMinutes(bool isAsync)
@@ -2664,8 +2674,10 @@ FROM `Missions` AS `m`");
await base.DateTimeOffset_DateAdd_AddMinutes(isAsync);
AssertSql(
- $@"SELECT DATEADD('n', CAST(1.0E0 AS int), `m`.`Timeline`)
-FROM `Missions` AS `m`");
+ """
+SELECT DATEADD('n', 1.0, `m`.`Timeline`)
+FROM `Missions` AS `m`
+""");
}
public override async Task DateTimeOffset_DateAdd_AddSeconds(bool isAsync)
@@ -2673,8 +2685,10 @@ FROM `Missions` AS `m`");
await base.DateTimeOffset_DateAdd_AddSeconds(isAsync);
AssertSql(
- $@"SELECT DATEADD('s', CAST(1.0E0 AS int), `m`.`Timeline`)
-FROM `Missions` AS `m`");
+ """
+SELECT DATEADD('s', 1.0, `m`.`Timeline`)
+FROM `Missions` AS `m`
+""");
}
public override async Task DateTimeOffset_DateAdd_AddMilliseconds(bool isAsync)
@@ -8957,8 +8971,8 @@ FROM `Gears` AS `g`
await base.DateTimeOffset_DateAdd_AddYears(async);
AssertSql(
- """
-SELECT DATEADD(year, CAST(1 AS int), `m`.`Timeline`)
+ """
+SELECT DATEADD('yyyy', 1, `m`.`Timeline`)
FROM `Missions` AS `m`
""");
}
diff --git a/test/EFCore.Jet.FunctionalTests/Query/TPCGearsOfWarQueryJetFixture.cs b/test/EFCore.Jet.FunctionalTests/Query/TPCGearsOfWarQueryJetFixture.cs
index 97d4393..0fa7d85 100644
--- a/test/EFCore.Jet.FunctionalTests/Query/TPCGearsOfWarQueryJetFixture.cs
+++ b/test/EFCore.Jet.FunctionalTests/Query/TPCGearsOfWarQueryJetFixture.cs
@@ -26,7 +26,43 @@ public class TPCGearsOfWarQueryJetFixture : TPCGearsOfWarQueryRelationalFixture
// Drop constraint to workaround Jet limitation regarding compound foreign keys and NULL.
context.Database.ExecuteSql($"ALTER TABLE `Officers` DROP CONSTRAINT `FK_Officers_Officers_LeaderNickname_LeaderSquadId`");
- base.Seed(context);
+ var squads = GearsOfWarData.CreateSquads();
+ var missions = GearsOfWarData.CreateMissions();
+ var squadMissions = GearsOfWarData.CreateSquadMissions();
+ var cities = GearsOfWarData.CreateCities();
+ var weapons = GearsOfWarData.CreateWeapons();
+ var tags = GearsOfWarData.CreateTags();
+ var gears = GearsOfWarData.CreateGears();
+ var locustLeaders = GearsOfWarData.CreateLocustLeaders();
+ var factions = GearsOfWarData.CreateFactions();
+ var locustHighCommands = GearsOfWarData.CreateHighCommands();
+
+ foreach (var mission in missions)
+ {
+ if (mission.Timeline.Year < 100)
+ {
+ mission.Timeline = mission.Timeline.AddYears(100);
+ }
+ }
+
+ GearsOfWarData.WireUp(
+ squads, missions, squadMissions, cities, weapons, tags, gears, locustLeaders, factions, locustHighCommands);
+
+ context.Squads.AddRange(squads);
+ context.Missions.AddRange(missions);
+ context.SquadMissions.AddRange(squadMissions);
+ context.Cities.AddRange(cities);
+ context.Weapons.AddRange(weapons);
+ context.Tags.AddRange(tags);
+ context.Gears.AddRange(gears);
+ context.LocustLeaders.AddRange(locustLeaders);
+ context.Factions.AddRange(factions);
+ context.LocustHighCommands.AddRange(locustHighCommands);
+ context.SaveChanges();
+
+ GearsOfWarData.WireUp2(locustLeaders, factions);
+
+ context.SaveChanges();
}
public override ISetSource GetExpectedData()
@@ -35,6 +71,10 @@ public class TPCGearsOfWarQueryJetFixture : TPCGearsOfWarQueryRelationalFixture
foreach (var mission in data.Missions)
{
+ if (mission.Timeline.Year < 100)
+ {
+ mission.Timeline = mission.Timeline.AddYears(100);
+ }
mission.Timeline = JetTestHelpers.GetExpectedValue(mission.Timeline);
}
diff --git a/test/EFCore.Jet.FunctionalTests/Query/TPCGearsOfWarQueryJetTest.cs b/test/EFCore.Jet.FunctionalTests/Query/TPCGearsOfWarQueryJetTest.cs
index 842c6f0..79276c6 100644
--- a/test/EFCore.Jet.FunctionalTests/Query/TPCGearsOfWarQueryJetTest.cs
+++ b/test/EFCore.Jet.FunctionalTests/Query/TPCGearsOfWarQueryJetTest.cs
@@ -3762,10 +3762,10 @@ WHERE DATEPART('y', `m`.`Timeline`) = 2
await base.Where_datetimeoffset_day_component(async);
AssertSql(
-"""
-SELECT [m].[Id], [m].[CodeName], [m].[Duration], [m].[Rating], [m].[Timeline]
-FROM [Missions] AS [m]
-WHERE DATEPART(day, [m].[Timeline]) = 2
+ """
+SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
+FROM `Missions` AS `m`
+WHERE DATEPART('d', `m`.`Timeline`) = 2
""");
}
@@ -3786,10 +3786,10 @@ WHERE DATEPART(hour, [m].[Timeline]) = 10
await base.Where_datetimeoffset_minute_component(async);
AssertSql(
-"""
-SELECT [m].[Id], [m].[CodeName], [m].[Duration], [m].[Rating], [m].[Timeline]
-FROM [Missions] AS [m]
-WHERE DATEPART(minute, [m].[Timeline]) = 0
+ """
+SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
+FROM `Missions` AS `m`
+WHERE DATEPART('n', `m`.`Timeline`) = 0
""");
}
@@ -3798,10 +3798,10 @@ WHERE DATEPART(minute, [m].[Timeline]) = 0
await base.Where_datetimeoffset_second_component(async);
AssertSql(
-"""
-SELECT [m].[Id], [m].[CodeName], [m].[Duration], [m].[Rating], [m].[Timeline]
-FROM [Missions] AS [m]
-WHERE DATEPART(second, [m].[Timeline]) = 0
+ """
+SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
+FROM `Missions` AS `m`
+WHERE DATEPART('s', `m`.`Timeline`) = 0
""");
}
@@ -3822,9 +3822,9 @@ WHERE DATEPART(millisecond, [m].[Timeline]) = 0
await base.DateTimeOffset_DateAdd_AddMonths(async);
AssertSql(
-"""
-SELECT DATEADD(month, CAST(1 AS int), [m].[Timeline])
-FROM [Missions] AS [m]
+ """
+SELECT DATEADD('m', 1, `m`.`Timeline`)
+FROM `Missions` AS `m`
""");
}
@@ -3833,9 +3833,9 @@ FROM [Missions] AS [m]
await base.DateTimeOffset_DateAdd_AddDays(async);
AssertSql(
-"""
-SELECT DATEADD(day, CAST(1.0E0 AS int), [m].[Timeline])
-FROM [Missions] AS [m]
+ """
+SELECT DATEADD('d', 1.0, `m`.`Timeline`)
+FROM `Missions` AS `m`
""");
}
@@ -3844,9 +3844,9 @@ FROM [Missions] AS [m]
await base.DateTimeOffset_DateAdd_AddHours(async);
AssertSql(
-"""
-SELECT DATEADD(hour, CAST(1.0E0 AS int), [m].[Timeline])
-FROM [Missions] AS [m]
+ """
+SELECT DATEADD('h', 1.0, `m`.`Timeline`)
+FROM `Missions` AS `m`
""");
}
@@ -3855,9 +3855,9 @@ FROM [Missions] AS [m]
await base.DateTimeOffset_DateAdd_AddMinutes(async);
AssertSql(
-"""
-SELECT DATEADD(minute, CAST(1.0E0 AS int), [m].[Timeline])
-FROM [Missions] AS [m]
+ """
+SELECT DATEADD('n', 1.0, `m`.`Timeline`)
+FROM `Missions` AS `m`
""");
}
@@ -3866,9 +3866,9 @@ FROM [Missions] AS [m]
await base.DateTimeOffset_DateAdd_AddSeconds(async);
AssertSql(
-"""
-SELECT DATEADD(second, CAST(1.0E0 AS int), [m].[Timeline])
-FROM [Missions] AS [m]
+ """
+SELECT DATEADD('s', 1.0, `m`.`Timeline`)
+FROM `Missions` AS `m`
""");
}
@@ -4852,7 +4852,7 @@ LEFT JOIN (
UNION ALL
SELECT `o`.`Nickname`, `o`.`SquadId`, `o`.`AssignedCityName`, `o`.`CityOfBirthName`, `o`.`FullName`, `o`.`HasSoulPatch`, `o`.`LeaderNickname`, `o`.`LeaderSquadId`, `o`.`Rank`, 'Officer' AS `Discriminator`
FROM `Officers` AS `o`
-) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND CLNG(`t`.`DefeatedBySquadId`) = `t0`.`SquadId`
+) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND IIF(`t`.`DefeatedBySquadId` IS NULL, NULL, CLNG(`t`.`DefeatedBySquadId`)) = `t0`.`SquadId`
""");
}
@@ -4876,7 +4876,7 @@ LEFT JOIN (
UNION ALL
SELECT `o`.`Nickname`, `o`.`SquadId`, `o`.`AssignedCityName`, `o`.`CityOfBirthName`, `o`.`FullName`, `o`.`HasSoulPatch`, `o`.`LeaderNickname`, `o`.`LeaderSquadId`, `o`.`Rank`, 'Officer' AS `Discriminator`
FROM `Officers` AS `o`
-) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND CLNG(`t`.`DefeatedBySquadId`) = `t0`.`SquadId`)
+) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND IIF(`t`.`DefeatedBySquadId` IS NULL, NULL, CLNG(`t`.`DefeatedBySquadId`)) = `t0`.`SquadId`)
LEFT JOIN `Squads` AS `s` ON `t0`.`SquadId` = `s`.`Id`
""");
}
@@ -4901,7 +4901,7 @@ LEFT JOIN (
UNION ALL
SELECT `o`.`Nickname`, `o`.`SquadId`, `o`.`AssignedCityName`, `o`.`CityOfBirthName`, `o`.`FullName`, `o`.`HasSoulPatch`, `o`.`LeaderNickname`, `o`.`LeaderSquadId`, `o`.`Rank`, 'Officer' AS `Discriminator`
FROM `Officers` AS `o`
-) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND CLNG(`t`.`DefeatedBySquadId`) = `t0`.`SquadId`)
+) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND IIF(`t`.`DefeatedBySquadId` IS NULL, NULL, CLNG(`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`
FROM (
@@ -4937,7 +4937,7 @@ LEFT JOIN (
UNION ALL
SELECT `o`.`Nickname`, `o`.`SquadId`, `o`.`AssignedCityName`, `o`.`CityOfBirthName`, `o`.`FullName`, `o`.`HasSoulPatch`, `o`.`LeaderNickname`, `o`.`LeaderSquadId`, `o`.`Rank`, 'Officer' AS `Discriminator`
FROM `Officers` AS `o`
-) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND CLNG(`t`.`DefeatedBySquadId`) = `t0`.`SquadId`
+) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND IIF(`t`.`DefeatedBySquadId` IS NULL, NULL, CLNG(`t`.`DefeatedBySquadId`)) = `t0`.`SquadId`
""");
}
@@ -4961,7 +4961,7 @@ LEFT JOIN (
UNION ALL
SELECT `o`.`Nickname`, `o`.`SquadId`, `o`.`AssignedCityName`, `o`.`CityOfBirthName`, `o`.`FullName`, `o`.`HasSoulPatch`, `o`.`LeaderNickname`, `o`.`LeaderSquadId`, `o`.`Rank`, 'Officer' AS `Discriminator`
FROM `Officers` AS `o`
-) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND CLNG(`t`.`DefeatedBySquadId`) = `t0`.`SquadId`
+) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND IIF(`t`.`DefeatedBySquadId` IS NULL, NULL, CLNG(`t`.`DefeatedBySquadId`)) = `t0`.`SquadId`
""");
}
@@ -4985,7 +4985,7 @@ LEFT JOIN (
UNION ALL
SELECT `o`.`Nickname`, `o`.`SquadId`, `o`.`AssignedCityName`, `o`.`CityOfBirthName`, `o`.`FullName`, `o`.`HasSoulPatch`, `o`.`LeaderNickname`, `o`.`LeaderSquadId`, `o`.`Rank`, 'Officer' AS `Discriminator`
FROM `Officers` AS `o`
-) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND CLNG(`t`.`DefeatedBySquadId`) = `t0`.`SquadId`
+) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND IIF(`t`.`DefeatedBySquadId` IS NULL, NULL, CLNG(`t`.`DefeatedBySquadId`)) = `t0`.`SquadId`
""");
}
@@ -5189,7 +5189,7 @@ LEFT JOIN (
UNION ALL
SELECT `o`.`Nickname`, `o`.`SquadId`, `o`.`AssignedCityName`, `o`.`CityOfBirthName`, `o`.`FullName`, `o`.`HasSoulPatch`, `o`.`LeaderNickname`, `o`.`LeaderSquadId`, `o`.`Rank`, 'Officer' AS `Discriminator`
FROM `Officers` AS `o`
- ) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND CLNG(`t`.`DefeatedBySquadId`) = `t0`.`SquadId`
+ ) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND IIF(`t`.`DefeatedBySquadId` IS NULL, NULL, CLNG(`t`.`DefeatedBySquadId`)) = `t0`.`SquadId`
) AS `t1` ON `l`.`Id` = `t1`.`LocustHordeId`
ORDER BY `l`.`Id`, `t1`.`Name`, `t1`.`Nickname`
""");
@@ -6712,7 +6712,7 @@ FROM (
UNION ALL
SELECT `o`.`Nickname`, `o`.`SquadId`, `o`.`AssignedCityName`, `o`.`CityOfBirthName`, `o`.`FullName`, `o`.`HasSoulPatch`, `o`.`LeaderNickname`, `o`.`LeaderSquadId`, `o`.`Rank`, 'Officer' AS `Discriminator`
FROM `Officers` AS `o`
- ) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND CLNG(`t`.`DefeatedBySquadId`) = `t0`.`SquadId`)
+ ) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND IIF(`t`.`DefeatedBySquadId` IS NULL, NULL, CLNG(`t`.`DefeatedBySquadId`)) = `t0`.`SquadId`)
LEFT JOIN `Tags` AS `t1` ON (`t0`.`Nickname` = `t1`.`GearNickName` OR (`t0`.`Nickname` IS NULL AND `t1`.`GearNickName` IS NULL)) AND (`t0`.`SquadId` = `t1`.`GearSquadId` OR (`t0`.`SquadId` IS NULL AND `t1`.`GearSquadId` IS NULL))
ORDER BY `t1`.`Note`
) AS `t2`
@@ -6726,16 +6726,16 @@ ORDER BY `t2`.`Note`, `t2`.`Name`, `t2`.`Nickname`, `t2`.`SquadId`, `t2`.`Id`
await base.Select_required_navigation_on_derived_type(async);
AssertSql(
-"""
-SELECT [l].[Name]
+ """
+SELECT `l`.`Name`
FROM (
- SELECT NULL AS [HighCommandId]
- FROM [LocustLeaders] AS [l0]
+ SELECT CVar(NULL) AS `HighCommandId`
+ FROM `LocustLeaders` AS `l0`
UNION ALL
- SELECT [l1].[HighCommandId]
- FROM [LocustCommanders] AS [l1]
-) AS [t]
-LEFT JOIN [LocustHighCommands] AS [l] ON [t].[HighCommandId] = [l].[Id]
+ SELECT `l1`.`HighCommandId`
+ FROM `LocustCommanders` AS `l1`
+) AS `t`
+LEFT JOIN `LocustHighCommands` AS `l` ON IIF(`t`.`HighCommandId` IS NULL, NULL, CLNG(`t`.`HighCommandId`)) = `l`.`Id`
""");
}
@@ -6762,17 +6762,17 @@ INNER JOIN `Cities` AS `c` ON `t`.`CityOfBirthName` = `c`.`Name`
await base.Where_required_navigation_on_derived_type(async);
AssertSql(
-"""
-SELECT [t].[Name], [t].[LocustHordeId], [t].[ThreatLevel], [t].[ThreatLevelByte], [t].[ThreatLevelNullableByte], [t].[DefeatedByNickname], [t].[DefeatedBySquadId], [t].[HighCommandId], [t].[Discriminator]
+ """
+SELECT `t`.`Name`, `t`.`LocustHordeId`, `t`.`ThreatLevel`, `t`.`ThreatLevelByte`, `t`.`ThreatLevelNullableByte`, `t`.`DefeatedByNickname`, `t`.`DefeatedBySquadId`, `t`.`HighCommandId`, `t`.`Discriminator`
FROM (
- SELECT [l0].[Name], [l0].[LocustHordeId], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], NULL AS [DefeatedByNickname], NULL AS [DefeatedBySquadId], NULL AS [HighCommandId], N'LocustLeader' AS [Discriminator]
- FROM [LocustLeaders] AS [l0]
+ SELECT `l0`.`Name`, `l0`.`LocustHordeId`, `l0`.`ThreatLevel`, `l0`.`ThreatLevelByte`, `l0`.`ThreatLevelNullableByte`, NULL AS `DefeatedByNickname`, CVar(NULL) AS `DefeatedBySquadId`, CVar(NULL) AS `HighCommandId`, 'LocustLeader' AS `Discriminator`
+ FROM `LocustLeaders` AS `l0`
UNION ALL
- SELECT [l1].[Name], [l1].[LocustHordeId], [l1].[ThreatLevel], [l1].[ThreatLevelByte], [l1].[ThreatLevelNullableByte], [l1].[DefeatedByNickname], [l1].[DefeatedBySquadId], [l1].[HighCommandId], N'LocustCommander' AS [Discriminator]
- FROM [LocustCommanders] AS [l1]
-) AS [t]
-LEFT JOIN [LocustHighCommands] AS [l] ON [t].[HighCommandId] = [l].[Id]
-WHERE [l].[IsOperational] = CAST(1 AS bit)
+ SELECT `l1`.`Name`, `l1`.`LocustHordeId`, `l1`.`ThreatLevel`, `l1`.`ThreatLevelByte`, `l1`.`ThreatLevelNullableByte`, `l1`.`DefeatedByNickname`, `l1`.`DefeatedBySquadId`, `l1`.`HighCommandId`, 'LocustCommander' AS `Discriminator`
+ FROM `LocustCommanders` AS `l1`
+) AS `t`
+LEFT JOIN `LocustHighCommands` AS `l` ON IIF(`t`.`HighCommandId` IS NULL, NULL, CLNG(`t`.`HighCommandId`)) = `l`.`Id`
+WHERE `l`.`IsOperational` = TRUE
""");
}
@@ -11029,7 +11029,7 @@ ORDER BY [t].[Nickname], [t].[SquadId], [t0].[Nickname]
await base.Accessing_derived_property_using_hard_and_soft_cast(async);
AssertSql(
- """
+"""
SELECT `t`.`Name`, `t`.`LocustHordeId`, `t`.`ThreatLevel`, `t`.`ThreatLevelByte`, `t`.`ThreatLevelNullableByte`, `t`.`DefeatedByNickname`, `t`.`DefeatedBySquadId`, `t`.`HighCommandId`, `t`.`Discriminator`
FROM (
SELECT `l`.`Name`, `l`.`LocustHordeId`, `l`.`ThreatLevel`, `l`.`ThreatLevelByte`, `l`.`ThreatLevelNullableByte`, NULL AS `DefeatedByNickname`, CVar(NULL) AS `DefeatedBySquadId`, CVar(NULL) AS `HighCommandId`, 'LocustLeader' AS `Discriminator`
@@ -11038,10 +11038,10 @@ FROM (
SELECT `l0`.`Name`, `l0`.`LocustHordeId`, `l0`.`ThreatLevel`, `l0`.`ThreatLevelByte`, `l0`.`ThreatLevelNullableByte`, `l0`.`DefeatedByNickname`, `l0`.`DefeatedBySquadId`, `l0`.`HighCommandId`, 'LocustCommander' AS `Discriminator`
FROM `LocustCommanders` AS `l0`
) AS `t`
-WHERE `t`.`Discriminator` = 'LocustCommander' AND (CLNG(`t`.`HighCommandId`) <> 0 OR CLNG(`t`.`HighCommandId`) IS NULL)
+WHERE `t`.`Discriminator` = 'LocustCommander' AND (IIF(`t`.`HighCommandId` IS NULL, NULL, CLNG(`t`.`HighCommandId`)) <> 0 OR IIF(`t`.`HighCommandId` IS NULL, NULL, CLNG(`t`.`HighCommandId`)) IS NULL)
""",
- //
- """
+ //
+ """
SELECT `t`.`Name`, `t`.`LocustHordeId`, `t`.`ThreatLevel`, `t`.`ThreatLevelByte`, `t`.`ThreatLevelNullableByte`, `t`.`DefeatedByNickname`, `t`.`DefeatedBySquadId`, `t`.`HighCommandId`, `t`.`Discriminator`
FROM (
SELECT `l`.`Name`, `l`.`LocustHordeId`, `l`.`ThreatLevel`, `l`.`ThreatLevelByte`, `l`.`ThreatLevelNullableByte`, NULL AS `DefeatedByNickname`, CVar(NULL) AS `DefeatedBySquadId`, CVar(NULL) AS `HighCommandId`, 'LocustLeader' AS `Discriminator`
@@ -11050,7 +11050,7 @@ FROM (
SELECT `l0`.`Name`, `l0`.`LocustHordeId`, `l0`.`ThreatLevel`, `l0`.`ThreatLevelByte`, `l0`.`ThreatLevelNullableByte`, `l0`.`DefeatedByNickname`, `l0`.`DefeatedBySquadId`, `l0`.`HighCommandId`, 'LocustCommander' AS `Discriminator`
FROM `LocustCommanders` AS `l0`
) AS `t`
-WHERE `t`.`Discriminator` = 'LocustCommander' AND (CLNG(`t`.`HighCommandId`) <> 0 OR CLNG(`t`.`HighCommandId`) IS NULL)
+WHERE `t`.`Discriminator` = 'LocustCommander' AND (IIF(`t`.`HighCommandId` IS NULL, NULL, CLNG(`t`.`HighCommandId`)) <> 0 OR IIF(`t`.`HighCommandId` IS NULL, NULL, CLNG(`t`.`HighCommandId`)) IS NULL)
""");
}
@@ -11074,7 +11074,7 @@ LEFT JOIN (
UNION ALL
SELECT `o`.`Nickname`, `o`.`SquadId`, `o`.`AssignedCityName`, `o`.`CityOfBirthName`, `o`.`FullName`, `o`.`HasSoulPatch`, `o`.`LeaderNickname`, `o`.`LeaderSquadId`, `o`.`Rank`, 'Officer' AS `Discriminator`
FROM `Officers` AS `o`
-) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND CLNG(`t`.`DefeatedBySquadId`) = `t0`.`SquadId`
+) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND IIF(`t`.`DefeatedBySquadId` IS NULL, NULL, CLNG(`t`.`DefeatedBySquadId`)) = `t0`.`SquadId`
WHERE `t`.`Name` LIKE '%Queen%'
""");
}
@@ -11891,9 +11891,9 @@ ORDER BY [t].[Nickname], [t].[SquadId], [s].[Id]
await base.DateTimeOffset_DateAdd_AddYears(async);
AssertSql(
-"""
-SELECT DATEADD(year, CAST(1 AS int), [m].[Timeline])
-FROM [Missions] AS [m]
+ """
+SELECT DATEADD('yyyy', 1, `m`.`Timeline`)
+FROM `Missions` AS `m`
""");
}
@@ -12166,7 +12166,7 @@ LEFT JOIN (
UNION ALL
SELECT `o`.`Nickname`, `o`.`SquadId`, `o`.`AssignedCityName`, `o`.`CityOfBirthName`, `o`.`FullName`, `o`.`HasSoulPatch`, `o`.`LeaderNickname`, `o`.`LeaderSquadId`, `o`.`Rank`, 'Officer' AS `Discriminator`
FROM `Officers` AS `o`
-) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND CLNG(`t`.`DefeatedBySquadId`) = `t0`.`SquadId`)
+) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND IIF(`t`.`DefeatedBySquadId` IS NULL, NULL, CLNG(`t`.`DefeatedBySquadId`)) = `t0`.`SquadId`)
LEFT JOIN `Weapons` AS `w` ON `t0`.`FullName` = `w`.`OwnerFullName`
WHERE `t`.`Name` LIKE '%Queen%'
ORDER BY `t`.`Name`, `t0`.`Nickname`, `t0`.`SquadId`
@@ -12869,7 +12869,7 @@ LEFT JOIN (
UNION ALL
SELECT `o`.`Nickname`, `o`.`SquadId`, `o`.`AssignedCityName`, `o`.`CityOfBirthName`, `o`.`FullName`, `o`.`HasSoulPatch`, `o`.`LeaderNickname`, `o`.`LeaderSquadId`, `o`.`Rank`, 'Officer' AS `Discriminator`
FROM `Officers` AS `o`
-) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND CLNG(`t`.`DefeatedBySquadId`) = `t0`.`SquadId`
+) AS `t0` ON `t`.`DefeatedByNickname` = `t0`.`Nickname` AND IIF(`t`.`DefeatedBySquadId` IS NULL, NULL, CLNG(`t`.`DefeatedBySquadId`)) = `t0`.`SquadId`
""");
}
diff --git a/test/EFCore.Jet.FunctionalTests/Query/TPCRelationshipsQueryJetTest.cs b/test/EFCore.Jet.FunctionalTests/Query/TPCRelationshipsQueryJetTest.cs
index 56d01dd..71961e8 100644
--- a/test/EFCore.Jet.FunctionalTests/Query/TPCRelationshipsQueryJetTest.cs
+++ b/test/EFCore.Jet.FunctionalTests/Query/TPCRelationshipsQueryJetTest.cs
@@ -789,13 +789,13 @@ ORDER BY `t`.`Id`, `t0`.`Id`, `o`.`BaseInheritanceRelationshipEntityId`, `d`.`Id
"""
SELECT `t`.`Id`, `t`.`Name`, `t`.`BaseId`, `t`.`Discriminator`, `d`.`Id`, `o`.`BaseInheritanceRelationshipEntityId`, `d0`.`Id`, `o0`.`BaseInheritanceRelationshipEntityId`, `o1`.`BaseInheritanceRelationshipEntityId`, `o1`.`Id`, `o1`.`Name`, `o`.`Id`, `o`.`Name`, `d1`.`DerivedInheritanceRelationshipEntityId`, `d1`.`Id`, `d1`.`Name`, `d0`.`OwnedReferenceOnDerived_Id`, `d0`.`OwnedReferenceOnDerived_Name`, `d`.`Name`, `d`.`BaseId`, `o2`.`BaseInheritanceRelationshipEntityId`, `o2`.`Id`, `o2`.`Name`, `o0`.`Id`, `o0`.`Name`, `d2`.`DerivedInheritanceRelationshipEntityId`, `d2`.`Id`, `d2`.`Name`, `d`.`OwnedReferenceOnDerived_Id`, `d`.`OwnedReferenceOnDerived_Name`
FROM ((((((((
- SELECT `b`.`Id`, `b`.`Name`, NULL AS `BaseId`, 'BaseInheritanceRelationshipEntity' AS `Discriminator`
+ SELECT `b`.`Id`, `b`.`Name`, CVar(NULL) AS `BaseId`, 'BaseInheritanceRelationshipEntity' AS `Discriminator`
FROM `BaseEntities` AS `b`
UNION ALL
SELECT `d3`.`Id`, `d3`.`Name`, `d3`.`BaseId`, 'DerivedInheritanceRelationshipEntity' AS `Discriminator`
FROM `DerivedEntities` AS `d3`
) AS `t`
-LEFT JOIN `DerivedEntities` AS `d` ON `t`.`Id` = `d`.`BaseId`)
+LEFT JOIN `DerivedEntities` AS `d` ON `t`.`Id` = IIF(`d`.`BaseId` IS NULL, NULL, CLNG(`d`.`BaseId`)))
LEFT JOIN `OwnedReferences` AS `o` ON `t`.`Id` = `o`.`BaseInheritanceRelationshipEntityId`)
LEFT JOIN `DerivedEntities` AS `d0` ON `t`.`Id` = `d0`.`Id`)
LEFT JOIN `OwnedReferences` AS `o0` ON `d`.`Id` = `o0`.`BaseInheritanceRelationshipEntityId`)
@@ -816,12 +816,12 @@ ORDER BY `t`.`Id`, `d`.`Id`, `o`.`BaseInheritanceRelationshipEntityId`, `d0`.`Id
SELECT `d`.`Id`, `d`.`Name`, `d`.`BaseId`, `t`.`Id`, `o`.`BaseInheritanceRelationshipEntityId`, `o0`.`BaseInheritanceRelationshipEntityId`, `d0`.`Id`, `o1`.`BaseInheritanceRelationshipEntityId`, `o1`.`Id`, `o1`.`Name`, `o`.`Id`, `o`.`Name`, `d1`.`DerivedInheritanceRelationshipEntityId`, `d1`.`Id`, `d1`.`Name`, `d`.`Id`, `d`.`OwnedReferenceOnDerived_Id`, `d`.`OwnedReferenceOnDerived_Name`, `t`.`Name`, `t`.`BaseId`, `t`.`Discriminator`, `o2`.`BaseInheritanceRelationshipEntityId`, `o2`.`Id`, `o2`.`Name`, `o0`.`Id`, `o0`.`Name`, `d2`.`DerivedInheritanceRelationshipEntityId`, `d2`.`Id`, `d2`.`Name`, `d0`.`OwnedReferenceOnDerived_Id`, `d0`.`OwnedReferenceOnDerived_Name`
FROM (((((((`DerivedEntities` AS `d`
LEFT JOIN (
- SELECT `b`.`Id`, `b`.`Name`, NULL AS `BaseId`, 'BaseInheritanceRelationshipEntity' AS `Discriminator`
+ SELECT `b`.`Id`, `b`.`Name`, CVar(NULL) AS `BaseId`, 'BaseInheritanceRelationshipEntity' AS `Discriminator`
FROM `BaseEntities` AS `b`
UNION ALL
SELECT `d3`.`Id`, `d3`.`Name`, `d3`.`BaseId`, 'DerivedInheritanceRelationshipEntity' AS `Discriminator`
FROM `DerivedEntities` AS `d3`
-) AS `t` ON `d`.`BaseId` = `t`.`Id`)
+) AS `t` ON IIF(`d`.`BaseId` IS NULL, NULL, CLNG(`d`.`BaseId`)) = `t`.`Id`)
LEFT JOIN `OwnedReferences` AS `o` ON `d`.`Id` = `o`.`BaseInheritanceRelationshipEntityId`)
LEFT JOIN `OwnedReferences` AS `o0` ON `t`.`Id` = `o0`.`BaseInheritanceRelationshipEntityId`)
LEFT JOIN `DerivedEntities` AS `d0` ON `t`.`Id` = `d0`.`Id`)
diff --git a/test/EFCore.Jet.FunctionalTests/Query/TPTGearsOfWarQueryJetFixture.cs b/test/EFCore.Jet.FunctionalTests/Query/TPTGearsOfWarQueryJetFixture.cs
index 673cb4c..de7a4d1 100644
--- a/test/EFCore.Jet.FunctionalTests/Query/TPTGearsOfWarQueryJetFixture.cs
+++ b/test/EFCore.Jet.FunctionalTests/Query/TPTGearsOfWarQueryJetFixture.cs
@@ -26,7 +26,43 @@ public class TPTGearsOfWarQueryJetFixture : TPTGearsOfWarQueryRelationalFixture
// Drop constraint to workaround Jet limitation regarding compound foreign keys and NULL.
context.Database.ExecuteSql($"ALTER TABLE `Gears` DROP CONSTRAINT `FK_Gears_Officers_LeaderNickname_LeaderSquadId`");
- base.Seed(context);
+ var squads = GearsOfWarData.CreateSquads();
+ var missions = GearsOfWarData.CreateMissions();
+ var squadMissions = GearsOfWarData.CreateSquadMissions();
+ var cities = GearsOfWarData.CreateCities();
+ var weapons = GearsOfWarData.CreateWeapons();
+ var tags = GearsOfWarData.CreateTags();
+ var gears = GearsOfWarData.CreateGears();
+ var locustLeaders = GearsOfWarData.CreateLocustLeaders();
+ var factions = GearsOfWarData.CreateFactions();
+ var locustHighCommands = GearsOfWarData.CreateHighCommands();
+
+ foreach (var mission in missions)
+ {
+ if (mission.Timeline.Year < 100)
+ {
+ mission.Timeline = mission.Timeline.AddYears(100);
+ }
+ }
+
+ GearsOfWarData.WireUp(
+ squads, missions, squadMissions, cities, weapons, tags, gears, locustLeaders, factions, locustHighCommands);
+
+ context.Squads.AddRange(squads);
+ context.Missions.AddRange(missions);
+ context.SquadMissions.AddRange(squadMissions);
+ context.Cities.AddRange(cities);
+ context.Weapons.AddRange(weapons);
+ context.Tags.AddRange(tags);
+ context.Gears.AddRange(gears);
+ context.LocustLeaders.AddRange(locustLeaders);
+ context.Factions.AddRange(factions);
+ context.LocustHighCommands.AddRange(locustHighCommands);
+ context.SaveChanges();
+
+ GearsOfWarData.WireUp2(locustLeaders, factions);
+
+ context.SaveChanges();
}
public override ISetSource GetExpectedData()
@@ -35,6 +71,10 @@ public class TPTGearsOfWarQueryJetFixture : TPTGearsOfWarQueryRelationalFixture
foreach (var mission in data.Missions)
{
+ if (mission.Timeline.Year < 100)
+ {
+ mission.Timeline = mission.Timeline.AddYears(100);
+ }
mission.Timeline = JetTestHelpers.GetExpectedValue(mission.Timeline);
}
diff --git a/test/EFCore.Jet.FunctionalTests/Query/TPTGearsOfWarQueryJetTest.cs b/test/EFCore.Jet.FunctionalTests/Query/TPTGearsOfWarQueryJetTest.cs
index 66a2ebf..fbdd19a 100644
--- a/test/EFCore.Jet.FunctionalTests/Query/TPTGearsOfWarQueryJetTest.cs
+++ b/test/EFCore.Jet.FunctionalTests/Query/TPTGearsOfWarQueryJetTest.cs
@@ -3013,10 +3013,10 @@ WHERE DATEPART('y', `m`.`Timeline`) = 2
await base.Where_datetimeoffset_day_component(async);
AssertSql(
-"""
-SELECT [m].[Id], [m].[CodeName], [m].[Duration], [m].[Rating], [m].[Timeline]
-FROM [Missions] AS [m]
-WHERE DATEPART(day, [m].[Timeline]) = 2
+ """
+SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
+FROM `Missions` AS `m`
+WHERE DATEPART('d', `m`.`Timeline`) = 2
""");
}
@@ -3037,10 +3037,10 @@ WHERE DATEPART(hour, [m].[Timeline]) = 10
await base.Where_datetimeoffset_minute_component(async);
AssertSql(
-"""
-SELECT [m].[Id], [m].[CodeName], [m].[Duration], [m].[Rating], [m].[Timeline]
-FROM [Missions] AS [m]
-WHERE DATEPART(minute, [m].[Timeline]) = 0
+ """
+SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
+FROM `Missions` AS `m`
+WHERE DATEPART('n', `m`.`Timeline`) = 0
""");
}
@@ -3049,10 +3049,10 @@ WHERE DATEPART(minute, [m].[Timeline]) = 0
await base.Where_datetimeoffset_second_component(async);
AssertSql(
-"""
-SELECT [m].[Id], [m].[CodeName], [m].[Duration], [m].[Rating], [m].[Timeline]
-FROM [Missions] AS [m]
-WHERE DATEPART(second, [m].[Timeline]) = 0
+ """
+SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
+FROM `Missions` AS `m`
+WHERE DATEPART('s', `m`.`Timeline`) = 0
""");
}
@@ -3073,9 +3073,9 @@ WHERE DATEPART(millisecond, [m].[Timeline]) = 0
await base.DateTimeOffset_DateAdd_AddMonths(async);
AssertSql(
-"""
-SELECT DATEADD(month, CAST(1 AS int), [m].[Timeline])
-FROM [Missions] AS [m]
+ """
+SELECT DATEADD('m', 1, `m`.`Timeline`)
+FROM `Missions` AS `m`
""");
}
@@ -3084,9 +3084,9 @@ FROM [Missions] AS [m]
await base.DateTimeOffset_DateAdd_AddDays(async);
AssertSql(
-"""
-SELECT DATEADD(day, CAST(1.0E0 AS int), [m].[Timeline])
-FROM [Missions] AS [m]
+ """
+SELECT DATEADD('d', 1.0, `m`.`Timeline`)
+FROM `Missions` AS `m`
""");
}
@@ -3095,9 +3095,9 @@ FROM [Missions] AS [m]
await base.DateTimeOffset_DateAdd_AddHours(async);
AssertSql(
-"""
-SELECT DATEADD(hour, CAST(1.0E0 AS int), [m].[Timeline])
-FROM [Missions] AS [m]
+ """
+SELECT DATEADD('h', 1.0, `m`.`Timeline`)
+FROM `Missions` AS `m`
""");
}
@@ -3106,9 +3106,9 @@ FROM [Missions] AS [m]
await base.DateTimeOffset_DateAdd_AddMinutes(async);
AssertSql(
-"""
-SELECT DATEADD(minute, CAST(1.0E0 AS int), [m].[Timeline])
-FROM [Missions] AS [m]
+ """
+SELECT DATEADD('n', 1.0, `m`.`Timeline`)
+FROM `Missions` AS `m`
""");
}
@@ -3117,9 +3117,9 @@ FROM [Missions] AS [m]
await base.DateTimeOffset_DateAdd_AddSeconds(async);
AssertSql(
-"""
-SELECT DATEADD(second, CAST(1.0E0 AS int), [m].[Timeline])
-FROM [Missions] AS [m]
+ """
+SELECT DATEADD('s', 1.0, `m`.`Timeline`)
+FROM `Missions` AS `m`
""");
}
@@ -9623,10 +9623,9 @@ ORDER BY [g].[Nickname], [g].[SquadId], [s].[Id]
await base.DateTimeOffset_DateAdd_AddYears(async);
AssertSql(
-"""
-SELECT `g`.`Nickname`, `g`.`SquadId`, `g`.`AssignedCityName`, `g`.`CityOfBirthName`, `g`.`FullName`, `g`.`HasSoulPatch`, `g`.`LeaderNickname`, `g`.`LeaderSquadId`, `g`.`Rank`, IIF(`o`.`Nickname` IS NOT NULL, 'Officer', NULL) AS `Discriminator`
-FROM `Gears` AS `g`
-LEFT JOIN `Officers` AS `o` ON `g`.`Nickname` = `o`.`Nickname` AND `g`.`SquadId` = `o`.`SquadId`
+ """
+SELECT DATEADD('yyyy', 1, `m`.`Timeline`)
+FROM `Missions` AS `m`
""");
}
diff --git a/test/EFCore.Jet.FunctionalTests/Scaffolding/JetDatabaseModelFactoryTest.cs b/test/EFCore.Jet.FunctionalTests/Scaffolding/JetDatabaseModelFactoryTest.cs
index b945147..800313f 100644
--- a/test/EFCore.Jet.FunctionalTests/Scaffolding/JetDatabaseModelFactoryTest.cs
+++ b/test/EFCore.Jet.FunctionalTests/Scaffolding/JetDatabaseModelFactoryTest.cs
@@ -1135,7 +1135,7 @@ CREATE TABLE MyTable (
@"
CREATE TABLE MyTable (
Id int,
- A datetime DEFAULT #1973-09-03 12:00:01#
+ A datetime DEFAULT '1973-09-03 12:00:01'
);",
Enumerable.Empty(),
Enumerable.Empty(),
@@ -1144,7 +1144,7 @@ CREATE TABLE MyTable (
var columns = dbModel.Tables.Single().Columns;
var column = columns.Single(c => c.Name == "A");
- Assert.Equal("('1973-09-03T12:00:01')", column.DefaultValueSql);
+ Assert.Equal("'1973-09-03 12:00:01'", column.DefaultValueSql);
Assert.Equal(new DateTime(1973, 9, 3, 12, 0, 1, 0, DateTimeKind.Unspecified), column.DefaultValue);
},
"DROP TABLE MyTable;");
diff --git a/test/EFCore.Jet.FunctionalTests/TestUtilities/TestRelationalCommandBuilderFactory.cs b/test/EFCore.Jet.FunctionalTests/TestUtilities/TestRelationalCommandBuilderFactory.cs
index 99fee8a..42a6340 100644
--- a/test/EFCore.Jet.FunctionalTests/TestUtilities/TestRelationalCommandBuilderFactory.cs
+++ b/test/EFCore.Jet.FunctionalTests/TestUtilities/TestRelationalCommandBuilderFactory.cs
@@ -107,7 +107,7 @@ namespace EntityFrameworkCore.Jet.FunctionalTests.TestUtilities
IReadOnlyList parameters)
{
_realRelationalCommand = new RelationalCommand(dependencies, commandText, parameters);
-
+
_createExceptionFunc = TestEnvironment.DataAccessProviderType == DataAccessProviderType.OleDb
? number => OleDbExceptionFactory.CreateException(number)
: number => OdbcExceptionFactory.CreateException(number);
@@ -219,7 +219,7 @@ namespace EntityFrameworkCore.Jet.FunctionalTests.TestUtilities
RelationalCommandParameterObject parameterObject,
Guid commandId,
DbCommandMethod commandMethod)
- => throw new NotSupportedException();
+ => _realRelationalCommand.CreateDbCommand(parameterObject, commandId, commandMethod);
public void PopulateFrom(IRelationalCommandTemplate commandTemplate)
=> _realRelationalCommand.PopulateFrom(commandTemplate);
diff --git a/test/EFCore.Jet.FunctionalTests/Update/StoredProcedureUpdateJetTest.cs b/test/EFCore.Jet.FunctionalTests/Update/StoredProcedureUpdateJetTest.cs
index e94294c..f2d9135 100644
--- a/test/EFCore.Jet.FunctionalTests/Update/StoredProcedureUpdateJetTest.cs
+++ b/test/EFCore.Jet.FunctionalTests/Update/StoredProcedureUpdateJetTest.cs
@@ -217,8 +217,7 @@ AS DELETE FROM [Entity] WHERE [Id] = @Id
"""
@p0='1'
-SET NOCOUNT ON;
-EXEC [Entity_Delete] @p0;
+EXEC `Entity_Delete` p0;
""");
}
@@ -227,7 +226,7 @@ EXEC [Entity_Delete] @p0;
await base.Delete_and_insert(
async,
"""
-CREATE PROCEDURE Entity_Insert(@Name varchar(max), @Id int OUT)
+CREATE PROCEDURE Entity_Insert(@Name varchar(255), @Id int OUT)
AS BEGIN
INSERT INTO [Entity] ([Name]) VALUES (@Name);
SET @Id = SCOPE_IDENTITY();
@@ -607,7 +606,7 @@ END;
SET NOCOUNT ON;
EXEC [Parent_Insert] @p0 OUTPUT, @p1;
""",
- //
+//
"""
@p2='1'
@p3='8'
@@ -637,7 +636,7 @@ END
SET NOCOUNT ON;
EXEC [Parent_Insert] @p0 OUTPUT, @p1;
""",
- //
+//
"""
@p2='1'
@p3='8'
diff --git a/test/EFCore.Jet.FunctionalTests/ValueConvertersEndToEndJetTest.cs b/test/EFCore.Jet.FunctionalTests/ValueConvertersEndToEndJetTest.cs
index 2f861f8..47782d1 100644
--- a/test/EFCore.Jet.FunctionalTests/ValueConvertersEndToEndJetTest.cs
+++ b/test/EFCore.Jet.FunctionalTests/ValueConvertersEndToEndJetTest.cs
@@ -3,8 +3,11 @@
#nullable enable
+using System;
using System.Collections.Generic;
using System.Linq;
+using System.Net.NetworkInformation;
+using System.Net;
using EntityFrameworkCore.Jet.FunctionalTests.TestUtilities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
@@ -70,8 +73,8 @@ public class ValueConvertersEndToEndJetTest
[InlineData(nameof(ConvertingEntity.StringToNullableChar), "varchar(1)", false)]
[InlineData(nameof(ConvertingEntity.StringToDateTime), "datetime", false)]
[InlineData(nameof(ConvertingEntity.StringToNullableDateTime), "datetime", false)]
- [InlineData(nameof(ConvertingEntity.StringToDateTimeOffset), "datetime", false)]
- [InlineData(nameof(ConvertingEntity.StringToNullableDateTimeOffset), "datetime", false)]
+ //[InlineData(nameof(ConvertingEntity.StringToDateTimeOffset), "datetime", false)]
+ //[InlineData(nameof(ConvertingEntity.StringToNullableDateTimeOffset), "datetime", false)]
[InlineData(nameof(ConvertingEntity.StringToEnum), "integer", false)]
[InlineData(nameof(ConvertingEntity.StringToNullableEnum), "integer", false)]
[InlineData(nameof(ConvertingEntity.StringToGuid), "uniqueidentifier", false)]
@@ -134,8 +137,8 @@ public class ValueConvertersEndToEndJetTest
[InlineData(nameof(ConvertingEntity.NullableStringToNullableChar), "varchar(1)", true)]
[InlineData(nameof(ConvertingEntity.NullableStringToDateTime), "datetime", true)]
[InlineData(nameof(ConvertingEntity.NullableStringToNullableDateTime), "datetime", true)]
- [InlineData(nameof(ConvertingEntity.NullableStringToDateTimeOffset), "datetime", true)]
- [InlineData(nameof(ConvertingEntity.NullableStringToNullableDateTimeOffset), "datetime", true)]
+ //[InlineData(nameof(ConvertingEntity.NullableStringToDateTimeOffset), "datetime", true)]
+ //[InlineData(nameof(ConvertingEntity.NullableStringToNullableDateTimeOffset), "datetime", true)]
[InlineData(nameof(ConvertingEntity.NullableStringToEnum), "integer", true)]
[InlineData(nameof(ConvertingEntity.NullableStringToNullableEnum), "integer", true)]
[InlineData(nameof(ConvertingEntity.NullableStringToGuid), "uniqueidentifier", true)]
@@ -228,6 +231,11 @@ WHERE CAST(DATALENGTH(CAST(N'' AS nvarchar(max))) AS int) = 1
b.Property(e => e.ListOfInt).HasDefaultValue(new List());
b.Property(e => e.NullableEnumerableOfInt).HasDefaultValue(Enumerable.Empty());
b.Property(e => e.EnumerableOfInt).HasDefaultValue(Enumerable.Empty());
+
+ b.Ignore(e => e.StringToDateTimeOffset);
+ b.Ignore(e => e.StringToNullableDateTimeOffset);
+ b.Ignore(e => e.NullableStringToDateTimeOffset);
+ b.Ignore(e => e.NullableStringToNullableDateTimeOffset);
});
}
}