Compartilhar via


Tópicos de teste avançados

Esta página descreveu alguns tópicos menos comuns relacionados ao teste de aplicativos EF Core.

EnableServiceProviderCaching

O EF Core usa um provedor de serviços interno para gerenciar os serviços necessários para operações de banco de dados, incluindo compilação de consulta, criação de modelos e outras funcionalidades principais. Por padrão, o EF Core armazena esses provedores de serviços internos em cache para melhorar o desempenho quando várias DbContext instâncias compartilham a mesma configuração.

O EnableServiceProviderCaching método controla se o EF Core armazena em cache o provedor de serviços interno:

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

Comportamento padrão: o cache do provedor de serviços está habilitado por padrão (true). Isso significa:

  • Os provedores de serviços são armazenados em cache e reutilizados entre DbContext instâncias com a mesma configuração
  • Melhor desempenho para aplicativos que criam muitas DbContext instâncias
  • Reduzir a sobrecarga de memória quando vários contextos compartilham configurações

Quando desabilitar o cache: desabilitar o cache do provedor de serviços diminuirá DbContext muito a criação e, na grande maioria dos casos, o comportamento padrão é recomendado. Se houver problemas com serviços internos incorretos usados, eles deverão ser corrigidos de uma maneira diferente. No entanto, se você estiver substituindo serviços para fins de teste, poderá desabilitar o cache do provedor de serviços (false) para garantir que cada teste obtenha um novo provedor de serviços.