Nano Hash - криптовалюты, майнинг, программирование

Время жизни репозитория внедрения зависимостей

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

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

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

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

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

Я пропустил что-то, связанное с тем, как работает DI?


  • В основном это звучит как неправильная конфигурация жизней, потому что я, конечно, понимаю, почему вы спрашиваете. Однако теоретически можно заставить его работать с помощью этого трюка: class-methods/4650050#4650050" title="внедрение зависимостей, новый экземпляр требуется в нескольких методах классов"> stackoverflow.com/questions/4648318/ 09.03.2012

Ответы:


1

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

09.03.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..