应用程序关闭时,SQL Server会话保持打开状态

时间:2013-07-15 13:54:36

标签: c# sql-server entity-framework

每当我关闭我的应用程序时,我都会处理我的DbContext对象以确保没有连接存在。

当我在SQL Server Management Studio中运行sp_who时,由于某种原因,会话仍然存在status = 'sleeping'

因为我无法执行某些命令(例如DROP DATABASE),除非我终止会话,这需要我找到ID并手动终止它。

有没有办法在应用程序关闭时立即终止此会话?

1 个答案:

答案 0 :(得分:4)

实体框架使用底层SQL Server ADO.NET提供程序,该提供程序将数据库连接池化,因为每次创建和刷新都是一项昂贵的操作。

您可以使用Application_End事件处理程序上的SqlConnection.ClearPool方法调用来刷新连接池。

注意:我不建议禁用或刷新连接池以获取生产代码。另一种开发方法可以是修改以使用Pooling=false选项通过连接字符串禁用池。