1
2
我不会使用它,因为它隐藏了正在发生的事情,而且它可能会在没有适当处理的情况下留下数据库连接。 当您读取最后一条记录之后,连接对象将被关闭,并且如果在此之前停止读取,连接对象将不会被释放。例如,如果您知道一个结果中总是有十条记录,并且只有一个循环可以从枚举器中读取这十条记录,而不进行第十一个读取调用(在最后一项之外读取),则连接不会正确关闭。另外,如果您只想使用结果的一部分,那么在不读取其余记录的情况下,就无法关闭连接。 即使是枚举器的内置扩展也可能导致这种情况,即使您使用不当:
|
2
6
这不是我要遵循的模式。我不会像担心锁那样担心服务器上的负载。遵循这个模式,将数据检索过程集成到您的业务逻辑流中,这看起来像是一个全面的解决问题的方法;您不知道在迭代方面会发生什么,并且您正在将自己插入其中。一次检索数据,然后在关闭读卡器后,允许客户端代码枚举它。 |
3
2
我建议不要预先优化。在许多情况下,连接将被合并。 我也不希望在SQL Server上的负载有任何差异-查询将已经编译,并将运行。 |
4
1
我担心的是,您完全听任客户机代码的摆布。 您已经提到调用代码可能会比严格需要的时间更长地保持连接打开,但也有可能它永远不会允许关闭/释放对象。
只要客户端代码使用
|
Duvan · 将逗号(,)替换为点(.)[副本] 2 年前 |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
SoT · SQL Server中求和函数的工作方式 2 年前 |
NKAT · 将列值聚合到列表中会产生错误 2 年前 |
deanpillow · 返回两列中有一个匹配值的记录 2 年前 |
snowflakes74 · 在Dapper中异步查询多个结果 2 年前 |