Попытка начать использовать EFCore вместо EF 6, и мне трудно понять, как происходит жизненный цикл базы данных при использовании внедрения зависимостей для моего контекста БД.
В EF 6 я знаком с ручным открытием моего соединения и использованием его метода dispose с помощью операторов. Мне кажется довольно ясным, как жизненный цикл БД реагирует таким образом.
(using var db = new DatabaseContext())
{}
С EFCore, я понимаю, рекомендуемый способ - добавить класс контекста db в качестве службы при запуске
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
Затем получить контекст в контроллере с помощью внедрения зависимостей
private readonly ApplicationDbContext context;
public HomeController(ApplicationDbContext context, ILogger<HomeController> logger)
{
this.context = context;
}
Таким образом, когда начинается пул соединений? Когда мое соединение открыто и какова продолжительность жизни этого соединения? Открывает ли оно соединение при запуске приложения и закрывается при остановке? Открывается ли он при нажатии метода контроллера (если используется mvc)? При активном запросе?
Я нашел краткую ссылку на подсказку о том, что происходит за кулисами в документации SF Core 2.0, когда он представил пул DBContext.
"Шаблон basi c для использование EF Core в приложении ASP. NET Core обычно включает в себя регистрацию пользовательского типа DbContext в системе внедрения зависимостей и последующее получение экземпляров этого типа через параметры конструктора в контроллерах. Это означает, что создается новый экземпляр DbContext для каждый запрос. "
https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.0
Означает ли это, что для запросов по умолчанию в мой контроллер контекст базы данных открывается в конвейере запросов независимо от того, использую ли я это или нет? Предполагая, что он закрыт при возврате запроса.
Может кто-нибудь помочь мне понять срок службы соединения с базой данных при использовании этого шаблона? Если это дублирующий вопрос, пожалуйста, помогите пометить и указать мне, где я могу прочитать подробно. Я потратил некоторое время на исследования, но кажется, что все статьи, которые я могу найти, просто затушевывают это, или я могу искать с неправильными ключевыми словами.