При заполнении DataSet я использую значение «AddWithKey» для действия MissingSchemaAction DataAdapter. Согласно MSDN:
Добавление сведений о схеме в DataSet перед заполнением его данными гарантирует, что ограничения первичного ключа включены в объекты DataTable в DataSet.
Но когда я делаю следующее:
DataColumn[] foo = TheDataSet.Tables["Table1"].PrimaryKey;
Я получаю foo.Length 0. Есть ли что-то еще, что мне нужно сделать, кроме этого?:
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, если есть соединение. Возможно ли это (получить первичный ключ)?
РЕДАКТИРОВАТЬ: Сначала я не понял, что это ПРИСОЕДИНЯЕТСЯ. Хотя я тестировал INNER JOINS, которые возвращали бы PrimaryKey. Виновником, кажется, является тот факт, что это ВНЕШНЕЕ СОЕДИНЕНИЕ. Таким образом, я изменил название.