Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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
DbContextinstâncias com a mesma configuração - Melhor desempenho para aplicações que criam muitas
DbContextinstâ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.