【发布时间】:2017-02-25 00:41:54
【问题描述】:
我正在使用创建实体框架代码优先数据库的 WPF 应用程序。 我在尝试查找如何使用页面导航组织我的 DbContext 时遇到问题。本质上,我在获得有关如何使我的 Db 保持最新的建议,同时仍然拥有下面的菜单选项。 从技术上讲,我会尽可能地遵循 MVVM,但在时间压力下,我已经削减了一些角落,我愿意根据需要削减更多。
WPF MVVM 布局
MainWindow 包含一个堆栈面板,其中包含用于覆盖页面导航的按钮。 这创建了一个主要用于导航的侧边栏。 主窗口还包含一个显示页面的框架,并使用 NavigationService 来控制显示的内容。
每个页面都有自己的 ViewModel,其基类实例化一个新的 DbContext。
问题 当菜单栏用于导航时,它会创建一个新的页面实例。 前一个页面在卸载时会保存其 DbContext,但这是在菜单栏已经实例化新页面并因此实例化 DbContext 之后发生的。 所以基本上新页面是用旧数据打开的,然后前一个页面保存它的 dbcontext。
想法?
- 我似乎找不到确保菜单栏导航的方法 强制保存已打开的任何现有 DbContext。
- 一种糟糕的做法是在所有页面中而不是在框架级别的页面之外创建菜单栏的副本;但是这个 似乎不对。
- 请记住,可以从其他页面和菜单栏导航到页面。有没有一种方法可以让每个页面在创建时都有一些指向父窗口按钮的链接。
- 某种事件订阅?这样当一个按钮 单击它可以强制保存当前使用的 DbContext。
【问题讨论】:
标签: c# wpf entity-framework mvvm dbcontext