3

私の最新のプロジェクトでは、アプリケーション全体でコンテキストを 1 つだけ持つ方が簡単かもしれないと考えました。複数のクエリを必要とするページを読み込むと、空の結果が返される場合があることに気付きました。

たとえば、予定のリストと営業担当者のリストがあります。彼らはうまく現れます。それから F5 を押します。すべてがうまくいくこともありますが、予約および/または担当者リストが空になることもあります。

これはシングル コンテキスト アプリの既知の問題ですか? そのデザインはダメですか?

4

1 に答える 1

6

これはシングル コンテキスト アプリの既知の問題ですか? そのデザインはダメですか?

はい、単純な Web アプリケーションでは違いがわからないかもしれませんが、多くのユーザーがいて高い同時実行が必要な複雑な Web アプリケーションでは、次のような問題が発生します。

DbContext内部キャッシュを使用して Unit Of Work パターンを内部で実装しているため、グローバル DbContext を長時間保持すると、メモリ リークが発生し、データベースから大量のデータがプルされ、しばらくの間メモリ (内部キャッシュ) に保持されます。

Unit Of Work はビジネス トランザクションであり、Unit Of Work の内部キャッシュはこのトランザクション専用であり、グローバル用ではありません。トランザクションが完了した場合、Unit Of Work はできるだけ早く破棄する必要があります。

Web アプリケーションでの DbContext のベスト プラクティスは、リクエストごとに DbContext の有効期間を維持することです。IoC コンテナーを使用する場合、ほとんどの IoC コンテナーは要求ごとのライフタイム管理をサポートします。

于 2012-09-11T03:45:08.433 に答える