Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
DbContextistanze con la stessa configurazione - Prestazioni migliori per le applicazioni che creano molte
DbContextistanze - 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.