连接池错误LINQ to SQL

Zeu*_*eus 3 c# sql linq-to-sql

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

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

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

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

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

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

谢谢

mwi*_*son 6

看这里:

我什么时候应该处理数据上下文

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

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

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