[3.1.1] Warn on redundant AddEntityFramework* calls #19154
Merged
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 #19053
Description
EF provides AddEntityFramework* methods to add EF-required services to a service collection, but this call is usually not needed when AddDbContext is called and is completely unnecessary if UseInternalProvider isn't called for the DbContext options.
This change adds a warning that is logged when this case is detected.
Customer Impact
By calling AddEntityFramework* on the application service collection the customer can inadvertently make other frameworks use EF services like
IMemoryCache
which can lead to hard-to-diagnose issues at runtime.How found
Customer-reported
Test coverage
We had tests for this scenario, but didn't consider it to be common enough to warrant a warning.
Regression?
Yes, in 3.0.0 EF started registering
IMemoryCache
with a hard limit.Risk
Low, no behavior change