在TableAdapters之间共享SqlConnection

本文关键字:SqlConnection 共享 之间 TableAdapters | 更新日期: 2023-09-27 17:59:44

我的表单调用多个TableAdapter对象来用相关行填充本地的公共DataSet(请参见下文)。

private void frm_TrialsFromOrder_Load(object sender, EventArgs e)
{
    this.trialTableAdapter.FillBy(this.myDataSet.trialTable, this.trial_id);
    this.orderTableAdapter.FillBy(this.myDataSet.orderTable, this.order_id);
}

执行程序时,SQL Server Profiler显示:

  1. 审核登录
  2. SQL:Batch(SELECT…FROM trialTable…)
  3. 审核注销
  4. 审核登录
  5. SQL:Batch(SELECT…FROM orderTable…)
  6. 审核注销

如何将多个TableAdapter对象配置为使用同一个SqlConnection

在TableAdapters之间共享SqlConnection

您不想这样做。SqlConnection对象是在using中创建的,作为最佳实践,它被使用,然后被处理(因此using语句)。不要共享连接对象。池化连接以确保成本不高的操作由服务器处理。

根据MSDN:

为了确保连接始终是关闭的,请打开using块内部的连接,如下面的代码片段所示。这样做可以确保在代码退出块时自动关闭连接。

请确保将连接字符串上的Pooling属性设置为true,以便启用池;否则(总的来说)这将违背目的。