Skip to content

[release/6.5] Fix HierarchyId parsing for numbers outside Int32 range#2362

Merged
AndriySvyryd merged 2 commits intorelease/6.5from
copilot/port-ef6-pull-2359
Mar 16, 2026
Merged

[release/6.5] Fix HierarchyId parsing for numbers outside Int32 range#2362
AndriySvyryd merged 2 commits intorelease/6.5from
copilot/port-ef6-pull-2359

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 5, 2026

Port of dotnet/ef6#2359

HierarchyId fails to parse valid IDs containing numbers outside the Int32 range (e.g. SQL Server file table path_locator defaults), throwing ArgumentException due to int.TryParse overflow.

// Previously threw ArgumentException; now works correctly
var hid = HierarchyId.Parse("/239196746533516.54209197962074.2160059995/");

Changes

  • HierarchyId.cs: Change _nodes from int[][] to long[][]; switch parsing to long.TryParse; fix new[] { 1 }new[] { 1L } in GetDescendant
  • Rename helpers: IntArrayToStirngLongArrayToString (IEnumerable<long>); CompareIntArraysCompareLongArrays (long[], long locals); update all call sites
  • HierarchyIdUnitTests.cs: Add tests for parsing IDs with out-of-Int32-range numbers and for comparison operators on large values

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • 4myvsblobprodcus32.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet build src/EntityFramework/EntityFramework.csproj -c Debug (dns block)
  • vb4vsblobprodcus33.vsblob.vsassets.io
    • Triggering command: /usr/bin/dotnet dotnet build src/EntityFramework/EntityFramework.csproj -c Debug (dns block)

If you need me to access, download, or install something from one of these locations, you can either:


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

)

Co-authored-by: AndriySvyryd <6539701+AndriySvyryd@users.noreply.github.com>
Copilot AI changed the title [WIP] Port changes from EF6 pull request 2359 Fix HierarchyId parsing for numbers outside Int32 range Mar 5, 2026
@AndriySvyryd AndriySvyryd changed the title Fix HierarchyId parsing for numbers outside Int32 range [release/6.5] Fix HierarchyId parsing for numbers outside Int32 range Mar 5, 2026
@AndriySvyryd AndriySvyryd marked this pull request as ready for review March 5, 2026 17:56
@roji roji assigned AndriySvyryd and unassigned roji Mar 15, 2026
@AndriySvyryd AndriySvyryd merged commit 515b353 into release/6.5 Mar 16, 2026
2 checks passed
@AndriySvyryd AndriySvyryd deleted the copilot/port-ef6-pull-2359 branch March 16, 2026 03:25
Chris-Wolfgang added a commit to Chris-Wolfgang/DbContextBuilder that referenced this pull request May 4, 2026
Updated [EntityFramework](https://github.com/dotnet/ef6) from 6.5.1 to
6.5.2.

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

_Sourced from [EntityFramework's
releases](https://github.com/dotnet/ef6/releases)._

## 6.5.2

## What's Changed
* Update Microsoft.Data.SqlClient to 5.1.6 by @​AndriySvyryd in
dotnet/ef6#2284
* Port .NET 10 first-class span support fix by @​Copilot in
dotnet/ef6#2365
* Fix HierarchyId parsing for numbers outside Int32 range by @​Copilot
in dotnet/ef6#2362
* Allow the tools to run on the newest SDK by @​AndriySvyryd in
dotnet/ef6#2396

**Full Changelog**:
dotnet/ef6@v6.5.1...v6.5.2

Commits viewable in [compare
view](dotnet/ef6@v6.5.1...v6.5.2).
</details>

Updated
[Meziantou.Analyzer](https://github.com/meziantou/Meziantou.Analyzer)
from 3.0.58 to 3.0.61.

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

_Sourced from [Meziantou.Analyzer's
releases](https://github.com/meziantou/Meziantou.Analyzer/releases)._

## 3.0.61

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.61>

## What's Changed
* MA0042: suppress diagnostic for
`IDbContextFactory<TContext>.CreateDbContext()` by @​Copilot in
meziantou/Meziantou.Analyzer#1116


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.60...3.0.61

## 3.0.60

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.60>

## What's Changed
* Add global severity modes for MeziantouAnalysisMode by @​meziantou in
meziantou/Meziantou.Analyzer#1114


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.59...3.0.60

## 3.0.59

NuGet package:
<https://www.nuget.org/packages/Meziantou.Analyzer/3.0.59>

## What's Changed
* Add MA0195 static-field initialization analyzer by @​meziantou in
meziantou/Meziantou.Analyzer#1112


**Full Changelog**:
meziantou/Meziantou.Analyzer@3.0.58...3.0.59

Commits viewable in [compare
view](meziantou/Meziantou.Analyzer@3.0.58...3.0.61).
</details>

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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>
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.

3 participants