[release/10.0] Fix primitive/complex collection handling on subtypes#37488
Merged
roji merged 1 commit intodotnet:release/10.0from Jan 12, 2026
Merged
[release/10.0] Fix primitive/complex collection handling on subtypes#37488roji merged 1 commit intodotnet:release/10.0from
roji merged 1 commit intodotnet:release/10.0from
Conversation
There was a problem hiding this comment.
Pull request overview
This PR fixes a regression introduced in EF Core 10.0 where queries over primitive collections or complex types on inheritance subtypes fail to translate. The issue occurred when the JSON complex type work changed navigation expansion logic without properly handling inheritance scenarios.
Changes:
- Added quirk flag
UseOldBehavior37478to enable opt-out behavior for backwards compatibility - Fixed type resolution in
NavigationExpandingExpressionVisitorto check inheritance hierarchy when accessing primitive collections and complex properties on derived types - Added comprehensive test coverage across multiple providers (base specification test, SQL Server, and Cosmos)
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| src/EFCore/Query/Internal/NavigationExpandingExpressionVisitor.ExpressionVisitors.cs | Added quirk flag and type resolution logic to properly handle inheritance when expanding primitive collections and complex properties |
| test/EFCore.Specification.Tests/Query/NonSharedPrimitiveCollectionsQueryTestBase.cs | Added base test case with inheritance scenario to verify subtype primitive collection access works |
| test/EFCore.SqlServer.FunctionalTests/Query/NonSharedPrimitiveCollectionsQuerySqlServerTest.cs | Added SQL Server-specific test override with SQL assertion for OPENJSON query |
| test/EFCore.Cosmos.FunctionalTests/Query/NonSharedPrimitiveCollectionsQueryCosmosTest.cs | Added Cosmos-specific test override with assertion for ARRAY_LENGTH query |
test/EFCore.Specification.Tests/Query/NonSharedPrimitiveCollectionsQueryTestBase.cs
Show resolved
Hide resolved
artl93
approved these changes
Jan 12, 2026
Member
artl93
left a comment
There was a problem hiding this comment.
Customer reported regression against the latest version with targeted, quirked fix. Approved for me.
AndriySvyryd
approved these changes
Jan 12, 2026
This was referenced Jan 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #37478
Simplified/targeted backport of: #37482
Description
As part of the JSON complex type work in 10.0, the navigation expansion logic for binding properties/navigations changed; unfortunately, a bug slipped in where we no longer properly take into account inheritance subtypes.
Customer impact
Queries which perform subqueries over primitive collection properties on an inheritance subtype in EF queries now fail:
This isn't an uncommon scenario, and there's unfortunately no good workaround.
How found
Customer reported on EF 10.0.0.
Regression
Yes.
Testing
Test added.
Risk
Very low. The fix is very targeted and in code modified in 10.0, quirk added.