私はサーバーとクライアントを持っています。 Serverは、WCFサービスをホストするWebアプリケーションです。サーバーは、最初のアクセス時に初期化され、決して(私のコードで)破棄されないスタティックシングルトンを介してLinq2SQL DataContextを使用します。クライアントはWCF経由でサーバーへの呼び出しを行い、データベースからいくつかの情報を照会して更新を行います。複数のクライアントが同時にサーバーにアクセスするまでは、すべて正常に動作します。それが起こると、サーバーは別の例外をスローします。LINQ To SQLは、リーダーが閉じているときにReadを呼び出す無効な試みを示します。
リーダーが閉じているときに読み込みを無効にしようとしました。
このコマンドに関連付けられている開いているDataReaderが既にあります。このDataReaderは、最初に閉じる必要があります。
私が知る限り、私は静的なシングルトンを使用していて、何らかの形でクライアント接続を共有していますが、主な目的はデータベースへの接続量を最小限に抑えることでした。
どうしてですか?
サポートコメントの一種として、DataContextは「作業ユニット」に使用されることを意図しています。 http://stackoverflow.com/questions/4735498/singleton-pattern-for-data-context – Peter
を参照してください。@Patricker Ermはい、私が作成していたポイントのようなものでした。 –
スレッドごとに単一のdatacontextを使用することは、各作業単位ごとに単一のdatacontextを使用することとは大きく異なります。差別化が行われたことを確認しようとしています。 – Peter