You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 1225348
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: CHANGELOG.md
+17Lines changed: 17 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,3 +1,20 @@
1
+
# 6.0.0
2
+
3
+
EntityGraphQL 6.0 is the culmination of the 6.0.0-beta1 through 6.0.0-beta9 releases. The beta sections below carry the full, detailed lists of changes, fixes and migration notes - and see the [upgrade guide](https://entitygraphql.github.io/6.0/upgrade-6-0) for a consolidated migration path from 5.x.
4
+
5
+
## 6.0 Highlights
6
+
7
+
-**GraphQL spec conformance** - partial results per the spec (failing top-level fields no longer fail the whole operation), [September 2025 GraphQL spec](https://spec.graphql.org/September2025/) support (`@oneOf`, argument/input-field deprecation, document descriptions, stricter validation) and `MapGraphQL()` follows the [GraphQL over HTTP spec](https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md) by default.
8
+
-**A real async model** - `ResolveAsync<TService>()` fields, end-to-end `CancellationToken` support (into resolvers, mutations, subscriptions and the in-flight EF query), async database materialization for root list fields, and concurrency control per field, per service and per query (`MaxQueryConcurrency` defaults to 100).
9
+
-**Security hardening** - authorization fails closed, introspection respects authorization, a parser recursion backstop against deeply-nested document DoS, opt-in query guards (`MaxQueryDepth`, `MaxFieldSelections`, `MaxFieldAliases`, `MaxQueryComplexity`) and per-field rate limiting.
10
+
-**New schema-building features** - `UseAggregate()` for SQL-translated aggregates over collections, `AddFieldsFrom<T>()`/`AddQueryFieldsFrom<T>()` to group field definitions into classes, filter improvements (GraphQL variables, service fields, `selectMany`, filtering by paged child fields) and async subscription setup for external brokers.
11
+
-**Performance** - paging answers `hasNextPage` with a cheap `EXISTS` instead of `COUNT(*)`, async result processing is compiled and targeted (~2x faster on async-heavy results), opt-in compiled-delegate caching, and WebSocket subscription delivery is ordered and non-blocking.
12
+
-**Modern targets** - `net8.0`, `net9.0` and `net10.0` with a dependency-light core package.
13
+
14
+
## Breaking Changes from Beta 9
15
+
16
+
-`MapGraphQL()` HTTP status codes now fully follow the [GraphQL over HTTP spec](https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md) for the `application/graphql-response+json` media type (the default response type): a response with no `data` entry (a request error - e.g. document parse/validation failure) returns `400` instead of `200`, and a response with both `data` and `errors` (partial success) returns `294` per the spec. Clean results remain `200`. Responses negotiated as legacy `application/json` keep returning `200` for every well-formed request. Clients following the spec read the response body regardless of status code for `application/graphql-response+json`.
Copy file name to clipboardExpand all lines: docs/docs/integration.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,6 +8,10 @@ Being GraphQL there are many tools that integrate well with EntityGraphQL.
8
8
9
9
EntityGraphQL supports GraphQL introspection queries so tools like GraphiQL and Relay can work against your schema.
10
10
11
+
:::tip GraphQL over HTTP
12
+
`MapGraphQL()` follows the [GraphQL over HTTP spec](https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md), the behavior EntityGraphQL adopted in v6. GraphQL execution errors are returned in the GraphQL response body rather than by changing the route shape or adding a special endpoint mode. HTTP status codes follow the spec per negotiated media type: with `application/graphql-response+json` (the default) a request error (no `data` in the response) returns `400`, a partial success (`data` plus `errors`) returns `294` and a clean result `200`; with the legacy `application/json` every well-formed request returns `200` and clients must read the body. Either way, always read `errors` from the response body.
13
+
:::
14
+
11
15
## Introspection
12
16
13
17
Introspection is **enabled by default** and is required by most GraphQL client tools (GraphiQL, Insomnia, Relay dev tools, Apollo Studio, code generators, etc.). Disabling it is not recommended unless your schema must be kept confidential.
0 commit comments