將 keyref XML 結構描述 (XSD) 條件約束對應至資料集條件約束
keyref 元素允許您為文件內的元素建立連結。 這與關聯式資料庫中的外部索引鍵關聯性很類似。 如果結構描述指定 keyref 元素,元素會在結構描述對應處理程序轉換為 DataSet 資料表資料行對應的外部索引鍵限制式。 依預設,keyref 元素也會產生關聯,並在關聯上指定 ParentTable、ChildTable、ParentColumn 與 ChildColumn 屬性。
下列表格列出可在 keyref 元素指定的 msdata 屬性。
Attribute name | 描述 |
---|---|
msdata:ConstraintOnly | 如果在結構描述的 keyref 元素指定 ConstraintOnly="true",會建立限制式,但不會建立關聯。 如果此屬性並未指定 (或已設定為 False),則會在 DataSet 同時建立限制式與關聯。 |
msdata:ConstraintName | 如果指定 ConstraintName 屬性,其值會作為限制式名稱使用。 否則,則由結構描述的 keyref 元素 name 屬性提供 DataSet 的限制式名稱。 |
msdata:UpdateRule | 如果UpdateRule 屬性由結構描述的 keyref 元素指定 ,則其值也會指派為 DataSet 的 UpdateRule 限制式屬性。 否則 UpdateRule 屬性會設定為 Cascade。 |
msdata:DeleteRule | 如果DeleteRule 屬性由結構描述的 keyref 元素指定 ,則其值也會指派給 DataSet 的 DeleteRule 限制式屬性。 否則 DeleteRule 屬性會設定為 Cascade。 |
msdata:AcceptRejectRule | 如果AcceptRejectRule 屬性由結構描述的 keyref 元素指定,則其值也會指派給 DataSet 內的 AcceptRejectRule 限制式屬性。 否則 AcceptRejectRule 屬性會設定為 None。 |
下列範例所包含的結構描述指定 key 與 keyref 的關聯性,其存在於 Order 元素的 OrderNumber 子系元素 與 OrderDetail 元素的 OrderNo 子系元素之間。
如範例,OrderDetail元素的 OrderNumber 子系元素會參考 Order 元素的 OrderNo 索引鍵子系元素。
<xs:schema id="MyDataSet" xmlns=""
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="MyDataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="OrderDetail">
<xs:complexType>
<xs:sequence>
<xs:element name="OrderNo" type="xs:integer" />
<xs:element name="ItemNo" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Order">
<xs:complexType>
<xs:sequence>
<xs:element name="OrderNumber" type="xs:integer" />
<xs:element name="EmpNumber" type="xs:integer" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:key name="OrderNumberKey" >
<xs:selector xpath=".//Order" />
<xs:field xpath="OrderNumber" />
</xs:key>
<xs:keyref name="OrderNoRef" refer="OrderNumberKey">
<xs:selector xpath=".//OrderDetail" />
<xs:field xpath="OrderNo" />
</xs:keyref>
</xs:element>
</xs:schema>
XML 結構描述定義語言 (XSD) 結構描述對應處理程序會產生包含下列兩個資料表的 DataSet:
OrderDetail(OrderNo, ItemNo) and
Order(OrderNumber, EmpNumber)
此外,DataSet 還會定義下列限制式:
Order 資料表上唯一的限制式。
Table: Order Columns: OrderNumber ConstraintName: OrderNumberKey Type: UniqueConstraint IsPrimaryKey: False
Order 與 OrderDetail 資料表間的關聯性。 Nested 屬性會設定為 False,因為這兩個元素在結構描述內並未巢狀化。
ParentTable: Order ParentColumns: OrderNumber ChildTable: OrderDetail ChildColumns: OrderNo ParentKeyConstraint: OrderNumberKey ChildKeyConstraint: OrderNoRef RelationName: OrderNoRef Nested: False
OrderDetail 資料表上的外部索引鍵限制式。
ConstraintName: OrderNoRef Type: ForeignKeyConstraint Table: OrderDetail Columns: OrderNo RelatedTable: Order RelatedColumns: OrderNumber