Delen via


Geavanceerde testonderwerpen

Op deze pagina worden enkele minder voorkomende onderwerpen beschreven met betrekking tot het testen van EF Core-toepassingen.

EnableServiceProviderCaching

EF Core maakt gebruik van een interne serviceprovider voor het beheren van services die vereist zijn voor databasebewerkingen, waaronder het compileren van query's, het bouwen van modellen en andere kernfunctionaliteit. Ef Core slaat deze interne serviceproviders standaard in de cache op om de prestaties te verbeteren wanneer meerdere DbContext exemplaren dezelfde configuratie delen.

De EnableServiceProviderCaching-methode bepaalt of EF Core de interne serviceprovider in de cache opneemt.

public class ApplicationDbContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder
            .EnableServiceProviderCaching(false)
            .UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=Test");
    }
}

Standaardgedrag: caching van serviceproviders is standaard ingeschakeld (true). Dit betekent:

  • Serviceproviders worden in de cache opgeslagen en opnieuw gebruikt in DbContext meerdere exemplaren met dezelfde configuratie
  • Betere prestaties voor toepassingen die veel DbContext exemplaren maken
  • Lagere geheugenoverhead wanneer meerdere contexten configuraties delen

Wanneer u caching uitschakelt: het uitschakelen van caching van serviceproviders vertraagt het maken aanzienlijk DbContext en in het overgrote deel van de gevallen wordt het standaardgedrag aanbevolen. Als er problemen zijn met onjuiste interne services die worden gebruikt, moeten ze op een andere manier worden opgelost. Maar als u services voor testdoeleinden vervangt, kunt u caching van serviceproviders uitschakelen (false) om ervoor te zorgen dat elke test een nieuwe serviceprovider krijgt.