【发布时间】:2014-06-15 04:31:06
【问题描述】:
我目前正在使用 MVVM 方法编写一个相当小的桌面应用程序。它还利用 Entity Framework 6 进行数据库访问。现在,我的顶级 ViewModel 实例化了“较小”的 ViewModel,并将我正在使用的 DbContext 传递给它们。我使用的较小的 ViewModel 对应于每个位于单独 TabItem 中的 UserControl。但是,如果我在一个选项卡中更改数据库中的某些内容并在之后切换选项卡,那么从逻辑上讲,UI 跟不上,因为没有 OnPropertyChanged("SomeObservableCollection") 发生。
当 TabItem 变为活动状态时,我想过只是“刷新内部的所有内容”,但一方面,我不知道该怎么做(它基本上会为每个 UI 相关属性执行OnPropertyChanged(..),对吗? ),另一方面,它看起来既不优雅也不“正确”。
我该怎么办?并且使用一个全球性的DbContext 甚至是一种好的做法?我读到过短暂的DbContext 实例更好,但我也发现了关于桌面应用程序的相反说法......
您如何处理这种情况?实际上不可能那么罕见,不是吗?谢谢!
【问题讨论】:
-
我不确定你会在多大程度上发现它直接适用,但我写了an answer,这似乎与你的情况有关。
标签: c# wpf entity-framework mvvm