我相信在使用 LINQ 时不可能出现 sql 连接泄漏,但是 NumberOfReclaimedConnections 的 perfmon 跟踪显示一个高数字,并且在高负载时,我们有时会遇到异常,例如“超时已过期。在从池中获取连接之前超时时间已过。这可能是因为所有池连接都在使用中并且达到了最大池大小”。
我们不对数据上下文使用 Dispose,因为我们使用了延迟加载。几篇文章和博文告诉我,这应该不是问题。
有时我们仍然会遇到这些异常。但是不可能每个 linq 查询都保持连接打开,那么我们会有更多的异常。
已编辑
该应用程序是 WCF 服务。
如果您查看 Linq 的文档和大多数文章,他们声称 Dispose 不是释放连接所必需的。他们声称 DataCONtext 仅在需要的短时间内保持连接打开。