2010-04-28 106 views
3

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

每隔一段时间我们都会在我们的服务和服务器上收到连接池错误。

“从池中获取连接之前经过的超时时间。出现这种情况可能是因为所有池的连接正在使用,并且达到最大池大小。”

任何想法?我完全离开这里吗?这与SQL Server本身有关吗?

我们使用LINQ,净3.5和SQL Server 2008

注:NO的DataReader被任何地方使用登记系统。

感谢

+0

您的应用程序是否有一堆用户正在创建潜在的长执行查询?如果您的应用程序正常关闭连接没有问题,那么这可能是一个加载问题。 – MusiGenesis 2010-04-28 17:37:13

回答

6

在这里看到:

When should I dispose of a data context

我引用乔恩斯基特人在这里引用一个人,但它是一个惊喜,我为好,因为我们遇到了类似的问题。

即自动关闭 DataContext的连接可以 欺骗离开连接 打开的逻辑。 DataContext依赖于 应用程序代码,它列举了查询的所有 结果,因为结果集的结尾触发 连接关闭。如果 应用程序使用IEnumerable的 MoveNext方法而不是C#或VB中的foreach 语句,则可以过早地退出 枚举。如果您的 应用程序遇到 连接未关闭的问题,并且您的 怀疑自动关闭的行为 不起作用,则可以使用Dispose 模式作为解决方法。

基本上,datacontext如何自动关闭的机制并非无懈可击。自从我手动关闭它,解决了我们的问题。