SQL Server Interview Question #293

Why should DbContext usually be scoped per web request?

ASP.NET Core, EF Core & SQL Server Real-World Scenarios Senior Advanced

Detailed Explanation

In ASP.NET Core, AddDbContext normally registers DbContext with scoped lifetime, which aligns well with one HTTP request and a logical unit of work.

DbContext is not thread-safe and should not be shared concurrently across requests or long-lived singleton services. A very long-lived context can accumulate tracked entities and stale state.

Background services or parallel operations should create appropriate independent scopes or contexts rather than sharing one request context.