3

在 Web 项目中,将 DbContext 绑定到我的真实数据库上下文时,我会使用 RequestScope。但是在 WPF 中,我应该选择单例还是跨界范围?我选择哪一个真的很重要吗?

4

2 回答 2

3

根据您的应用程序的复杂性,我将从PerThreadScope. 这样,您就有一个用于应用程序主线程和每个后台线程。它们由 ninject 跟踪并妥善处理。如果您的应用程序变得更复杂,您可以切换到NamedScope每个InCallScopeRootView 的数据库上下文。

于 2013-01-07T05:29:28.880 回答
0

在 Web 应用程序中使用 RequestScope 的原因是您不希望 DbContext 实例留在内存中。

WPF 或桌面应用程序也是如此,但它可能更棘手,具体取决于您如何使用数据访问组件(使用 DbContext 的东西)。大多数情况下,它可以设置在瞬态范围上,当您的屏幕关闭并消失时,它会被设置,例如,如果您直接在视图模型中使用它,一旦视图模型消失(正在显示另一个视图),将 ViewModel 和 DbContext 都设置为 Transient 并处置 ViewModel 将确保您的 DbContext 也被正确处置。

于 2013-01-07T03:46:41.897 回答