Releases: SimonCropp/GraphQL.EntityFramework
Releases · SimonCropp/GraphQL.EntityFramework
34.1.9
Bug Fix
- AddSingleField now loads filter-required navigation properties via Include (#1229) — When using AddSingleField with
where filters that reference navigation properties, the required navigations are now automatically included so the
filter can evaluate correctly. Previously this could fail because the navigation data wasn't loaded.
Other Changes
- Cleanup: removed unused package references, FodyWeavers entries, and simplified IncludeAppender
- Internal improvements to EfGraphQLService_Navigation, Mapper, and test coverage
34.1.8
- Handle Include on projected queries in IncludeAppender (#1228) — EF Core does not support Include on non-entity
queries (e.g., after a Select projection). The IncludeAppender now detects projected queries and skips applying
Include, catching InvalidOperationException as a fallback. This prevents runtime errors when combining Select
projections with navigation property filters.
Other Changes
- Minor improvements to SelectExpressionBuilder
- Added integration tests for select projections with and without navigation filters
34.2.0
Breaking Changes
- Dropped abstract type projection support (#1233) — Abstract types in projections are no longer automatically
handled. Use concrete types or explicit projections instead. - Removed obsolete APIs (#1230) — Previously deprecated APIs have been removed.
Bug Fixes
- Fix circular Include walkback — Track visited entity types when building Include paths to prevent infinite loops
with circular or redundant includes. - Fix connection ordering check when Include() strips IOrderedQueryable (#1262) — Entities with read-only properties
no longer break connection ordering after Include() strips the IOrderedQueryable interface. - Fix projection of fragment spreads in connection node fields (#1261) — Fragment spreads (... on Type) now project
correctly in connection items/edges/node fields. - Get navigation props working on concrete types where the name property is not present on the TPH base (#1254) —
Navigation properties defined only on derived types in TPH hierarchies now resolve correctly. - Avoid converting filter projections to strings (#1231) — Filter projections are no longer unnecessarily stringified.
Enhancements
- Support casts in ProjectionAnalyzer — ProjectionAnalyzer now handles UnaryExpression nodes (Convert, TypeAs),
enabling property path extraction through explicit and as casts. - Added discriminator for TPH tables (#1236) — TPH (Table Per Hierarchy) tables now include discriminator handling.
- WithProjection — Added projection support improvements.
- Clarified guidance for abstract projections — Error and diagnostic messages now recommend either making the type
concrete or using an explicit projection.
Dependencies
- Bumped EfOrderBy from 0.1.6 to 0.2.1 (#1234)
- Bumped MarkdownSnippets.MsBuild to 28.0.2
- Various package updates
Other
- Modernised SampleWeb project
- Analyzer project references now only included in Release configuration
- Removed try/catch around Include calls (no longer needed after projection changes)
- Various cleanup and ref updates
34.1.7
34.1.6
- Allow explicit projections through abstract navigations — Explicit projections can now traverse abstract navigation
properties, relaxing the previous restriction. Updated FilterIdentityProjectionAnalyzer and FilterEntry validation
logic accordingly.
34.1.5
- Fix filter projection to avoid selecting all navigation fields (#1226) — When filters referenced navigation
properties, the projection system was selecting all fields from the navigation entity. Now only the required fields
are projected.
New Analyzer
- GQLEF007 — New diagnostic that warns when filter projections traverse abstract navigation properties, with an
accompanying code fix provider (AbstractNavigationProjectionCodeFixProvider) to convert identity projections to
explicit projections.
Enhancements
- Added FilterEntry validation logic for filter projection requirements
- Simplified IncludeAppender by removing redundant logic now handled by filter projections
- Added filtering test infrastructure with
FilterBaseEntity/FilterDerivedEntity/FilterParentEntity/FilterReferenceEntity and corresponding graph types
Docs
- Added docs/analyzers/GQLEF007.md documentation
- Updated docs/filters.md with filter projection guidance
34.1.4
34.0.1
22.0.0
21.3.0
As part of this release we had 14 commits which resulted in 1 issue being closed.
Feature
- #778 Where date and time