Typed DataSet 的 TableAdapter 封裝 ADO.NET 細節,但有時需直接存取 SqlConnection、SqlCommand 設定(如連接字串、CommandTimeout)。本文示範擴充 ProductsTableAdapter 暴露這些屬性。
SqlConnection:資料庫連接(連接字串、狀態、交易)。SqlCommand:SQL 命令/預存程序(CommandText、Parameters、CommandTimeout、Transaction)。SqlDataAdapter:橋接 Command 與 DataTable(Fill、Update)。Connection 屬性(內部 SqlConnection)。SqlCommand(SelectCommand, InsertCommand, UpdateCommand, DeleteCommand)。Northwind.xsd → 右鍵 ProductsTableAdapter → View Code(建立 Partial Class)。public partial class ProductsTableAdapter
{
// 取得/設定連接字串
public string ConnectionString
{
get { return this.Connection.ConnectionString; }
set { this.Connection.ConnectionString = value; }
}
// 取得/設定命令逾時 (秒)
public int CommandTimeout
{
get { return this.CommandCollection[0].CommandTimeout; }
set
{
foreach (SqlCommand cmd in this.CommandCollection)
cmd.CommandTimeout = value;
}
}
}
var adapter = new ProductsTableAdapter();
adapter.ConnectionString = "新連接字串"; // 動態切換資料庫
adapter.CommandTimeout = 120; // 延長逾時至 2 分鐘
var products = adapter.GetProducts();
透過 Partial Class 擴充 TableAdapter,可在不修改設計工具產生代碼的前提下,靈活控制 ADO.NET 連接/命令層級設定,滿足動態切換資料庫、長時間查詢等進階需求。