Skip to content

feat: migrate to EF Core 10 and .NET 10#39

Closed
molinch wants to merge 1 commit intoClaveConsulting:masterfrom
molinch:feature/dotnet-10
Closed

feat: migrate to EF Core 10 and .NET 10#39
molinch wants to merge 1 commit intoClaveConsulting:masterfrom
molinch:feature/dotnet-10

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.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Nov 17, 2025

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-feature/dotnet-10.80 can be pushed to nuget

@molinch molinch force-pushed the feature/dotnet-10 branch 2 times, most recently from 4cd3a41 to 9a5b118 Compare November 17, 2025 15:06
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.
@mariusGundersen
Copy link
Copy Markdown
Contributor

Great work!

If you remove the feature/ prefix from the branch name I can make a pre-release version for testing. It seems like the build failed because it used the whole branch name and it contains the invalid character /.

@molinch molinch closed this Nov 17, 2025
@molinch molinch deleted the feature/dotnet-10 branch November 17, 2025 17:10
@molinch molinch deployed to pre-release November 17, 2025 17:12 — with GitHub Actions Active
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