diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml
index 0b747b8c..eb4054de 100644
--- a/.github/workflows/copilot-setup-steps.yml
+++ b/.github/workflows/copilot-setup-steps.yml
@@ -33,5 +33,5 @@ jobs:
with:
global-json-file: global.json
dotnet-version: |
- 9.x
+ 10.x
8.x
diff --git a/.github/workflows/publish-ci.yml b/.github/workflows/publish-ci.yml
index a6b76300..67929fc5 100644
--- a/.github/workflows/publish-ci.yml
+++ b/.github/workflows/publish-ci.yml
@@ -8,7 +8,7 @@ on:
env:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
DOTNET_NOLOGO: true
- DOTNET_SDK_VERSION: 9.0.307
+ DOTNET_SDK_VERSION: 10.0.102
jobs:
publish:
diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml
index 849de8d2..41da40ad 100644
--- a/.github/workflows/publish-release.yml
+++ b/.github/workflows/publish-release.yml
@@ -9,7 +9,7 @@ env:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
DOTNET_NOLOGO: true
SLEEP_DURATION: 60
- DOTNET_SDK_VERSION: 9.0.307
+ DOTNET_SDK_VERSION: 10.0.102
jobs:
publish:
diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
index 9333d342..95b06426 100644
--- a/.github/workflows/pull-request.yml
+++ b/.github/workflows/pull-request.yml
@@ -21,7 +21,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-22.04, windows-latest, macOS-latest]
- dotnet: [9.0.307]
+ dotnet: [10.0.102]
runs-on: ${{ matrix.os }}
steps:
diff --git a/Directory.Build.props b/Directory.Build.props
index 62d2954a..aff702c9 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,9 +1,9 @@
- net8.0
- 9.0
- 9.0.*
+ net10.0
+ 10.0
+ 10.0.*
true
true
$(NoWarn);NU1504;NU1701
@@ -11,7 +11,7 @@
- 3.1.0
+ 4.0.0
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index f449ed6d..edcfcec0 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -238,4 +238,9 @@
* Added `map` function for Relay `Connection` and `Edge` types
* Excluded `GraphQLWebSocketMiddleware` from exception stack trace if request not a Web Socket
* Changed `GraphQLOptionsDefaults.WebSocketConnectionInitTimeoutInMs` const type to `double`
-* Improved Relay XML documentation comments
\ No newline at end of file
+* Improved Relay XML documentation comments
+
+### 4.0.0 - Unreleased
+
+* **Breaking Change** Migrated to .NET 10
+* **Breaking Change** Made Relay `Edge` a struct
\ No newline at end of file
diff --git a/src/FSharp.Data.GraphQL.Server.Relay/Connections.fs b/src/FSharp.Data.GraphQL.Server.Relay/Connections.fs
index 5938b63c..57ad3956 100644
--- a/src/FSharp.Data.GraphQL.Server.Relay/Connections.fs
+++ b/src/FSharp.Data.GraphQL.Server.Relay/Connections.fs
@@ -11,6 +11,7 @@ open FSharp.Data.GraphQL.Types.Patterns
/// Edges are used to traverse connections in Relay pagination.
///
/// The type of the node at the end of this edge.
+[]
type Edge<'Node> = {
/// Opaque cursor string used to identify this node's position in the connection.
Cursor : string