2010-06-11 42 views
2

填充DataSet時,我使用「AddWithKey」值作爲DataAdapter的MissingSchemaAction。根據MSDN:DataSet - 在填充外連接查詢時確保PrimaryKey數據

與數據填充它之前添加模式信息到DataSet 確保 該主鍵約束是 包含在 DataSet中的DataTable對象。

但是,當我做到以下幾點:

DataColumn[] foo = TheDataSet.Tables["Table1"].PrimaryKey; 

我得到的0 foo.Length有更多的東西,我需要做的,除了這個?:

string TheQuery = "SELECT * FROM Table1 LEFT OUTER JOIN Table2 ON Table1.EVENT_NUM = Table2.EVENT_USER_NUM; 
using (SqlDataAdapter TheDataAdapter = new SqlDataAdapter(TheQuery, TheConnection) 
{ 
    TheDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey; 
    TheDataAdapter.Fill(TheDataSet, "Table1"); 
} 

注,如果我的查詢是:

string TheQuery = "SELECT * FROM Table1"; 

一切都會好的。但是,如果有聯接,我不會得到PrimaryKey。這甚至可能(獲得主鍵)?

編輯:起初,我並沒有意識到這是一個加入。雖然,我測試過會返回PrimaryKey的INNER JOINS。罪魁禍首似乎是這是一個外部連接的事實。因此,我改變了標題。

+2

該表是否有主鍵? – SLaks 2010-06-11 16:16:29

+0

新信息:是的,有一個主鍵,但我剛剛意識到這是一個JOIN查詢(兩個表都有一個主鍵) – JustLooking 2010-06-11 17:32:42

+0

請不要在標題中包含像C#這樣的標籤。將它們放在它們所屬的標籤中。 – 2010-06-11 17:37:23

回答

1

msdn

如果SelectCommand返回 結果的外部聯接時, DataAdapter的將不設置用於將得到的數據表中的的PrimaryKey 值。您 必須自己定義PrimaryKey到 確保重複的行是 正確解析。