Partilhar via


Tópicos avançados para testes

Esta página descrevia alguns tópicos menos comuns relacionados com o teste de aplicações EF Core.

EnableServiceProviderCaching

O EF Core utiliza um fornecedor de serviços interno para gerir os serviços necessários para operações de base de dados, incluindo compilação de consultas, construção de modelos e outras funcionalidades essenciais. Por defeito, o EF Core armazena em cache estes fornecedores de serviços internos para melhorar o desempenho quando múltiplas DbContext instâncias partilham a mesma configuração.

O EnableServiceProviderCaching método controla se o EF Core armazena em cache o fornecedor 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: A cache do fornecedor de serviço está ativada por defeito (true). Isto significa:

  • Os fornecedores de serviços são armazenados em cache e reutilizados em várias DbContext instâncias com a mesma configuração
  • Melhor desempenho para aplicações que criam muitas DbContext instâncias
  • Menor sobrecarga de memória quando múltiplos contextos partilham configurações

Quando desativar a cache: Desativar a cache do fornecedor de serviços vai atrasar 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, então devem ser resolvidos de outra forma. Mas se estiver a substituir serviços para fins de teste, pode desativar a cache do fornecedor de serviço (false) para garantir que cada teste recebe um novo fornecedor.