How Many DBContext's Should I have

asp.net, entity-framework

Solution

I went through this same process recently and found some great resources on the subject. Here are a couple that were very helpful:

- Shrink EF Models with DDD Bound Contexts.

- How to decide on a lifetime for your ObjectContext.

I was building a Desktop app, and I ended up using multiple contexts so that I could keep the lifetime tied to the module rather than the application. This has worked out very well for me, and I like that my `DbContext` isn't swamped with `DbSets` and is limited to the ones that are relevant for the current module.

In an ASP.NET MVC app, it is different since the `DbContext` will only live as long as the request, and in those cases, I usually use a single `DbContext` to simplify things unless the database is very large. With a large database, I would probably break it apart into multiple `DbContexts` just to limit the overhead and the clutter, and keep things compartmentalized.

Problem

Using Entity I currently have dbcontext that has every table in it. I'm wondering if that's what everyone does, or do you have a context per module for example. To me the dbcontext was a connection to map the models to a database, and since there is only one database, I only need one. Before I get too far along I want to see if that's appropriate. So 1 db context per database or many?

Original source