关于这个有很多不详细的问题,所以这里。
使用 SQL Server 2008 在 C# 中进行连接处理的最佳实践是什么?我们有一个调用 SQL Server 的程序集(在我们的例子中由 WCF 服务使用)。一般来说,您似乎需要三个对象来执行此操作:连接对象、命令对象和读取器对象。
我们能够让电话正常工作的唯一可靠方法是执行以下操作:
- 打开连接。
- 在 using() { } 块中创建命令
- 创建 Reader 来处理响应。
- 处置阅读器。
- 在 using() 块的末尾隐式处理命令
- 关闭连接。
我们在多次迭代运行同一个命令时遇到了一个不寻常的问题,它会抱怨已经有一个命令或读取器对象附加到仍然打开的连接上。唯一坚如磐石的解决方案是关闭并重新打开我们所做的每个命令的连接,迭代或只是顺序(不同的命令)。
所以这是个问题,因为我来自数据库连接处理方面的 mysql_pconnect 背景。
- 为每个命令打开和关闭连接是否会显着影响性能?
- 如果 1. 是这样,那么处理串行重复命令的正确解决方法或代码结构是什么?
- 有没有办法重用连接、命令或阅读器?
- 如果不是 3.,这是否真的会显着影响性能或内存使用(如,我们的用户会注意到。)