Я не уверен, что здесь важна конкретная реализация, но для полноты картины я использую Autofac в качестве контейнера внедрения зависимостей для нового приложения.
Все мои репозитории зависят от DbContext
(единицы работы), которую я использовал с помощью библиотеки интеграции MVC3 для настройки как InstancePerHttpRequest()
, чтобы единица работы распределялась между репозиториями для каждого запроса.
Я просмотрел некоторые приложения, использующие Autofac, и заметил, что они устанавливают время жизни своих репозиториев как SingleInstance()
(singleton). Это правильно?
Причина, по которой я спрашиваю, заключается в том, что я могу понять, что нам на самом деле не нужно несколько классов репозитория, но если мы создаем один экземпляр репозитория, это, безусловно, означает, что есть только одна ссылка на DbContext
. В моей реализации репозитория он обращается к DbContext
как к члену класса, например. _dbContext.Set<T>
бла....
Так что _dbContext
должна иметь ссылку на какой-то объект в памяти. Как возможно, чтобы два отдельных запроса имели уникальный DbContext
, но совместно использовали один и тот же репозиторий?
Я пропустил что-то, связанное с тем, как работает DI?