"Column Name: " & columns(i).ColumnName)

   Next i

   ' Вывод имени связанной родительской таблицы.

   Me.lstOutput.Items.Add( _

    "Related Table Name: " & _

    fkCS.RelatedTable.TableName)

   ' Обработка связанных родительских полей и вывод их имен

   columns = fkCS.RelatedColumns

   For i = 0 То columns.Length – 1

    Me.lstOutput.Items.Add( _

    "Related Column Name: " & _

    columns(i).ColumnName)

   Next i

  End If

  Me.lstOutput.Items.Add("====================================")

 Next cs

End Sub

Подпрограмма btnConstraints_Click обрабатывает щелчки на кнопке Constraints: создает объекты DataSet, DataTable и DataRelation (с помощью кода из прежних листингов), а затем вызывает подпрограмму DisplayConstraints для отображения информации о созданных ограничениях.

Подпрограмма общего типа DisplayConstraints принимает в качестве параметра объект DataTable и отображает информацию об ограничениях указанной таблицы. Для этого выполняется циклический обход всех членов свойства-коллекции Constraints указанной таблицы. Каждое найденное ограничение проверяется, т.е. выясняется, имеет ли оно тип UniqueConstraint или ForeignKeyConstraint. Оба они являются производными классами от класса Constraint, поэтому могут сосуществовать в рамках одной типизированной коллекции. Однако эти объекты все же обладают разным набором свойств, поэтому разработчику потребуется идентифицировать тип ограничения в коллекции и преобразовать его к соответствующему уточненному типу. Для ограничения UniqueConstraint отображаются имена всех (одного или нескольких) полей, определенных в данном ограничении. А для ограничения ForeignKeyConstraint отображается имя связанной родительской таблицы вместе с именами всех (одного или нескольких) связанных полей в этой таблице.

РИС. 5.4. Результаты отображения информации о созданных ограничениях для таблиц Employees и Departments

После компоновки проекта DataSetCode и запуска полученного приложения щелкните на кнопке Constraints, и в текстовом поле будет выведена информация о созданных ограничениях (рис. 5.4). Учтите, что все три показанных ограничения (одно для таблицы Employees и два для таблицы Departments) созданы автоматически, так как во время создания отношения между таблицами для свойства Unique объекта DataColumn задано значение True.

Объект ForeignKeyConstraint имеет три свойства-правила, которые управляют действиями, предпринимаемыми при редактировании данных в связанных таблицах. Например, свойства UpdateRule и DeleteRule определяют действия, выполняемые при обновлении и удалении записей в родительской таблице. Эти свойства могут принимать одно из значений перечисления Rule, члены которого описаны в табл. 5.4.

Таблица 5.4. Члены перечисления Rule 

Член перечисления Описание
Cascade Удаление или обновление данных в родительской записи также выполняется для связанных дочерних записей. Это значение используется по умолчанию
None Удаление или обновление данных в родительской записи не выполняется для связанных дочерних записей. Это может привести к появлению дочерних записей, которые ошибочно ссылаются на отсутствующие родительские записи
SetDefault Удаление или обновление данных в родительской записи не выполняется для связанных дочерних записей, но для них задается используемое по умолчанию значение, указанное в свойстве DefaultValue
SetNullУдаление или обновление данных в родительской записи не выполняется для связанных дочерних записей, но для них задается значение DBNull
Перейти на страницу:

Похожие книги