Megosztás:


Speciális tesztelési témakörök

Ez az oldal ismertette az EF Core-alkalmazások tesztelésével kapcsolatos kevésbé gyakori témaköröket.

EnableServiceProviderCaching

Az EF Core egy belső szolgáltatót használ az adatbázis-műveletekhez szükséges szolgáltatások kezelésére, beleértve a lekérdezések fordítását, a modellkészítést és az egyéb alapvető funkciókat. Az EF Core alapértelmezés szerint gyorsítótárazza ezeket a belső szolgáltatókat a teljesítmény javítása érdekében, ha több DbContext példány is ugyanazt a konfigurációt használja.

A EnableServiceProviderCaching metódus azt szabályozza, hogy az EF Core gyorsítótárazza-e a belső szolgáltatót:

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

Alapértelmezett viselkedés: A szolgáltató gyorsítótárazása alapértelmezés szerint engedélyezve van (true). Ez a következőt jelenti:

  • A szolgáltatók gyorsítótárazva vannak és az azonos konfigurációjú DbContext példányok esetében újra felhasználhatók.
  • Jobb teljesítmény a sok DbContext példányt létrehozó alkalmazások esetében
  • Kisebb memóriaterhelés, ha több környezet osztozik a konfigurációkon

Mikor tiltsa le a gyorsítótárazást: A szolgáltatói gyorsítótárazás letiltása jelentősen lelassítja DbContext a létrehozást, és az esetek túlnyomó többségében az alapértelmezett viselkedés javasolt. Ha hibás belső szolgáltatásokkal kapcsolatos problémák merülnek fel, akkor ezeket más módon kell kijavítani. Ha azonban tesztelési célokra lecseréli a szolgáltatásokat, letilthatja a szolgáltató gyorsítótárazását (false) annak biztosítása érdekében, hogy minden teszt friss szolgáltatót kapjon.