[6.0.2] Detach join entity when removing added relationship #26892
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 #26779
Description
When a many-to-many relationship is created and then removed, the state of the join entity that represents this relationship is incorrectly changed to
Deleted
. This results in an attempt to delete a row in the database that does not exist.Customer impact
Exception thrown when calling SaveChanges after adding and then removing a new many-to-many relationships.
This is a fairly fundamental error. What is not clear is why this was not reported before now, since the behavior existed in 5.0. It's possible people didn't realize it was a bug and having been manually detaching the join entity to make this scenario work.
How found
Customer reported on 6.0.
Regression
This is not a regression; the same behavior existing in 5.0. However, we believe that it is a fundamental behavior that should work, hence we believe we should patch in 6.0.
Testing
Added a range of new tests for this and related scenarios with different types of many-to-many relationships.
Risk
Low; the change is very simple, and is also quirked.