共用方式為


將 keyref XML 結構描述 (XSD) 條件約束對應至資料集條件約束

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

下列表格列出可在 keyref 元素指定的 msdata 屬性。

Attribute name 描述
msdata:ConstraintOnly 如果在結構描述的 keyref 元素指定 ConstraintOnly="true",會建立限制式,但不會建立關聯。 如果此屬性並未指定 (或已設定為 False),則會在 DataSet 同時建立限制式與關聯。
msdata:ConstraintName 如果指定 ConstraintName 屬性,其值會作為限制式名稱使用。 否則,則由結構描述的 keyref 元素 name 屬性提供 DataSet 的限制式名稱。
msdata:UpdateRule 如果UpdateRule 屬性由結構描述的 keyref 元素指定 ,則其值也會指派為 DataSetUpdateRule 限制式屬性。 否則 UpdateRule 屬性會設定為 Cascade
msdata:DeleteRule 如果DeleteRule 屬性由結構描述的 keyref 元素指定 ,則其值也會指派給 DataSetDeleteRule 限制式屬性。 否則 DeleteRule 屬性會設定為 Cascade
msdata:AcceptRejectRule 如果AcceptRejectRule 屬性由結構描述的 keyref 元素指定,則其值也會指派給 DataSet 內的 AcceptRejectRule 限制式屬性。 否則 AcceptRejectRule 屬性會設定為 None

下列範例所包含的結構描述指定 keykeyref 的關聯性,其存在於 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  
    
  • OrderOrderDetail 資料表間的關聯性。 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
    

另請參閱