Я лично с уважением не согласен с предыдущими ответами.
Я разработал несколько веб-сайтов (один с 7 миллионами просмотров страниц в месяц), и у меня никогда не было ни одной проблемы с моими статическими репозиториями.
МойРеализация статического репозитория довольно проста и содержит только объекты поставщиков в качестве свойств.Один репозиторий может содержать столько поставщиков, сколько вам нужно.
Затем поставщики отвечают за управление подключением к базе данных и транзакциями.Используя TransactionScope, потребитель может управлять транзакциями или передавать их поставщикам.
Все поставщики разрабатываются с использованием шаблона singleton.
Таким образом, я могу получить свои объекты, просто вызвав это:
var myObj = MyRepository.MyProvider.GetMyObject(id);
В любое время в каждом веб-пуле моего приложения есть только один репозиторий и один поставщик каждого типа.В зависимости от того, сколько пользователей у вас одновременно на вашем сайте, вы можете установить более одного веб-пула (но в большинстве случаев его достаточно).
Я не вижу, где находится мой репозиторий /Поставщики, потребители связаны с моим хранилищем.Фактически, реализации моих провайдеров полностью абстрагированы от них.Конечно, все провайдеры, возвращаемые моим репозиторием, являются интерфейсами, и я мог легко изменить их реализацию в любое время и вставить свою новую dll на веб-сервер.Если я хочу создать совершенно нового провайдера с тем же интерфейсом, мне нужно только изменить его в ОДНОМ месте: в моем репозитории.
Таким образом, нет необходимости добавлять внедрение зависимостей или создавать свой собственный ControllerFactory (для MVC-проектов).
И у вас все еще есть преимущество чистого кода в ваших контроллерах.Вы также сохраняете большое количество создания и уничтожения репозитория каждый раз, когда запрашивается страница (которая обычно использует отражение в вашей ControllerFactory).
Если вы ищете масштабируемое решение (если оно вам действительно нужно, которое в большинстве случаеввремя на самом деле не проблема), мой способ разработки репозиториев никогда не должен быть проблемой по сравнению с внедрением зависимостей.