3

Web プロジェクトでは、DbContext を実際の DB コンテキストにバインドするときに RequestScope を使用します。しかし、WPF では、シングルトンまたは一時的なスコープを使用する必要がありますか? どちらを選択するかは本当に重要ですか?

4

2 に答える 2

3

アプリの複雑さに応じて、PerThreadScope. そうすれば、アプリのメイン スレッド用と各バックグラウンド スレッド用に 1 つずつ作成できます。それらは ninject によって追跡され、適切に破棄されます。アプリがより複雑になった場合は、RootView ごとに db コンテキストに切り替えるNamedScopeか、スコープを設定することができます。InCallScope

于 2013-01-07T05:29:28.880 に答える
0

Web アプリで RequestScope を使用する理由は、DbContext インスタンスをメモリに残したくないからです。

同じことが WPF やデスクトップ アプリにも当てはまりますが、データ アクセス コンポーネント (DbContext を使用するもの) の使用方法によっては、より複雑になる可能性があります。ほとんどの場合、画面が閉じられて消えるときに破棄される Transient スコープで設定できます。たとえば、ビューモデルで直接使用している場合、ビューモデルが消えると (別のビューが表示されます)、 ViewModel と DbContext の両方を Transient に設定し、ViewModel を破棄すると、DbContext も適切に破棄されます。

于 2013-01-07T03:46:41.897 に答える