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