Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 实体框架4未关闭sql server 2005探查器中的连接_Sql Server 2005_Entity Framework 4 - Fatal编程技术网

Sql server 2005 实体框架4未关闭sql server 2005探查器中的连接

Sql server 2005 实体框架4未关闭sql server 2005探查器中的连接,sql-server-2005,entity-framework-4,Sql Server 2005,Entity Framework 4,我第一次在ASP.net应用程序中使用entity framework 4。 我想确保在离开using语句后关闭DB连接,但是,在SQL Server 2005探查器中,我在离开using语句时看不到连接注销,只有在进入时才看到登录 例如,我从一个空白的asp.net页面开始,在页面加载中,我尝试使用以下简单代码(页面中完全没有其他代码): 在profiler中,我看到了审计登录,但没有看到离开“using”后的注销。 因此,我尝试使用以下clode显式关闭连接: using (var mode

我第一次在ASP.net应用程序中使用entity framework 4。 我想确保在离开using语句后关闭DB连接,但是,在SQL Server 2005探查器中,我在离开using语句时看不到连接注销,只有在进入时才看到登录

例如,我从一个空白的asp.net页面开始,在页面加载中,我尝试使用以下简单代码(页面中完全没有其他代码):

在profiler中,我看到了审计登录,但没有看到离开“using”后的注销。 因此,我尝试使用以下clode显式关闭连接:

using (var model = new DB("name=DB"))
{  
  var livre = (from l in model.books
           select l).SingleOrDefault();
  model.Connection.Close();
}
同样,我看到的是登录,但不是注销。奇怪的是,当我在model.Connection中检查close之后的ConnectionState属性时,它表示“Closed”,但在Sql Server中没有

要查看SQL Server中的实际注销,我必须在VS2010中按下停止调试按钮,当我重新启动Web应用程序时,才可以看到注销(随后是处理页面时的实际登录)

我开始怀疑SQL Server中是否有某种东西可以保持连接打开,即使在代码中连接已关闭

有什么想法吗


谢谢

是的,SQL Server中有一种东西可以保持连接打开:连接池。由于打开和关闭数据库连接是一项昂贵的操作,SQL Server将管理一个连接池,它将分配给连接请求。粗略地说,如果请求连接字符串与池中非活动连接的连接字符串匹配,SQL Server会将连接分配给请求。

这是一种预期行为,我怀疑您在工作中看到了。池维护连接,以便可以在下一个请求中快速重用。将:Pooling=false添加到sql连接字符串中,但要注意性能影响。
using (var model = new DB("name=DB"))
{  
  var livre = (from l in model.books
           select l).SingleOrDefault();
  model.Connection.Close();
}