Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На этой странице описаны некоторые менее распространенные разделы, связанные с тестированием приложений EF Core.
Включить кэширование поставщика услуг
EF Core использует внутренний поставщик услуг для управления службами, необходимыми для операций базы данных, включая компиляцию запросов, сборку моделей и другие основные функциональные возможности. По умолчанию EF Core кэширует эти внутренние поставщики услуг, чтобы повысить производительность, если несколько DbContext экземпляров используют одну и ту же конфигурацию.
Метод EnableServiceProviderCaching определяет, кэширует ли EF Core внутренний поставщик услуг:
public class ApplicationDbContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder
.EnableServiceProviderCaching(false)
.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=Test");
}
}
Поведение по умолчанию: кэширование поставщика услуг включено по умолчанию (true). Это означает:
- Поставщики служб кэшируются и повторно используются в
DbContextэкземплярах с одинаковой конфигурацией. - Улучшена производительность приложений, создающих множество
DbContextэкземпляров - Снижение затрат на память при совместном использовании конфигураций несколькими контекстами
Когда отключать кэширование: отключение кэширования поставщика услуг значительно замедлит DbContext создание, и в подавляющем большинстве случаев рекомендуется использовать поведение по умолчанию. Если возникли проблемы с неправильными внутренними службами, они должны быть исправлены другим способом. Но если вы заменяете службы для тестирования, вы можете отключить кэширование поставщика услуг (false), чтобы убедиться, что каждый тест получает новый поставщик услуг.