Да здравствует DbContext через несколько часов, вызывая "экземпляр ObjectContext был удален..."
Я прочитал вопросы, касающиеся того, чтобы такое сообщение об ошибке поднималось несколько десятков раз в SO,
"The ObjectContext instance has been disposed and can no longer be used for operations that require a connection"
однако мой сценарий, возможно, не был рассмотрен.
Я поддерживаю устаревшее приложение WPF с EF 6, сначала с кодом, и с отложенной загрузкой. Каждое окно имеет свой собственный ViewModel, который содержит долгоживущий объект DbContext, созданный в конструкторе. Таким образом, в основном контекст будет сохранять все изменения, пока пользователи не нажмут кнопку "Сохранить". Каждое окно содержит основной список и детали, относящиеся к структуре мастер / детали в БД, а детали загружаются посредством отложенной загрузки.
ViewModel подключается к View через такие коды XAML:
<UserControl.DataContext>
<vm:CustomersViewModel></vm:CustomersViewModel>
</UserControl.DataContext>
Программа в основном работает хорошо, однако, после нескольких часов простоя, когда пользователь щелкает по основному списку, чтобы перейти к другой записи, эта ошибка всплывает.
"The ObjectContext instance has been disposed and can no longer be used for operations that require a connection"
DbContext, по-видимому, не утилизируется, поскольку он был создан в ViewModel окон, и его следует удалять только тогда, когда окно закрыто с помощью шаблона IDisposale. Я подозреваю, что ObjectContext внутри DbContext удаляется после некоторого простоя.
Хотя я понимаю, что обычное использование DbContext заключается в том, чтобы содержаться в предложении using, чтобы обеспечить недолговечность, однако сейчас мне будет сложно перейти на устаревший дизайн. Мне просто интересно, существуют ли способы сохранить DbContext / ObjectContext живым