1

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

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

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

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

4

1 回答 1

4

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

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

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

于 2013-07-15T14:01:05.267 回答