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 #27752
This allows resolving additional constructor parameters from the root service provider when creating a new DbContext in DbContextPool. The main intention here is to allow singleton services, which should generally be safe, but there are some risks with this approach:
I'm not sure if these risks are unique to this situation, or are always there in some form when using DI. The documentation for pooling is already quite good at highlighting some of this. On the other hand, the current pattern - where you're forced to manually set scoped dependencies in a scoped factory after you get the DbContext from the pool - isn't really that arduous and perhaps makes the developer more conscious of all this. Therefore I really wouldn't mind if this PR is rejected, but it was fun & a learning experience!