小弟自己寫了一段很醜的方式來解決問題
OleDbConnection conn = new OleDbConnection(connStr);
// 抓取 SchemaTable
conn.Open();
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Key_Column_Usage, null);
conn.Close();
// 抓出具有 PrimaryKey 的 Table Name
var query =
from sch in dt.AsEnumerable()
where ("PrimaryKey" == sch["CONSTRAINT_NAME"].ToString())
select new
{
table = sch["TABLE_NAME"].ToString(),
// 篩選出各 Table 裡面的 PrimaryKey
col =
from sch2 in dt.AsEnumerable()
where sch["TABLE_NAME"].ToString() == sch2["TABLE_NAME"].ToString()
select sch2["COLUMN_NAME"].ToString()
};
// 設定 Table 的 PrimaryKey
foreach (var v in query.Distinct())
{
int col = v.col.Count();
DataColumn[] dc = new DataColumn[col];
foreach (string colname in v.col)
{
dc[--col] = dataSet.Tables[v.table].Columns[colname];
}
dataSet.Tables[v.table].PrimaryKey = dc;
}
有更好的寫法的話,麻煩請指教小弟一下 @@
另外有沒有辦法,可以自動設定"自動遞增"的欄位??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.78.243