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