连接池错误LINQ to SQL

时间:2010-04-28 17:20:33

标签: c# sql linq-to-sql

在我们的项目中,我使用LINQ to SQL进行各种数据库交互。现在从我所知,当我创建和使用DataContext对象时:它打开连接,创建事务,执行查询并关闭连接。

我们偶尔会在服务和服务器上收到连接池错误。

“从池中获取连接之前已经过了超时时间。这可能是因为所有池连接都在使用中并且达到了最大池大小。”

有什么想法吗?我完全离开了吗?这与SQL Server本身有关吗?

我们正在使用LINQ,.Net 3.5和Sql Server 2008

注意:在系统中任何地方都没有使用DATAREADER。

由于

1 个答案:

答案 0 :(得分:6)

见这里:

When should I dispose of a data context

我引用Jon Skeet在这里引用其他人的话,但这对我来说也是一个惊喜,因为我们遇到了类似的问题。

  

自动关闭的逻辑   DataContext连接可以   欺骗离开连接   打开。 DataContext依赖于   应用程序代码枚举所有   到达后的查询结果   结果集的结尾触发了   连接关闭。如果   应用程序使用IEnumerable   MoveNext方法而不是foreach   在C#或VB中声明,你可以退出   过早的枚举。如果你的   应用程序遇到的问题   连接没有关闭和你   怀疑自动关闭行为   不工作你可以使用Dispose   模式作为一种解决方法。

基本上,datacontext关闭自身的机制并不是防弹的。我已经采取手动关闭它,这解决了我们的问题。