Skip to content

[release/9.0-staging] Fix performance degradation in converters because the instance was not reused#36897

Merged
cincuranet merged 1 commit intodotnet:release/9.0-stagingfrom
cincuranet:converter-new-fix-9
Oct 3, 2025
Merged

[release/9.0-staging] Fix performance degradation in converters because the instance was not reused#36897
cincuranet merged 1 commit intodotnet:release/9.0-stagingfrom
cincuranet:converter-new-fix-9

Conversation

@cincuranet
Copy link
Contributor

@cincuranet cincuranet commented Oct 1, 2025

Backport of #36895.

Description

Change to support NativeAOT in EF Core 9 (experimental feature) introduced new code path that resulted in new instances of value converters on primitive collections being recreated on every entity created and hence recompiling the expression on every call.

Customer impact

Significant performance degradation when fetching primitive collections data with value converters from database.

How found

Customer reported.

Regression

Yes, from 8.

Testing

Manual testing.

Risk

Low. Feature flag added.

@cincuranet cincuranet changed the title Fix performance degradation in converters because the instance was not reused [release/9.0-staging] Fix performance degradation in converters because the instance was not reused Oct 1, 2025
@cincuranet cincuranet marked this pull request as ready for review October 2, 2025 08:27
@cincuranet cincuranet requested a review from a team October 2, 2025 08:27
@cincuranet cincuranet requested a review from artl93 October 2, 2025 08:29
@cincuranet cincuranet force-pushed the converter-new-fix-9 branch from 01478a7 to 04099cc Compare October 2, 2025 09:05
@cincuranet
Copy link
Contributor Author

Approved in Tactics via email.

@cincuranet cincuranet merged commit f686ae5 into dotnet:release/9.0-staging Oct 3, 2025
7 checks passed
@cincuranet cincuranet deleted the converter-new-fix-9 branch October 3, 2025 12:35
This was referenced Nov 11, 2025
This was referenced Feb 21, 2026
renebentes pushed a commit to renebentes/3054 that referenced this pull request Feb 25, 2026
…#118)

