七、默认的约束和主键
不象核对位于SMO层次的表层的约束,默认的约束是表列的属性。在本例中加了一个DefaultConstraint对象的列表,这些DefaultConstraint来源于每一个表的列。在向树加入表列之后,加入了DefaultConstraints列表。代码如下:
Dim aobjTableDefaultCons As New List(Of DefaultConstraint)
Dim aobjTableDefaultCons As New List(Of DefaultConstraint)
For Each objTableColumn As Column In objSMOTable.Columns
If Not IsNothing(objTableColumn.DefaultConstraint) Then
aobjTableDefaultCons.Add(objTableColumn.DefaultConstraint)
End If
. . .
Next
在本例中处理主键和约束类似,主键主不是SMO表类的属性,我们可以通过对表的索引和查询每个索引的IndexKeyType属性来发现表的主键。如果一个索引的IndexKeyType设置为DriPrimaryKey,那么这个索引就是主键,或主键的一部分。下面的代码演示了如何判断一个索引是否为主键:
For Each objIndex As Index In objSMOTable.Indexes
. . .
If objIndex.IndexKeyType = IndexKeyType.DriPrimaryKey Then
. . .
' This index is the primary key for the table
. . .
End If
. . .
Next