【问题标题】:Connection Pool error LINQ to SQL连接池错误 LINQ to SQL
【发布时间】:2011-02-13 11:21:03
【问题描述】:

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

我们的服务和服务器时不时地出现连接池错误。

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

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

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

注意:系统中的任何地方都没有使用数据读取器。

谢谢

【问题讨论】:

  • 您的应用程序是否有大量用户创建可能需要长时间执行的查询?如果您的应用程序正确关闭连接没有问题,那么这可能是加载问题。

标签: c# sql linq-to-sql


【解决方案1】:

看这里:

When should I dispose of a data context

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

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

基本上,数据上下文如何关闭自身的机制并不是万无一失的。从那以后我开始手动关闭它,这解决了我们的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-16
    • 2010-10-19
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多