几个小时后万岁DbContext导致“ObjectContext实例已被处理......”

时间:2014-09-18 00:00:06

标签: wpf entity-framework dbcontext

我读过有关此类错误消息的问题已在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保持活着的方法

0 个答案:

没有答案