Delen via


Beperkingen van keyref XML-schema (XSD) toewijzen aan datasetbeperkingen

Met het keyref-element kunt u koppelingen tot stand brengen tussen elementen in een document. Dit is vergelijkbaar met een refererende-sleutelrelatie in een relationele database. Als een schema het keyref-element opgeeft, wordt het element tijdens het schematoewijzingsproces geconverteerd naar een bijbehorende beperking voor refererende sleutels op de kolommen in de tabellen van de DataSet. Standaard genereert het keyref-element ook een relatie, met de eigenschappen ParentTable, ChildTable, ParentColumn en ChildColumn die zijn opgegeven in de relatie.

De volgende tabel bevat een overzicht van de msdata-kenmerken die u kunt opgeven in het keyref-element .

Naam van kenmerk Beschrijving
msdata:ConstraintOnly Als ConstraintOnly="true" is opgegeven op het keyref-element in het schema, wordt er een beperking gemaakt, maar er wordt geen relatie gemaakt. Als dit kenmerk niet is opgegeven (of is ingesteld op Onwaar), worden zowel de beperking als de relatie gemaakt in de DataSet.
msdata:ConstraintName Als het kenmerk ConstraintName is opgegeven, wordt de waarde ervan gebruikt als de naam van de beperking. Anders biedt het naamkenmerk van het keyref-element in het schema de naam van de beperking in de DataSet.
msdata:UpdateRule Als het kenmerk UpdateRule is opgegeven in het keyref-element in het schema, wordt de waarde toegewezen aan de eigenschap UpdateRule-beperking in de DataSet. Anders is de eigenschap UpdateRule ingesteld op Trapsgewijs.
msdata:DeleteRule Als het kenmerk DeleteRule is opgegeven in het keyref-element in het schema, wordt de waarde toegewezen aan de eigenschap DeleteRule-beperking in de DataSet. Anders is de eigenschap DeleteRule ingesteld op Trapsgewijs.
msdata:AcceptRejectRule Als het kenmerk AcceptRejectRule is opgegeven in het keyref-element in het schema, wordt de waarde toegewezen aan de eigenschap AcceptRejectRule constraint in de DataSet. Anders is de eigenschap AcceptRejectRule ingesteld op None.

Het volgende voorbeeld bevat een schema dat de sleutel- en sleutelref-relaties aangeeft tussen het onderliggende element OrderNumber van het element Order en het onderliggende element OrderNo van het element OrderDetail.

In het voorbeeld verwijst het onderliggende element OrderNumber van het element OrderDetail naar het onderliggende element OrderNo van het element Order.

<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>  

Het XSD-schematoewijzingsproces (XML Schema Definition Language) produceert de volgende DataSet met twee tabellen:

OrderDetail(OrderNo, ItemNo) and  
Order(OrderNumber, EmpNumber)  

Daarnaast definieert de DataSet de volgende beperkingen:

  • Een unieke beperking in de tabel Order .

              Table: Order  
    Columns: OrderNumber
    ConstraintName: OrderNumberKey  
    Type: UniqueConstraint  
    IsPrimaryKey: False  
    
  • Een relatie tussen de tabellen Order en OrderDetail . De geneste eigenschap is ingesteld op False omdat de twee elementen niet zijn genest in het schema.

              ParentTable: Order  
    ParentColumns: OrderNumber
    ChildTable: OrderDetail  
    ChildColumns: OrderNo
    ParentKeyConstraint: OrderNumberKey  
    ChildKeyConstraint: OrderNoRef  
    RelationName: OrderNoRef  
    Nested: False  
    
  • Een beperking voor refererende sleutels in de tabel OrderDetail .

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

Zie ook