很多情形下我們需要知道表的主鍵是什麼。在ADO.Net中提供了DataTable可以映射數據庫的表。於是便可以利用DataTable的屬性PrimaryKey,它是DataColumn[] 類型是一個數組。我們可以使用如下的代碼
DataColumn[] cols;
cols = Table.PrimaryKey;
//注意不是cols是DataColumn數組,不是DataColumn變量。這樣做主要是為了處理聯合主鍵的問題。
for(int i = 0; i < cols.Length; i++)
{
MessageBox.Show(cols[i].ColumnName);
}
按理這個問題就已經解決了,但是cols.Length卻是0。原來在默認的情況下填充DataTable時並沒有從數據庫中取的主鍵的信息。如何獲得主鍵呢?經過研究發現在填充Dataset的時候可以使用DataAdapter的MissingSchemaAction屬性幫助我們解決這個問題,於是有如下的代碼:
//使用DataAdapter填充DataTable
dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
dataadapter.Fill(Table);
DataColumn[] cols;
cols = Table.PrimaryKey;
//注意不是cols是DataColumn數組,不是DataColumn變量。這樣做主要是為了處理聯合主鍵的問題。
for(int i = 0; i < cols.Length; i++)
{
MessageBox.Show(cols[i].ColumnName);
}
這樣我們便可以如願以償了。MissingSchemaAction屬性是確定現有Dataset(或DataTable)架構與傳入數據不匹配時需要執行的操作。MissingSchemaAction.AddWithKey是枚舉值,它的作用是添加必需的列和主鍵信息以完成架構,利用它用戶可以在每個 DataTable上顯式設置主鍵約束。