Understanding DbContext pooling
In the previous chapter, we learned how to register the DbContext
instance as a scoped service in the DI container using the AddDbContext()
extension method. By default, a new DbContext
instance is created for each request, which is generally not a problem since it is a lightweight object that does not consume many resources. However, in a high-throughput application, the cost of setting up various internal services and objects for each DbContext
instance can add up. To address this, EF Core provides a feature called DbContext pooling, which allows the DbContext
instance to be reused across multiple requests.
To enable DbContext
pooling, you can replace the AddDbContext()
method with the AddDbContextPool()
method. This resets the state of the DbContext
instance when it is disposed of, stores it in a pool, and reuses it when a new request comes in. By reducing the cost of setting up the DbContext
instance, DbContext
pooling can significantly improve...