В ASP.NET Core есть негласное правило DbContext живет ровно столько, сколько живет HTTP запрос. Эту модель Microsoft прямо закладывает в документацию, ведь DbContext задуман как короткоживущий объект под одну единицу работы одну бизнес операцию и один вызов SaveChanges.
Когда вы регистрируете контекст так:
builder.Services.AddDbContext<AppDb>(opt =>
opt.UseNpgsql(connString));
контейнер DI по умолчанию регистрирует AppDb с временем жизни Scoped. Это значит новый экземпляр создается на каждый запрос и шарится только между сервисами внутри этого запроса.
Если сделать DbContext Singleton вы получите общий экземпляр на все запросы сразу и это прямой путь к гонкам, утечкам и странным багам.
🤌 Бонусы для подписчиков:
— Скидка 40% на все курсы Академии
— Розыгрыш Apple MacBook
— Бесплатный тест на знание математики
🐸Библиотека шарписта
#sharp_view