將 key XML 結構描述 (XSD) 條件約束對應至資料集條件約束
您可以在結構描述使用 key 元素,指定元素或屬性的索引鍵限制式。 具有指定索引鍵條件約束的項目或屬性,在任何結構描述執行個體中都必須具有唯一的值,且不可具有 Null 值。
索引鍵條件約束類似唯一的條件約束,唯一的不同處定義索引鍵條件約束的資料行不能有 Null 值。
下表列出您可在 key 元素指定的 msdata 屬性。
Attribute name | 描述 |
---|---|
msdata:ConstraintName | 如果指定這個屬性,則它的值會被當成條件約束名稱使用。 否則,會由 name 屬性提供限制式名稱的值。 |
msdata:PrimaryKey | 如果出現 PrimaryKey="true" ,則 IsPrimaryKey 限制式屬性會設為 true,使其成為主索引鍵。 AllowDBNull 資料行屬性設為 false,因為主索引鍵不能具有 Null 值。 |
已指定索引鍵限制式的結構描述在轉換過程,對應處理序會在資料表建立唯一的限制式,而限制式每個資料行的 AllowDBNull 資料行屬性會設為 false。 除非您已經在 key 元素指定 msdata:PrimaryKey="true"
,不然唯一的限制式的 IsPrimaryKey 屬性也會被設為 false。 它與結構描述 (其中 PrimaryKey="true"
) 中唯一的條件約束相同。
在下列結構描述範例,key 元素指定 CustomerID 元素的索引鍵限制式。
<xs:schema id="cod"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="Customers">
<xs:complexType>
<xs:sequence>
<xs:element name="CustomerID" type="xs:string" minOccurs="0" />
<xs:element name="CompanyName" type="xs:string" minOccurs="0" />
<xs:element name="Phone" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="MyDataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="Customers" />
</xs:choice>
</xs:complexType>
<xs:key msdata:PrimaryKey="true"
msdata:ConstraintName="KeyCustID"
name="KeyConstCustomerID" >
<xs:selector xpath=".//Customers" />
<xs:field xpath="CustomerID" />
</xs:key>
</xs:element>
</xs:schema>
key 元素指定 Customers 元素的 CustomerID 元素子系值,必須具有唯一的值,且不可為 Null 值。 轉譯 XML 結構描述定義語言 (XSD) 結構描述的過程中,對應處理序會建立下表:
Customers(CustomerID, CompanyName, Phone)
XML 結構描述對應也會在 CustomerID 資料行建立 UniqueConstraint,如下列 DataSet 所示。 (為了便於了解,此處僅顯示相關屬性)。
DataSetName: MyDataSet
TableName: customers
ColumnName: CustomerID
AllowDBNull: False
Unique: True
ConstraintName: KeyCustID
Table: customers
Columns: CustomerID
IsPrimaryKey: True
在產生的 DataSet,會將 UniqueConstraint 的 IsPrimaryKey 屬性設為 true,因為結構描述在 key 元素指定了 msdata:PrimaryKey="true"
。
在 DataSet UniqueConstraint 中的 ConstraintName 屬性值,即是結構描述 key 元素指定的 msdata:ConstraintName 屬性值。