Да здравствует 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 живым

0 ответов

Другие вопросы по тегам