每当我关闭我的应用程序时,我都会处理我的DbContext
对象以确保没有连接是活动的。
当我sp_who
在 SQL Server Management Studio 中运行时,但由于某种原因会话仍然存在status = 'sleeping'
。
因此,除非我终止会话,否则我无法执行某些命令(例如DROP DATABASE
),这需要我找到 ID 并手动终止它。
有没有办法在我的应用程序关闭时立即终止此会话?
每当我关闭我的应用程序时,我都会处理我的DbContext
对象以确保没有连接是活动的。
当我sp_who
在 SQL Server Management Studio 中运行时,但由于某种原因会话仍然存在status = 'sleeping'
。
因此,除非我终止会话,否则我无法执行某些命令(例如DROP DATABASE
),这需要我找到 ID 并手动终止它。
有没有办法在我的应用程序关闭时立即终止此会话?
实体框架使用底层 SQL Server ADO.NET 提供程序,该提供程序将数据库连接池化,因为它们每次创建和刷新都是一项昂贵的操作。
您可以使用事件处理程序上的SqlConnection.ClearPool方法调用刷新连接池。Application_End
注意:我不建议为生产代码禁用或刷新连接池。另一种开发方法是使用该Pooling=false
选项修改以通过连接字符串禁用池。