我应该使用哪个范围在WPF应用程序中将DbContext与Ninject绑定

时间:2013-01-07 01:43:22

标签: wpf ninject entity-framework-5

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

2 个答案:

答案 0 :(得分:3)

根据应用的复杂程度,我会从PerThreadScope开始。这样你就有一个用于app主线程和每个后台线程。它们由ninject跟踪并妥善处理。如果您的应用程序变得更复杂,您可以切换到NamedScopeInCallScope,从而根据RootView确定db上下文的范围。

答案 1 :(得分:0)

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

与WPF或桌面应用程序相同,但它可能更棘手,具体取决于您使用数据访问组件的方式(使用DbContext的方式)。大多数情况下,它可以设置在瞬态范围内,当您的屏幕关闭并消失时,该范围就会被放置。如果您在视图模型中直接使用它,一旦视图模型消失(显示另一个视图),将ViewModel和DbContext设置为Transient并处理ViewModel将确保您的DbContext也正确处理。 / p>