[release/9.0] Avoid infinite recursion on identifying shadow FKs #34892
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 #34875
Description
When a user configures a foreign key property without specifying the type or whether it's required EF creates a shadow nullable property by default.
EF throws a custom exception instead of a StackOverflow because the convention implementation unwraps the recursive calls.
Customer impact
For affected models, an exception is thrown whenever the context is used. There are several workarounds for the reported scenario, but identifying shadow FKs are pretty common, so this can potentially affect a significant portion of users.
How found
Customer reported on 8.0.10
Regression
Yes, from 8.0.8. This issue is old, but it was made easier to hit by #34388
Testing
Test added.
Risk
Low.