diff --git a/src/EFCore.Relational/Query/Internal/RelationalParameterProcessor.cs b/src/EFCore.Relational/Query/Internal/RelationalParameterProcessor.cs index 433b0b317c1..03391128a6f 100644 --- a/src/EFCore.Relational/Query/Internal/RelationalParameterProcessor.cs +++ b/src/EFCore.Relational/Query/Internal/RelationalParameterProcessor.cs @@ -38,6 +38,9 @@ private readonly IDictionary _visitedFromSqlExpre private ParametersCacheDecorator _parametersDecorator; private ParameterNameGenerator _parameterNameGenerator; + private static readonly bool UseOldBehavior37189 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue37189", out var enabled37189) && enabled37189; + /// /// 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 @@ -117,7 +120,7 @@ private SqlParameterExpression VisitSqlParameter(SqlParameterExpression paramete && (existingTypeMapping.Converter is null && typeMapping.Converter is null || existingTypeMapping.Converter is not null && existingTypeMapping.Converter.Equals(typeMapping.Converter))) { - return parameter; + return UseOldBehavior37189 ? parameter : existingParameter; } var uniquifiedName = UniquifyParameterName(parameter.Name); diff --git a/src/EFCore.Relational/Query/SqlExpressions/JsonScalarExpression.cs b/src/EFCore.Relational/Query/SqlExpressions/JsonScalarExpression.cs index f3a7642fe8e..312d6394004 100644 --- a/src/EFCore.Relational/Query/SqlExpressions/JsonScalarExpression.cs +++ b/src/EFCore.Relational/Query/SqlExpressions/JsonScalarExpression.cs @@ -89,7 +89,7 @@ protected override Expression VisitChildren(ExpressionVisitor visitor) if (newPath is null) { newPath = new PathSegment[Path.Count]; - for (var j = 0; j < i; i++) + for (var j = 0; j < i; j++) { newPath[j] = Path[j]; } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs index b8857a39bbc..98be5c5301e 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs @@ -8457,7 +8457,7 @@ public override async Task Parameter_used_multiple_times_take_appropriate_inferr SELECT [c].[Name], [c].[Location], [c].[Nation] FROM [Cities] AS [c] -WHERE [c].[Nation] = @place OR [c].[Location] = @place0 OR [c].[Location] = @place +WHERE [c].[Nation] = @place OR [c].[Location] = @place0 OR [c].[Location] = @place0 """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs index b30436603b4..b7564780a5d 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs @@ -10889,7 +10889,7 @@ public override async Task Parameter_used_multiple_times_take_appropriate_inferr SELECT [c].[Name], [c].[Location], [c].[Nation] FROM [Cities] AS [c] -WHERE [c].[Nation] = @place OR [c].[Location] = @place0 OR [c].[Location] = @place +WHERE [c].[Nation] = @place OR [c].[Location] = @place0 OR [c].[Location] = @place0 """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs index 03f657b04e0..87f087292a6 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs @@ -9201,7 +9201,7 @@ public override async Task Parameter_used_multiple_times_take_appropriate_inferr SELECT [c].[Name], [c].[Location], [c].[Nation] FROM [Cities] AS [c] -WHERE [c].[Nation] = @place OR [c].[Location] = @place0 OR [c].[Location] = @place +WHERE [c].[Nation] = @place OR [c].[Location] = @place0 OR [c].[Location] = @place0 """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs index 24ec36328d3..79bd89db146 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs @@ -2918,7 +2918,7 @@ public override async Task Parameter_used_multiple_times_take_appropriate_inferr SELECT [c].[Name], [c].[Location], [c].[Nation], [c].[PeriodEnd], [c].[PeriodStart] FROM [Cities] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [c] -WHERE [c].[Nation] = @place OR [c].[Location] = @place0 OR [c].[Location] = @place +WHERE [c].[Nation] = @place OR [c].[Location] = @place0 OR [c].[Location] = @place0 """); }