Создание, изменение и удаление внешних ключей
В иерархии управляющих объектов SQL Server (SMO) внешние ключи представлены объектом ForeignKey.
Чтобы создать в SMO внешний ключ, необходимо указать таблицу, в которой внешний ключ определен в конструкторе объекта ForeignKey. В этой таблице надо выбрать хотя бы один столбец, который будет внешним ключом. Для этого создайте переменную объекта ForeignKeyColumn и укажите имя столбца, который станет внешним ключом. Теперь укажите таблицу и столбец, на которые будут выполняться ссылки. Воспользуйтесь методом Add для добавления столбца в свойство объекта Columns.
Столбцы, представляющие внешний ключ, перечислены в свойстве Columns объекта ForeignKey. Первичный ключ, на который ссылается внешний ключ, представлен свойством ReferencedKey, которое находится в таблице, указанной в свойстве ReferencedTable.
Примеры
Чтобы использовать какой-либо из представленных примеров кода, необходимо выбрать среду, шаблон и язык программирования, с помощью которых будет создаваться приложение. Дополнительные сведения см. в разделах Как создать проект SMO на языке Visual Basic в среде Visual Studio .NET и Как создать проект SMO на языке Visual C# в среде Visual Studio .NET.
Создание, изменение и удаление внешнего ключа на языке Visual Basic .NET
Этот пример кода показывает, как создать связь по внешнему ключу между одним или несколькими столбцами одной таблицы и столбцом первичного ключа другой таблицы.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Reference the AdventureWorks database.
Dim db As Database
db = srv.Databases("AdventureWorks")
'Declare a Table object variable and reference the Employee table.
Dim tbe As Table
tbe = db.Tables("Employee", "HumanResources")
'Declare another Table object variable and reference the EmployeeAddress table.
Dim tbea As Table
tbea = db.Tables("EmployeeAddress", "HumanResources")
'Define a Foreign Key object variable by supplying the EmployeeAddress as the parent table and the foreign key name in the constructor.
Dim fk As ForeignKey
fk = New ForeignKey(tbea, "test_foreignkey")
'Add EmployeeID as the foreign key column.
Dim fkc As ForeignKeyColumn
fkc = New ForeignKeyColumn(fk, "EmployeeID", "EmployeeID")
fk.Columns.Add(fkc)
'Set the referenced table and schema.
fk.ReferencedTable = "Employee"
fk.ReferencedTableSchema = "HumanResources"
'Create the foreign key on the instance of SQL Server.
fk.Create()