Udostępnij przez


Tematy dotyczące testowania zaawansowanego

Na tej stronie opisano mniej typowe tematy związane z testowaniem aplikacji EF Core.

EnableServiceProviderCaching

Program EF Core używa wewnętrznego dostawcy usług do zarządzania usługami wymaganymi do wykonywania operacji bazy danych, w tym kompilacji zapytań, kompilowania modelu i innych podstawowych funkcji. Domyślnie program EF Core buforuje tych wewnętrznych dostawców usług w celu zwiększenia wydajności, gdy wiele DbContext wystąpień współużytkuje tę samą konfigurację.

Metoda EnableServiceProviderCaching określa, czy program EF Core buforuje wewnętrznego dostawcę usług:

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

Domyślne zachowanie: buforowanie dostawcy usług jest domyślnie włączone (true). Oznacza to:

  • Dostawcy usług są przechowywani w pamięci podręcznej i ponownie używani w DbContext wystąpieniach z tą samą konfiguracją
  • Lepsza wydajność aplikacji tworzących wiele DbContext wystąpień
  • Mniejsze obciążenie pamięcią, gdy wiele kontekstów współużytkuje konfiguracje

Kiedy wyłączyć buforowanie: wyłączenie buforowania przez dostawcę usług znacznie spowolni DbContext proces tworzenia, dlatego w większości przypadków zalecane jest pozostawienie ustawień domyślnych. Jeśli występują problemy z nieprawidłowymi usługami wewnętrznymi, należy je rozwiązać w inny sposób. Jeśli jednak zastąpisz usługi na potrzeby testowania, możesz wyłączyć buforowanie dostawcy usług (false), aby upewnić się, że każdy test otrzyma nowego dostawcę usług.