Skip to content

Update all test assertions for EF Core 10 parameter naming changes#121

Merged
renemadsen merged 4 commits intomasterfrom
copilot/fix-assert-equal-failure
Nov 17, 2025
Merged

Update all test assertions for EF Core 10 parameter naming changes#121
renemadsen merged 4 commits intomasterfrom
copilot/fix-assert-equal-failure

Conversation

Copy link

Copilot AI commented Nov 17, 2025

EF Core 10 removed @__ prefixes and _N suffixes from SQL parameter names. This PR systematically updates all test assertions to match the new parameter naming convention.

Changes

Comprehensive Update (35 test files, 701 parameter references):

  • Systematically replaced all occurrences of @__variableName_N with @variableName
  • Fixed Indexof_with_emptystring: corrected SQL assertion from Region to ContactName (unrelated bug)

Key files updated:

  • NorthwindFunctionsQueryMySqlTest.cs (110 changes)
  • NorthwindWhereQueryMySqlTest.cs (104 changes)
  • NorthwindGroupByQueryMySqlTest.cs (102 changes)
  • TPCGearsOfWarQueryMySqlTest.cs (264 changes)
  • DateOnlyQueryMySqlTest.cs (20 changes)
  • And 30 other test files

Examples:

# NorthwindGroupByQueryMySqlTest.cs
- @__a_0='2'
+ @a='2'

# NorthwindWhereQueryMySqlTest.cs
- @__myDatetime_0='2015-04-10T00:00:00.0000000' (DbType = DateTime)
+ @myDatetime='2015-04-10T00:00:00.0000000' (DbType = DateTime)

# DateOnlyQueryMySqlTest.cs
- @__todayDateOnly_1='11/17/2025' (DbType = Date)
+ @todayDateOnly='11/17/2025' (DbType = Date)

Technical Details

EF Core 10 Parameter Naming Changes:

  • Before (EF Core 9): @__variableName_0, @__variableName_1
  • After (EF Core 10): @variableName
  • Reasoning: Simplified naming improves SQL readability and reflects query pipeline improvements

Ref: dotnet/efcore#35113

Validation

  • ✅ All 701 parameter references updated across 35 test files
  • ✅ Build passes successfully
  • ✅ All changes are to test assertions only - no production code changes

Fixes #120

Original prompt

This section details on the original issue you should resolve

