2012-02-02 10 views
3

私はASP.netアプリケーションで初めてエンティティフレームワーク4を使用しています。 usingステートメントを終了した後でDB接続が閉じられていることを確認したかったのですが、SQL Server 2005プロファイラーでは、使用時に接続ログアウトが表示されず、入力時にログインのみが表示されます。Entity Framework 4がSQL Server 2005のプロファイラで接続を閉じない

、私は空白のasp.netページで開始し、Page_Loadの中で、私はこの簡単なコード(とページ内の他のabsolutly何もない)で試してみました:プロファイラで

using (var model = new DB("name=DB")) 
{ 
    var livre = (from l in model.books 
      select l).SingleOrDefault(); 
} 

、私は監査のログインを参照してください、しかし、 「使用中」のままにした後のログアウトではありません。

using (var model = new DB("name=DB")) 
{ 
    var livre = (from l in model.books 
      select l).SingleOrDefault(); 
    model.Connection.Close(); 
} 

は再び、私はログインはなく、ログアウトを参照してください。 は、だから私は、明示的に接続を閉じ、次のclodeを使用してみました。奇妙なことは、closeの後にmodel.ConnectionのConnectionStateプロパティを調べると、Sql Serverではなく「Closed」を示していることです。

SQL Serverの実際のログアウトを表示するには、VS2010の[デバッグを停止]ボタンを押して、Webアプリケーションを再起動するとログアウトが表示されます(ページが処理されたとき、 。

コードで閉じていても接続を開いたままにしておくSQL Serverがあるかどうか疑問に思っています。

おかげ

+2

[接続の再利用/プール](http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx)を参照してください。 –

+0

追加:Pooling = falseをSQL接続文字列に追加しましたが、パフォーマンスの影響に注意してください。 – Tomek

+2

[接続プール](http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx)が表示されていると思われます。プールが接続を維持しているので、次の要求に迅速に再利用できます。 – EBarr

答えて

0

はい、オープン接続を維持するSQL Serverのものがある:接続プーリングは。データベース接続のオープンとクローズはコストがかかるため、SQL Serverは接続要求に割り当てる接続プールを管理します。大まかに言えば、要求接続文字列がプール内の非アクティブな接続の接続文字列と一致する場合、SQL Serverはその要求に接続を割り当てます。

関連する問題