[release/7.0] Fix to #30358 - Duplicate table alias in generated select query (An item with the same key has already been added) #30486
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.
Port of #30484
Fixes #30358
Description
Queries that join tables starting with the same letter that also have owned navigations mapped to a different table, also starting with the same letter generate incorrect aliases resulting in exception when trying to execute those queries. Problem was that the metadata describing our sql expressions and the actual expression were out of sync, so there might be other cases fixed by this as well.
Customer impact
Affected queries throw during translation.
How found
Customer report on 7.0
Regression
Yes. This scenario worked correctly in previous version of EF Core.
Testing
Added regression tests for affected scenario.
Risk
Low: Fix is on a relatively common path but is very simple and safe. Worst case we will generate query with different aliases (e.g. e1 rather than e) but it shouldn't have a negative functional impact. Added quirk to revert to old behavior if necessary.