在跳枪和标记重复之前,我已经搜索了一个没有运气的明确答案。
背景:
一位同事和我在datareader一侧与我讨论了datareader与数据集。
它归结为我喜欢datareader因为它的轻量级,而我的同事喜欢数据集,因为它已断开连接。
他的理由是,由于数据集已断开连接,.net将填充数据集并将连接释放回池中(我们的服务器每天会获得数百万次点击)。
他还说过,即使我将sqlconnection和datareader包装在using语句中,连接也不会立即释放,因为using语句只是最后一次尝试catch并且无论如何调用connection.close和dispose,这很糟糕,因为我们必须等待垃圾收集器运行,谁知道需要多长时间。在此期间,连接不会返回池中。
我的问题:
他是对的吗?并且使用datareader会导致池中的连接收缩,直到垃圾收集运行?
答案 0 :(得分:0)
他说的实际上是有道理的,因为我已经体验过目前正在我公司运行的项目,虽然开发人员编写了代码来关闭连接,但仍然连接是开放的很多次我们获取连接池错误,这就是我们在所有新项目中开始使用断开连接的体系结构的原因。