Partager via


Rubriques sur les tests avancés

Cette page décrit quelques rubriques moins courantes liées au test des applications EF Core.

EnableServiceProviderCaching

EF Core utilise un fournisseur de services interne pour gérer les services requis pour les opérations de base de données, notamment la compilation des requêtes, la génération de modèles et d’autres fonctionnalités principales. Par défaut, EF Core met en cache ces fournisseurs de services internes pour améliorer les performances lorsque plusieurs DbContext instances partagent la même configuration.

La EnableServiceProviderCaching méthode contrôle si EF Core met en cache le fournisseur de services interne :

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

Comportement par défaut : la mise en cache du fournisseur de services est activée par défaut (true). En d’autres termes :

  • Les fournisseurs de services sont mis en cache et réutilisés entre les DbContext instances avec la même configuration
  • Meilleures performances pour les applications qui créent de nombreuses DbContext instances
  • Réduction de la surcharge de mémoire lorsque plusieurs contextes partagent des configurations

Quand désactiver la mise en cache : la désactivation de la mise en cache du fournisseur de services ralentit DbContext considérablement la création et, dans la grande majorité des cas, le comportement par défaut est recommandé. S’il existe des problèmes avec des services internes incorrects utilisés, ils doivent être résolus de manière différente. Toutefois, si vous remplacez les services à des fins de test, vous pouvez désactiver la mise en cache du fournisseur de services (false) pour vous assurer que chaque test obtient un nouveau fournisseur de services.