2009-02-27 12 views
1

1)私はあなたの近くにSqlConnectionのインスタンスの後、あなたはまだ再開く同じ接続することができることに気づい:再オープンSqlConnectionのインスタンス

A)あなたは何が舞台裏で起こっている私に言うことができますか?つまり、ファイルストリームオブジェクトを閉じた後、再び開くことはできませんが、新しいオブジェクトを作成する必要があります。なぜSqlConnectionオブジェクトと同じではないのですか?

b)プーリングが有効な場合、接続オブジェクトが接続プールに返され、後で再利用できると仮定します。

しかし、接続を再オープンした後、最初に閉じた前と同じSqlconnectionインスタンスが得られることをどのように知っていますか?これは、接続プールに複数の接続がある場合でも、これらのSqlConnectionオブジェクトは元のSqlConnectionオブジェクトとは異なる状態になる可能性があります(「別の状態」では、 "元の"接続オブジェクトで)?

c)プーリングが有効になっていない場合はどうなりますか? .NetはSqlConnectionオブジェクトを "ゼロから"再作成しますか? また、SqlConnectionオブジェクトを最初に終了する前に、いくつかのプロパティの値が変更されている可能性がありますか?コンパイラはSqlConnectionオブジェクトをクローズする前の状態を再現する方法を知っていますか?

ありがとう

答えて

3

SqlConnectionは、最初は直接 "実際の"接続ではありません。接続プールはそれを見ます。私は確かに分かりませんが、SqlConnectionを再度開くと、別の "物理的な"ネットワーク接続に終わる可能性があることに気づくことはありません。

あなたは再開許可FileStreamを書くことができ - それは、ファイルの名前だけでなく、基になるハンドルのトラックを守れば、それはちょうどそれを再開しようとすることができ、その他すべての可能な故障とそれだけではありません非常に便利。 (私はSqlConnectionを個人的に有用なものとして再オープンできるとは言いません)

「同じSqlConnectionオブジェクト」を取得するという意味では、 SqlConnectionオブジェクトを参照する場合は、の既存のオブジェクトでメソッドを呼び出すだけです。その参照は変更されません - オブジェクトの状態(または、それが参照する他のものの状態)。

プーリングが有効になっていないとどうなるかわかりません。新しいSqlConnectionオブジェクトを作成することはできませんでした(またはそれは可能ですが、は既に参考になったを置き換えません)。私はそれが "何か他のもの"の周りのラッパーであるSqlConnectionに沸き立つと思うし、確かに "何か他のもの"を再現することができます。

関連する問題