我读过有关此类错误消息的问题已在SO中提出了几十次,
"The ObjectContext instance has been disposed and can no longer be used for operations that require a connection"
然而,我的情景可能没有被涵盖。
我正在维护一个使用EF 6,代码优先和延迟加载的旧版WPF应用程序。每个窗口都有自己的ViewModel,它包含在构造函数中创建的长实时DbContext对象。所以基本上上下文将缓冲所有更改,直到用户按下“保存”按钮。每个窗口都包含一个主列表和详细信息,与DB中的主/详细信息结构相关,详细信息通过延迟加载加载。
ViewModel通过以下XAML代码连接到View:
<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模式关闭窗口时才应该处理它。我怀疑在DbContext中的ObjectContext在一些空闲时间后被释放。
虽然我理解DbContext的常见用法是在using子句中包含以确保短暂,但是,现在我很难改为传统设计。我只是想知道是否存在使DbContext / ObjectContext保持活着的方法