Sdílet prostřednictvím


Pokročilá témata testování

Tato stránka popisuje některá méně běžná témata související s testováním aplikací EF Core.

EnableServiceProviderCaching

EF Core používá interního poskytovatele služeb ke správě služeb potřebných pro databázové operace, včetně kompilace dotazů, sestavení modelu a dalších základních funkcí. EF Core ve výchozím nastavení ukládá tyto interní poskytovatele služeb do mezipaměti, aby zlepšil výkon, když více DbContext instancí sdílí stejnou konfiguraci.

Metoda EnableServiceProviderCaching určuje, jestli EF Core ukládá interního poskytovatele služeb do mezipaměti:

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

Výchozí chování: Ukládání do mezipaměti poskytovatele služeb je ve výchozím nastavení povolené (true). To znamená:

  • Poskytovatelé služeb se ukládají do mezipaměti a znovu se používají napříč DbContext instancemi se stejnou konfigurací.
  • Lepší výkon aplikací, které vytvářejí mnoho DbContext instancí
  • Nižší režijní náklady na paměť, když několik kontextů sdílí konfigurace

Kdy zakázat ukládání do mezipaměti: Zakázání ukládání do mezipaměti poskytovatele služeb výrazně zpomalí DbContext vytváření a ve většině případů se doporučuje výchozí chování. Pokud dochází k problémům s nesprávnými interními službami, měly by se opravit jiným způsobem. Pokud ale nahrazujete služby pro účely testování, můžete zakázat ukládání do mezipaměti poskytovatele služeb (false), aby se zajistilo, že každý test získá nového poskytovatele služeb.