共用方式為


將 Keyref XML 結構描述 (XSD) 條件約束對應至 DataSet 條件約束

keyref 項目允許您在文件內的項目間建立連結。這與關聯式資料庫中的外部索引鍵關聯性很類似。如果結構描述指定 keyref 項目,則在結構描述對應處理序中,項目會轉換為 DataSet 資料表內資料行上對應的 foreign key 條件約束。依預設,keyref 項目也會產生關聯,並在關聯上指定 ParentTableChildTableParentColumnChildColumn 屬性。

下列表格列出您可在 keyref 項目中指定的 msdata 屬性。

屬性名稱 說明

msdata:ConstraintOnly

如果在結構描述的 keyref 項目上指定 ConstraintOnly="true",則會建立條件約束,但不會建立關聯。如果這個屬性並未指定 (或已設定為 False),則會在 DataSet 中同時建立條件約束和關聯。

msdata:ConstraintName

如果指定 ConstraintName 屬性,則它的值會被當成條件約束名稱。否則,會由結構描述內 keyref 項目之 Name 屬性提供 DataSet 內的條件約束名稱。

msdata:UpdateRule

如果結構描述內的 keyref 項目指定了 UpdateRule 屬性,則它的值會指定給 DataSet 內的 UpdateRule 條件約束屬性。否則 UpdateRule 屬性會設定為 Cascade

msdata:DeleteRule

如果結構描述內的 keyref 項目指定了 DeleteRule 屬性,則它的值會指定給 DataSet 內的 DeleteRule 條件約束屬性。否則 DeleteRule 屬性會設定為 Cascade

msdata:AcceptRejectRule

如果結構描述內的 keyref 項目指定了 AcceptRejectRule 屬性,則它的值會指定給 DataSet 內的 AcceptRejectRule 條件約束屬性。否則 AcceptRejectRule 屬性會設定為 None

下列範例所包含的結構描述會在 Order 項目的 OrderNumber 項目子系,以及 OrderDetail 項目的 OrderNo 項目子系之間,指定 keykeyref 的關聯性。

範例中,OrderDetailOrderNumber 項目子系會參考 Order 項目的 OrderNo 索引鍵項目子系。

<xs:schema id="MyDataSet"  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 資料表上 unique 條件約束。

    Table:Order Columns:OrderNumber ConstraintName:OrderNumberKey Type:UniqueConstraint IsPrimaryKey:False
    
  • OrderOrderDetail 資料表間的關聯性。Nested 屬性會設定為 False,因為這兩個項目未巢狀化至資料結構內。

    ParentTable:Order ParentColumns:OrderNumber ChildTable:OrderDetail ChildColumns:OrderNo ParentKeyConstraint:OrderNumberKey ChildKeyConstraint:OrderNoRef RelationName:OrderNoRef Nested:False
    
  • OrderDetail 資料表上的 foreign key 條件約束。

    ConstraintName:OrderNoRef Type:ForeignKeyConstraint Table:OrderDetail Columns:OrderNo RelatedTable:Order RelatedColumns:OrderNumber 
    

請參閱

概念

從 XML 結構描述 (XSD) 產生 DataSet 關聯

其他資源

將 XML 結構描述 (XSD) 條件約束對應至 DataSet 條件約束