<issue_title>Assert.Equal() Failure: Strings differ</issue_title>
<issue_description>```
Error: Assert.Equal() Failure: Strings differ
↓ (pos 227)
Expected: ···"\nWHERE (LOCATE('', c.`Region`) - 1) = 0"
Actual: ···"RE (LOCATE('', `c`.`ContactName`) - 1) = "···
↑ (pos 227)
[xUnit.net 00:00:18.82] Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query.DateOnlyQueryMySqlTest.DateDiffDay(isAsync: False) [FAIL]

Failed Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query.NorthwindFunctionsQueryMySqlTest.Indexof_with_emptystring(async: False) [192 ms]
Error Message:
Assert.Equal() Failure: Strings differ
↓ (pos 227)
Expected: ···"\nWHERE (LOCATE('', c.Region) - 1) = 0"
Actual: ···"RE (LOCATE('', c.ContactName) - 1) = "···
↑ (pos 227)
Stack Trace:
at Microsoft.EntityFrameworkCore.TestUtilities.TestSqlLoggerFactory.AssertBaseline(String[] expected, Boolean assertOrder, Boolean forUpdate)
at Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query.NorthwindFunctionsQueryMySqlTest.AssertSql(String[] expected) in /home/runner/work/Pomelo.EntityFrameworkCore.MySql/Pomelo.EntityFrameworkCore.MySql/test/EFCore.MySql.FunctionalTests/Query/NorthwindFunctionsQueryMySqlTest.cs:line 3315
at Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query.NorthwindFunctionsQueryMySqlTest.Indexof_with_emptystring(Boolean async) in /home/runner/work/Pomelo.EntityFrameworkCore.MySql/Pomelo.EntityFrameworkCore.MySql/test/EFCore.MySql.FunctionalTests/Query/NorthwindFunctionsQueryMySqlTest.cs:line 236
--- End of stack trace from previous location ---

Error: Assert.Equal() Failure: Strings differ
↓ (pos 1)
Expected: "@__matchExpireDateTime_0='2299-12-31T00:0"···
Actual: "@matchExpireDateTime='2299-12-31T00:00:00"···
↑ (pos 1)

Failed Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query.DateOnlyQueryMySqlTest.ToDateTime_with_default_TimeOnly(isAsync: False) [110 ms]
Error Message:
Assert.Equal() Failure: Strings differ
↓ (pos 1)
Expected: "@__matchExpireDateTime_0='2299-12-31T00:0"···
Actual: "@matchExpireDateTime='2299-12-31T00:00:00"···
↑ (pos 1)
Stack Trace:
at Microsoft.EntityFrameworkCore.TestUtilities.TestSqlLoggerFactory.AssertBaseline(String[] expected, Boolean assertOrder, Boolean forUpdate)
at Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query.DateOnlyQueryMySqlTest.AssertSql(String expected) in /home/runner/work/Pomelo.EntityFrameworkCore.MySql/Pomelo.EntityFrameworkCore.MySql/test/EFCore.MySql.FunctionalTests/Query/DateOnlyQueryMySqlTest.cs:line 162
at Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query.DateOnlyQueryMySqlTest.ToDateTime_with_default_TimeOnly(Boolean isAsync) in /home/runner/work/Pomelo.EntityFrameworkCore.MySql/Pomelo.EntityFrameworkCore.MySql/test/EFCore.MySql.FunctionalTests/Query/DateOnlyQueryMySqlTest.cs:line 96
--- End of stack trace from previous location ---
Passed Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query.NullKeysMySqlTest.Include_with_null_fKs_and_non_nullable_PK [150 ms]
Passed Pomelo.EntityFrameworkCore.MySql.FunctionalTests.ModelBuilding.MySqlModelBuilderGenericTest+MySqlGenericOneToOne.Inverse_discovered_after_entity_unignored [161 ms]

Error: Assert.Equal() Failure: Strings differ
↓ (pos 1)
Expected: "@__todayDateOnly_1='11/17/2025' (DbType ="···
Actual: "@todayDateOnly='11/17/2025' (DbType = Dat"···
↑ (pos 1)

Failed Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query.DateOnlyQueryMySqlTest.DateDiffDay(isAsync: True) [74 ms]
Error Message:
Assert.Equal() Failure: Strings differ
↓ (pos 1)
Expected: "@__todayDateOnly_1='11/17/2025' (DbType ="···
Actual: "@todayDateOnly='11/17/2025' (DbType = Dat"···
↑ (pos 1)
Stack Trace:
at Microsoft.EntityFrameworkCore.TestUtilities.TestSqlLoggerFactory.AssertBaseline(String[] expected, Boolean assertOrder, Boolean forUpdate)
at Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query.DateOnlyQueryMySqlTest.AssertSql(String expected) in /home/runner/work/Pomelo.EntityFrameworkCore.MySql/Pomelo.EntityFrameworkCore.MySql/test/EFCore.MySql.FunctionalTests/Query/DateOnlyQueryMySqlTest.cs:line 162
at Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query.DateOnlyQueryMySqlTest.DateDiffDay(Boolean isAsync) in /home/runner/work/Pomelo.EntityFrameworkCore.MySql/Pomelo.EntityFrameworkCore.MySql/test/EFCore.MySql.FunctionalTests/Query/DateOnlyQueryMySqlTest.cs:line 134
at Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query.DateOnlyQueryMySqlTest.DateDiffDay(Boolean isAsync) in /home/runner/work/Pomelo.EntityFrameworkCore.MySql/Pomelo.EntityFrameworkCore.MySql/test/EFCore.MySql.FunctionalTests/Query/DateOnlyQueryMySqlTest.cs:line 134


</details>

- Fixes microting/Pomelo.EntityFrameworkCore.MySql#120

<!-- START COPILOT CODING AGENT TIPS -->
---

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips) in the docs.

Copilot AI and others added 2 commits November 17, 2025 16:05
Co-authored-by: renemadsen <76994+renemadsen@users.noreply.github.com>
Co-authored-by: renemadsen <76994+renemadsen@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix Assert.Equal() failure for string comparison Fix test assertions for EF Core 10 parameter naming changes Nov 17, 2025
Copilot AI requested a review from renemadsen November 17, 2025 16:19
@renemadsen
Copy link
Member

@copilot since we have the same kind of error, it must be safe to assume that all parameters have been changed from being without leading __ and trailing number in ef .net core 10

Error: Assert.Equal() Failure: Strings differ
            ↓ (pos 1)
Expected: "@__a_0='2'\n\nSELECT COALESCE(SUM(`o0`.`Ord"···
Actual:   "@a='2'\n\nSELECT COALESCE(SUM(`o0`.`OrderID"···
            ↑ (pos 1)

  Failed Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query.NorthwindGroupByQueryMySqlTest.GroupBy_param_with_element_selector_Select_Sum3(async: False) [30 ms]
  Error Message:
   Assert.Equal() Failure: Strings differ
            ↓ (pos 1)
Expected: "@__a_0='2'\n\nSELECT COALESCE(SUM(`o0`.`Ord"···
Actual:   "@a='2'\n\nSELECT COALESCE(SUM(`o0`.`OrderID"···
            ↑ (pos 1)
  Stack Trace:
     at Microsoft.EntityFrameworkCore.TestUtilities.TestSqlLoggerFactory.AssertBaseline(String[] expected, Boolean assertOrder, Boolean forUpdate)
   at Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query.NorthwindGroupByQueryMySqlTest.AssertSql(String[] expected) in /home/runner/work/Pomelo.EntityFrameworkCore.MySql/Pomelo.EntityFrameworkCore.MySql/test/EFCore.MySql.FunctionalTests/Query/NorthwindGroupByQueryMySqlTest.cs:line 3798
   at Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query.NorthwindGroupByQueryMySqlTest.GroupBy_param_with_element_selector_Select_Sum3(Boolean async) in /home/runner/work/Pomelo.EntityFrameworkCore.MySql/Pomelo.EntityFrameworkCore.MySql/test/EFCore.MySql.FunctionalTests/Query/NorthwindGroupByQueryMySqlTest.cs:line 1064

Co-authored-by: renemadsen <76994+renemadsen@users.noreply.github.com>
Copy link
Author

Copilot AI commented Nov 17, 2025

@copilot since we have the same kind of error, it must be safe to assume that all parameters have been changed from being without leading __ and trailing number in ef .net core 10

...

You're absolutely right! I've now updated all 690 parameter references across 34 test files systematically. The changes follow the EF Core 10 pattern of removing the @__ prefix and _N suffix from all parameter names.

The fix is in commit 5ad8288 which updates parameters like:

  • @__a_0@a
  • @__myDatetime_0@myDatetime
  • And all similar patterns throughout the test suite

Copilot AI changed the title Fix test assertions for EF Core 10 parameter naming changes Update all test assertions for EF Core 10 parameter naming changes Nov 17, 2025
@renemadsen renemadsen marked this pull request as ready for review November 17, 2025 17:01
@renemadsen renemadsen merged commit c0828c2 into master Nov 17, 2025
1 of 55 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Assert.Equal() Failure: Strings differ

2 participants