Updated
[Microsoft.EntityFrameworkCore.Design](https://github.com/dotnet/efcore)
from 9.0.7 to 9.0.13.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.EntityFrameworkCore.Design's
releases](https://github.com/dotnet/efcore/releases)._

## 9.0.13

[Release](https://github.com/dotnet/core/releases/tag/v9.0.13)

## What's Changed
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#37369
* [release/8.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#37375
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#37422
* Update branding to 8.0.24 by @​vseanreesermsft in
dotnet/efcore#37448
* Update branding to 9.0.13 by @​vseanreesermsft in
dotnet/efcore#37449
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#37452
* [release/8.0] Disable Analyzer tests by @​AndriySvyryd in
dotnet/efcore#37467
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#37468
* [release/8.0] Fix binskim prereleaseVersion formatting in pipeline
config by @​AndriySvyryd in dotnet/efcore#37475
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#37490
* Merging internal commits for release/8.0 by @​vseanreesermsft in
dotnet/efcore#37503
* Merging internal commits for release/9.0 by @​vseanreesermsft in
dotnet/efcore#37502
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#37504


**Full Changelog**:
dotnet/efcore@v9.0.12...v9.0.13

## 9.0.12

[Release](https://github.com/dotnet/core/releases/tag/v9.0.12)

## What's Changed
* [release/8.0-staging] Merge release/8.0 to release/8.0-staging by
@​cincuranet in dotnet/efcore#36948
* [release/9.0-staging] Merge release/9.0 to release/9.0-staging by
@​cincuranet in dotnet/efcore#36949
* [release/8.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36980
* [release/9.0] Update Microsoft.Build.* versions by @​AndriySvyryd in
dotnet/efcore#37004
* [release/9.0] Merge release/9.0-staging to release/9.0 by
@​AndriySvyryd in dotnet/efcore#37041
* [release/8.0] Update dependencies by @​AndriySvyryd in
dotnet/efcore#37048
* Update branding to 8.0.23 by @​vseanreesermsft in
dotnet/efcore#37074
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#37080
* [automated] Merge branch 'release/8.0-staging' => 'release/8.0' by
@​AndriySvyryd in dotnet/efcore#37079
* Update branding to 9.0.12 by @​vseanreesermsft in
dotnet/efcore#37075
* [release/9.0-staging] Fix 0-byte reads/writes on blobs by @​cincuranet
in dotnet/efcore#37068
* [release/8.0-staging] Fix 0-byte reads/writes on blobs by @​cincuranet
in dotnet/efcore#37067
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#37088
* [release/8.0] Update BinSkim to 4.3.1 by @​AndriySvyryd in
dotnet/efcore#37091
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#37116
* Merging internal commits for release/8.0 by @​vseanreesermsft in
dotnet/efcore#37130
* Merging internal commits for release/9.0 by @​vseanreesermsft in
dotnet/efcore#37129
* [release/8.0] Change NuGet audit to moderate by @​AndriySvyryd in
dotnet/efcore#37138
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#37135
* [release/8.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#37160
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#37161
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#37163
* [release/9.0-staging] Handle .NET 10 MemoryExtensions.Contains
overload with comparer by @​roji in
dotnet/efcore#37183
* [release/8.0-staging] Handle .NET 10 MemoryExtensions.Contains
overload with comparer by @​roji in
dotnet/efcore#37182
* [release/8.0-staging] Update to Mac 15 queues. by @​cincuranet in
dotnet/efcore#37097
* [release/9.0-staging] Update to Mac 15 queues. by @​cincuranet in
dotnet/efcore#37098
* Merge release/8.0-staging to release/8.0 by @​AndriySvyryd in
dotnet/efcore#37305
* [release/9.0] Fix snapshot generation to capture column type for JSON
columns by @​Copilot in dotnet/efcore#37294
* Merge release/9.0-staging to release/9.0 by @​AndriySvyryd in
dotnet/efcore#37306
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#37315
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#37307


**Full Changelog**:
dotnet/efcore@v9.0.11...v9.0.12

## 9.0.11

[Release](https://github.com/dotnet/core/releases/tag/v9.0.11)

## What's Changed
* [release/9.0-staging] Merge release/9.0 to release/9.0-staging by
@​cincuranet in dotnet/efcore#36800
* [release/8.0-staging] Merge release/8.0 to release/8.0-staging by
@​cincuranet in dotnet/efcore#36798
* [release/9.0-staging] Fix performance degradation in converters
because the instance was not reused by @​cincuranet in
dotnet/efcore#36897
* [release/8.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36915
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36916
* Update branding to 9.0.11 by @​vseanreesermsft in
dotnet/efcore#36925
* Update branding to 8.0.22 by @​vseanreesermsft in
dotnet/efcore#36924
* [release/8.0] Merge release/8.0-staging to release/8.0 by @​cincuranet
in dotnet/efcore#36943
* [release/9.0] Merge release/9.0-staging to release/9.0 by @​cincuranet
in dotnet/efcore#36944
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#36939
* Merging internal commits for release/8.0 by @​vseanreesermsft in
dotnet/efcore#36968
* Merging internal commits for release/9.0 by @​vseanreesermsft in
dotnet/efcore#36969
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#36973
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36981


**Full Changelog**:
dotnet/efcore@v9.0.10...v9.0.11

## 9.0.10

[Release](https://github.com/dotnet/core/releases/tag/v9.0.10)

## What's Changed
* [release/8.0-staging] Merge release/8.0 to release/8.0-staging by
@​cincuranet in dotnet/efcore#36540
* [release/9.0-staging] Merge release/9.0 to release/9.0-staging by
@​cincuranet in dotnet/efcore#36541
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36690
* Update branding to 9.0.10 by @​vseanreesermsft in
dotnet/efcore#36697
* Update branding to 8.0.21 by @​vseanreesermsft in
dotnet/efcore#36696
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#36699
* Merging internal commits for release/8.0 by @​vseanreesermsft in
dotnet/efcore#36727
* Merging internal commits for release/9.0 by @​vseanreesermsft in
dotnet/efcore#36728
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#36734
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36753
* [release/8.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36765
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36782
* [release/8.0] Disable Guardian Dotnet Analyzers by @​AndriySvyryd in
dotnet/efcore#36776
* [release/9.0] Disable Guardian Dotnet Analyzers by @​AndriySvyryd in
dotnet/efcore#36777
* [8.0] Resolve query logger from QueryContext in shaper generation
(#​36758) by @​roji in dotnet/efcore#36779
* [9.0] Resolve query logger from QueryContext in shaper generation
(#​36758) by @​roji in dotnet/efcore#36778
* [release/8.0] Merge release/8.0-staging to release/8.0 by @​cincuranet
in dotnet/efcore#36788
* [release/9.0] Merge release/9.0-staging to release/9.0 by @​cincuranet
in dotnet/efcore#36789
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#36784
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36833
* [release/8.0] Remove OSX.13.ARM64 from HelixTargetQueues by
@​AndriySvyryd in dotnet/efcore#36838
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#36841
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36852
* [release/8.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36853
* [release/8.0] Remove OSX.13.Amd64 target from HelixTargetQueues by
@​AndriySvyryd in dotnet/efcore#36855
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#36860
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36867


**Full Changelog**:
dotnet/efcore@v9.0.9...v9.0.10

## 9.0.9

[Release](https://github.com/dotnet/core/releases/tag/v9.0.9)

## What's Changed
* [release/8.0] Merge release/8.0 => release/8.0-staging by @​cincuranet
in dotnet/efcore#36197
* [release/9.0] Merge release/9.0 => release/9.0-staging by @​cincuranet
in dotnet/efcore#36201
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36398
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36495
* Update branding to 9.0.9 by @​vseanreesermsft in
dotnet/efcore#36498
* Update branding to 8.0.20 by @​vseanreesermsft in
dotnet/efcore#36497
* [release/9.0] Dispose related readers in
GroupBySplitQueryingEnumerable (#​36484) by @​roji in
dotnet/efcore#36490
* [release/8.0] Dispose related readers in
GroupBySplitQueryingEnumerable (#​36484) by @​roji in
dotnet/efcore#36489
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#36500
* Merging internal commits for release/8.0 by @​vseanreesermsft in
dotnet/efcore#36512
* Merging internal commits for release/9.0 by @​vseanreesermsft in
dotnet/efcore#36511
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#36514
* [release/8.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36533
* [release/8.0] Merge release/8.0-staging to release/8.0 by @​cincuranet
in dotnet/efcore#36531
* [release/9.0] Merge release/9.0-staging to release/9.0 by @​cincuranet
in dotnet/efcore#36532
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36534
* [automated] Merge branch 'release/8.0' => 'release/9.0' by
@​github-actions[bot] in dotnet/efcore#36537
* [release/9.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/efcore#36592


**Full Changelog**:
dotnet/efcore@v9.0.8...v9.0.9

Commits viewable in [compare
view](dotnet/efcore@v9.0.7...v9.0.13).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Microsoft.EntityFrameworkCore.Design&package-manager=nuget&previous-version=9.0.7&new-version=9.0.13)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant