Linq2Sqlを利用するいくつかのコードを継承しましたが、データコンテキストのインスタンスがプライベートとして定義されたクラスメンバーに格納されていることがわかりました。このクラスは、クラスが作成されるとWebアプリケーション内で使用されるため、データコンテキストのインスタンスが作成され、静的メンバーに割り当てられます。その結果、データコンテキストのインスタンスが作成され、そのクラスのすべてのインスタンスで使用されるようになります。 (したがって、すべてのユーザーにわたって、それ自体が潜在的な問題です)だけでなく、データコンテキストのインスタンスは、Webアプリケーションの期間中(静的クラスメンバーに保持されているため)存在します。
最初に行われた悪い設計上の決定を無視して、ここでの私の質問は、データコンテキストに読み込まれたデータはどうなるのかということです。NHibernateのセッションは、読み取り/作成するオブジェクトへの参照を保持しているため、変更などを追跡できます。セッションはゆっくりと成長し、暗黙的に指示しない限り、クリアされることはありません。Linq2Sqlは同様のことをしますか?したがって、Webアプリケーションが(リサイクルせずに)永遠に存続した場合、このlinq2Sqlコンテキストは、マシンがメモリを使い果たすか、着信要求を満たすことによってデータベース全体を読み取るまで、ゆっくりと成長しますか?コンテキストは通常、それ自体から「期限切れ」になるアイテムを削除するキャッシュのようなものではないこと、またはメモリ制限に達したときに最も使用されていないアイテムの削除を開始することは私の理解です。それが何をするのか、私はしません データコンテキストがそれを実行できると思いますか?誰かがこれを経験したことがありますか。私の理解を確認するか、これを防ぐために長期的なデータコンテキストで何ができるかを示すためのリファレンスを提供してください。