Срок службы хранилища зависимостей - PullRequest
3 голосов
/ 09 марта 2012

Я не уверен, что конкретная реализация здесь важна, но для полноты я использую Autofac в качестве контейнера ввода зависимостей для нового приложения.

Все мои репозитории зависят от DbContext (единицы измеренияработы), которую я использовал библиотеку интеграции MVC3 для настройки как InstancePerHttpRequest(), чтобы единица работы распределялась между репозиториями для каждого запроса.

Я просмотрел некоторые приложения, использующие Autofac, и заметил,что они устанавливают время жизни своих репозиториев как SingleInstance() (singleton).Это правильно?

Причина, по которой я спрашиваю, состоит в том, что я могу понять, что нам на самом деле не нужно несколько классов репозитория, но если мы создаем один экземпляр репозитория, то это, безусловно, означает, что существует только одинссылка на DbContext.В моей реализации репозитория он обращается к DbContext как член класса, например _dbContext.Set<T> blah ....

Так что _dbContext должен иметь ссылку на некоторый объект в памяти.Как можно получить два отдельных запроса, иметь уникальный DbContext, но совместно использовать один и тот же репозиторий?

Я что-то упустил из-за того, как работает DI?

1 Ответ

2 голосов
/ 09 марта 2012

Вы ничего не пропустили - SingleInstance() почти наверняка является неправильным выбором для хранилищ в вашем сценарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...