Обязательно ли вводить DbContext .InPerRequestScope в приложении ASP.NET? - PullRequest
3 голосов
/ 03 февраля 2012

Я использую контейнер Ninject IoC на моем портале ASP.NET MVC3. Всякий раз, когда я вводил Entity Framework DbContext в область действия PerThread, мои данные не соответствовали друг другу, изменения не отображались в течение некоторого времени после внесения изменений в объекты и т. Д.

После того как я переключил конфигурацию IoC для разрешения новой копии моего DbContext экземпляра для каждого запроса (PerRequestScope()), все проблемы исчезли.

Так обязательно ли использовать стратегию внедрения PerRequest в приложениях MVC3?

1 Ответ

8 голосов
/ 03 февраля 2012

Да, это обязательно.

Ваша проблема работает так:

  • Нить A загружает объект
  • Поток B изменяет эту сущность
  • Следующий запрос к потоку A использует кэшированную сущность из первого запроса, игнорируя изменения
...