Skip to content

[release/9.0] Fix snapshot generation to capture column type for JSON columns#37294

Merged
AndriySvyryd merged 4 commits intorelease/9.0from
copilot/port-efcore-37284-to-release
Dec 5, 2025
Merged

[release/9.0] Fix snapshot generation to capture column type for JSON columns#37294
AndriySvyryd merged 4 commits intorelease/9.0from
copilot/port-efcore-37284-to-release

Conversation

Copy link
Contributor

Copilot AI commented Dec 4, 2025

Port of #37284

Description
EF Core 10 added support for json SQL Server type for JSON column and it's used by default if the target SQL Server version supports, but no migrations to convert the columns to the new json column type are created because the model snapshot doesn't capture the default store type for JSON columns.

Customer impact
Customers upgrading from EF Core 9 to 10 who use ToJson() won't get migrations generated to update the column type from nvarchar(max) to json. The workaround is to manually specify .HasColumnType("json") on the JSON column.

How found
Customer reported on EF 10.0.0

Regression
No, new feature.

Testing
Test added

Risk
Low. Targeted fix to include the default column type in the model snapshot. Only affects design-time.

Original prompt

Port #37284 to release/9.0-staging, but don't use the code or tests for complex types


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI changed the title [WIP] Port changes from PR #37284 to release/9.0-staging Port #37284 to release/9.0-staging: Fix snapshot generation for JSON column types Dec 4, 2025
Copilot AI requested a review from AndriySvyryd December 4, 2025 00:33
@AndriySvyryd AndriySvyryd changed the title Port #37284 to release/9.0-staging: Fix snapshot generation for JSON column types ]release/9.0] Fix snapshot generation to capture column type for JSON columns Dec 4, 2025
@AndriySvyryd AndriySvyryd marked this pull request as ready for review December 4, 2025 01:13
@AndriySvyryd AndriySvyryd requested a review from a team December 4, 2025 01:15
@AndriySvyryd AndriySvyryd changed the title ]release/9.0] Fix snapshot generation to capture column type for JSON columns [release/9.0] Fix snapshot generation to capture column type for JSON columns Dec 4, 2025
@AndriySvyryd AndriySvyryd requested review from a team and artl93 December 5, 2025 18:50
@AndriySvyryd
Copy link
Member

cc @artl93

@SamMonoRT
Copy link
Member

@AndriySvyryd - cutoff for 8 and 9 Jan servicing is today, but this looks like it can wait for next month.

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.

Regression, customer reported, blocked. Approved. Please take at same time as #37284.

@AndriySvyryd AndriySvyryd force-pushed the copilot/port-efcore-37284-to-release branch from 10a53a0 to 3532857 Compare December 5, 2025 21:42
@AndriySvyryd AndriySvyryd changed the base branch from release/9.0-staging to release/9.0 December 5, 2025 22:13
@rbhanda rbhanda added this to the 9.0.12 milestone Dec 5, 2025
@AndriySvyryd AndriySvyryd merged commit e5080b7 into release/9.0 Dec 5, 2025
7 checks passed
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.

7 participants