Я использую AutoFac в качестве IoC для ввода ObjectContext внутри контроллеров, которым он нужен.
ObjectContext зарегистрирован в AutoFac с использованием InstancePerLifetimeScope
, и я создал собственную фабрику контроллеров, которая разрешает правильныйКонтроллер из DI-контейнера, и, следовательно, получает вставленный ObjectContext.
Когда я запрашиваю страницу, все выглядит хорошо, и данные выбираются из базы данных, используя EF4, как и ожидалось.
Мне интересно, что после того, как я запустил веб-приложение, и я собираюсь удалить или добавить некоторые записи из базы данных вручную, эти изменения не отражаются в моем веб-приложении.У меня было 10 записей в базе данных, удалено 5, но все равно все 10 записей извлекаются EF.Я думал, что когда я регистрировал ObjectContext в AutoFac с InstancePerLifetimeScope
, это означало, что новый ObjectContext создавался для каждого веб-запроса.
Теперь кажется, что один и тот же ObjectContext используется всегда, если я не понял что-то о том, как EF кэшируется.
Помимо того, что я не вижу изменений, вносимых в базу данных другими приложениями, я предполагаю, что это вызовет проблемы в работе, когда все пользователи, которые подключаются к сайту, используют один и тот же ObjectContext, поскольку ObjectContext не является поточно-ориентированным.
Кто-нибудь знает, где я здесь ошибся?