Skip to content

Migrate to EF Core 10 and .NET 10#40

Merged
mariusGundersen merged 1 commit intoClaveConsulting:masterfrom
molinch:dotnet10
Nov 19, 2025
Merged

Migrate to EF Core 10 and .NET 10#40
mariusGundersen merged 1 commit intoClaveConsulting:masterfrom
molinch:dotnet10

Conversation

@molinch
Copy link
Copy Markdown
Contributor

@molinch molinch commented Nov 17, 2025

  • Upgrade Microsoft.EntityFrameworkCore from 9.0.0 to 10.0.0
  • Upgrade to .NET 10 SDK and target framework
  • Replace ParameterExtractingExpressionVisitor with ExpressionTreeFuncletizer
  • Remove IParameterValues interface usage (replaced with Dictionary<string, object?>)
  • Delete ParameterExtractingExpressionVisitor.cs (~700 lines of EF Core internal code copy)
  • Update parameter detection strategy to check dictionary count after funcletization
  • Update test expectations for new parameter naming (@__p_0 -> @p)
  • Remove one obsolete test UseExpressionify_EvaluationModeCached_CannotHandleEvaluatableExpressions (EF Core 10 optimizer handles constant folding better)
    • EF Core 10's ExpressionTreeFuncletizer is smarter than EF Core 9's ParameterExtractingExpressionVisitor.
    • When passing constant values like null, EF Core 10 optimizes them away without creating parameters, so the test expectation (that an exception should be thrown) is no longer valid.
    • The core functionality (preventing dynamic parameters in cached queries) is still tested by the other tests.

All 51 tests passing.

BREAKING CHANGE: Upgrade to EF Core 10 and .NET 10

This is a major version upgrade that requires:
- .NET 10 SDK
- EF Core 10 packages
- Updated parameter naming in generated SQL (@__p_0 -> @p)

Core Changes:
- Upgrade Microsoft.EntityFrameworkCore from 9.0.0 to 10.0.0
- Upgrade to .NET 10 SDK and target framework (net10.0)
- Replace ParameterExtractingExpressionVisitor with ExpressionTreeFuncletizer
- Remove IParameterValues interface (replaced with Dictionary<string, object?>)
- Delete ParameterExtractingExpressionVisitor.cs (~700 lines of internal EF Core code)
- Update parameter detection strategy to check dictionary count after funcletization
- Update test expectations for simplified parameter naming
- Remove obsolete test (EF Core 10 optimizer handles constant folding)

All 51 tests passing.
@github-actions
Copy link
Copy Markdown

The following versions will be created when this pull-request is merged:

10.0.02025-11-17 (71f272e...71f272e)

Features

  • migrate to EF Core 10 and .NET 10 (71f272e)

BREAKING CHANGES

  • Upgrade to EF Core 10 and .NET 10 (71f272e)

This is a major version upgrade that requires:
- .NET 10 SDK
- EF Core 10 packages
- Updated parameter naming in generated SQL (@__p_0 -> @p)

Core Changes:
- Upgrade Microsoft.EntityFrameworkCore from 9.0.0 to 10.0.0
- Upgrade to .NET 10 SDK and target framework (net10.0)
- Replace ParameterExtractingExpressionVisitor with ExpressionTreeFuncletizer
- Remove IParameterValues interface (replaced with Dictionary<string, object?>)
- Delete ParameterExtractingExpressionVisitor.cs (~700 lines of internal EF Core code)
- Update parameter detection strategy to check dictionary count after funcletization
- Update test expectations for simplified parameter naming
- Remove obsolete test (EF Core 10 optimizer handles constant folding)

All 51 tests passing.


Pre-release package 10.0.0-dotnet10.81 can be pushed to nuget

@molinch molinch mentioned this pull request Nov 17, 2025
@molinch molinch deployed to pre-release November 17, 2025 17:12 — with GitHub Actions Active
@molinch
Copy link
Copy Markdown
Contributor Author

molinch commented Nov 17, 2025

@mariusGundersen You were right the issue was having feature/ in the branch name. I recreated the PR without it.
Could you publish the prerelease package?

@mariusGundersen
Copy link
Copy Markdown
Contributor

The re-release should be ready for testing now.

@molinch
Copy link
Copy Markdown
Contributor Author

molinch commented Nov 19, 2025

@mariusGundersen FYI works as charm for our codebase

@mariusGundersen mariusGundersen merged commit ba0427f into ClaveConsulting:master Nov 19, 2025
11 of 13 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.

2 participants