"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 | Удаление или обновление данных в родительской записи |