Condividi tramite


Argomenti di test avanzati

Questa pagina descrive alcuni argomenti meno comuni relativi al test di applicazioni EF Core.

EnableServiceProviderCaching

EF Core usa un provider di servizi interno per gestire i servizi necessari per le operazioni di database, tra cui compilazione di query, compilazione di modelli e altre funzionalità di base. Per impostazione predefinita, EF Core memorizza nella cache questi provider di servizi interni per migliorare le prestazioni quando più DbContext istanze condividono la stessa configurazione.

Il EnableServiceProviderCaching metodo controlla se EF Core memorizza nella cache il provider di servizi interno:

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

Comportamento predefinito: la memorizzazione nella cache del provider di servizi è abilitata per impostazione predefinita (true). Ciò significa:

  • I provider di servizi vengono memorizzati nella cache e riutilizzati tra DbContext istanze con la stessa configurazione
  • Prestazioni migliori per le applicazioni che creano molte DbContext istanze
  • Riduzione del sovraccarico di memoria quando più contesti condividono configurazioni

Quando disabilitare la memorizzazione nella cache: la disabilitazione della memorizzazione nella cache del provider di servizi rallenterà DbContext notevolmente la creazione e nella maggior parte dei casi è consigliabile usare il comportamento predefinito. Se si verificano problemi con i servizi interni non corretti usati, questi devono essere risolti in modo diverso. Tuttavia, se si sostituiscono i servizi a scopo di test, è possibile disabilitare la memorizzazione nella cache del provider di servizi (false) per assicurarsi che ogni test ottenga un nuovo provider di servizi.