Получение информации о схеме размещения данных в объекте DataTabie (Таблица данных)
Обратите внимание на ограничение в таблице BookCategories (Категории книг) с именем, сгенерированным системой. Когда вы внимательно просмотрите исходный код программы, то убедитесь, что эти ограничения в ней не добавляются. Откуда же они берутся? Если бы вы просмотрели содержимое соответствующего объекта, то увидели бы, что ограничение наложено на столбец LibraryofCongressNumber. Система посчитала, что, поскольку столбец CategoryName является внешним ключом для другой таблицы, то значения в столбце LibraryOfCongressNumber должны быть уникальными.
Можно также просмотреть коллекцию связей Relations (Отношения) объекта DataSet (Набор данных). При этом можно узнать, какие таблицы являются предками, и какие именно столбцы в них участвуют в образовании связей. То же самое можно сделать и для таблиц-потомков. Приведем соответствующий фрагмент примера DataEditing.
pEnum = ds › Relations › GetEnumerator(); // Отношения while (pEnum › MoveNext()) { DataRelation *dr = dynamic_cast<DataRelation *>(pEnum › Current); DataTable ^parentTable = dr › ParentTable; DataTable *childTable = dr › ChildTable; Console::WriteLine( " Relation: {0} ", dr › RelationName); // Отношение Console::WriteLine( ParentTable: {0, -10}", parentTable); Console::Write(" Columns: "); // Столбцы forfint j =0; j < dr › ParentColumns.Length; j++) Console::Write(// Запись {0, – 10}", dr › ParentColumns[j] › ColumnName); Console::WriteLine(); Console::WriteLine( ChildTable: (0, -10}", childTable); Console::Write(" Columns: "); // Запись forfint j = 0; j < dr › ChildColumns.Length; j++) Console::Write(// Запись {0, -10}", dr › ChildColumns[j] › ColumnName); Console::WriteLine(); }
Программа напечатает:
Output Relations between tables in the DataSet… Relation: Category › BookCategones Relation ParentTable: Categories Columns: Category ChildTable: BookCategories Columns: CategoryName Relation: Book Category LOC › Book LOG Relation ParentTable: BookCategories Columns: LibraryofCongressNumber ChildTable: Books Columns: LibraryofCongressNumber
А вот и перевод:
Отношения между таблицами в Наборе данных… Отношение: Категория › Отношение Категории книг ParentTable: Категории Столбцы: Категория ChildTable: Категории книг Столбцы: CategoryName Отношение: Отношение Категория книги LOC › Book LOC ParentTable: Категории книг Столбцы: Номер в Библиотеке Конгресса ChildTable: Книги Столбцы: Номер в Библиотеке Конгресса