Инъекция зависимости - это то, что делают многие люди. Вы пишете класс, который имеет зависимость от DbContext (т.е. это аргумент конструктора или свойство, оформленное как зависимость), и контейнер IoC (Inversion of Control) предоставит вам его экземпляр при создании класса. Каждый контейнер IoC, с которым я работал, имеет способ регистрации одного экземпляра (вместо создания нового экземпляра каждый раз).
Популярные контейнеры IoC:
- StructureMap
- Unity
- Ninject
Есть и другие, но я вижу, что они используются чаще всего.