【发布时间】:2012-05-02 05:42:12
【问题描述】:
关于这个有很多不详细的问题,所以这里。
在 C# 中使用 SQL Server 2008 处理连接的最佳做法是什么?我们有一个调用 SQL Server 的程序集(在我们的例子中由 WCF 服务使用)。一般来说,您似乎需要三个对象来执行此操作:连接对象、命令对象和读取器对象。
我们能够让电话正常工作的唯一可靠方法是执行以下操作:
- 打开连接。
- 在 using() { } 块中创建命令
- 创建阅读器来处理响应。
- 丢弃阅读器。
- 在 using() 块的末尾隐式处理命令
- 关闭连接。
我们在多次迭代运行同一个命令时遇到了一个不寻常的问题,它会抱怨已经有一个命令或读取器对象附加到仍然打开的连接上。唯一坚如磐石的解决方案是关闭并重新打开我们执行的每个命令的连接,迭代或只是顺序(不同的命令)。
这就是问题所在,因为我来自数据库连接处理方面的 mysql_pconnect 背景。
- 为每个命令打开和关闭连接是否会显着影响性能?
- 如果 1. 是这样,那么正确的解决方法或代码结构是什么来处理串行重复命令?
- 有没有办法重用连接、命令或阅读器?
- 如果不是 3.,这是否真的会显着影响性能或内存使用(正如我们的用户会注意到的那样。)
【问题讨论】:
-
您还需要在
using语句中创建连接。 -
见 Darin Dimitrov 的回答。 stackoverflow.com/questions/2336362/…
-
这实际上看起来像是一篇不错的文章:worldofasp.net/tut/ADO/…
标签: c# performance sql-server-2008 reusability