Skip to content

[release/9.0-staging] Handle .NET 10 MemoryExtensions.Contains overload with comparer#37183

Merged
roji merged 1 commit intodotnet:release/9.0-stagingfrom
roji:FirstClassSpans9
Nov 19, 2025
Merged

[release/9.0-staging] Handle .NET 10 MemoryExtensions.Contains overload with comparer#37183
roji merged 1 commit intodotnet:release/9.0-stagingfrom
roji:FirstClassSpans9

Conversation

@roji
Copy link
Member

@roji roji commented Nov 17, 2025

Fixes #37176 for EF 9.0 (see #37182 for 8.0 fix)

Description

C# 14 first-class spans causes MemoryExtensions.Contains instead of Enumerable.Contains to be resolved, forcing LINQ providers to identify the former in additional to the latter. In addition, .NET 10 introduced a 3-parameter overload to MemoryExtensions.Contains which accepts a comparer, that gets resolved in some situations. While we already backported support for MemoryExtensions.Contains to EF Core 8 and 9, to allow these versions to work with C# 14, we didn't backport a separate change to also support the new .NET 10 overload.

Customer impact

Customers upgrading to .NET 10 but staying on EF 8 or 9 start experiencing failures in some LINQ queries that use Contains. The common case is Contains over an enum array:

_ = await context.Blogs
    .Where(b => new SomeEnum[] { SomeEnum.One, SomeEnum.Too }.Contains(b.SomeEnum))
    .ToListAsync();

Customers upgrading to EF 10 are not affected.

How found

Multiple customers reported on 9.0

Regression

Partial: occurs only when upgrading to .NET 10 but keeping older EF 8 or 9.

Testing

Tested manually, as we don't have automated testing for .NET 10 on older EF versions.

Risk

Very low, targeted change that's very low-risk, and already well-tested in EF 10. Quirk added.

Copy link
Member

@artl93 artl93 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved for me. (See questions in the 8.0 backport.)

@SamMonoRT SamMonoRT added this to the 9.0.x milestone Nov 17, 2025
@roji roji merged commit 51bd1bd into dotnet:release/9.0-staging Nov 19, 2025
7 checks passed
@roji roji deleted the FirstClassSpans9 branch November 19, 2025 06:01
@roji roji modified the milestones: 9.0.x, 9.0.12 Nov 19, 2025
This was referenced Jan 13, 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>
This was referenced Feb 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants