Delen via


XSD-beperkingen (Key XML Schema) toewijzen aan datasetbeperkingen

In een schema kunt u een sleutelbeperking opgeven voor een element of kenmerk met behulp van het sleutelelement . Het element of kenmerk waarop een sleutelbeperking is opgegeven, moet unieke waarden hebben in een schema-exemplaar en mag geen null-waarden hebben.

De sleutelbeperking is vergelijkbaar met de unieke beperking, behalve dat de kolom waarop een sleutelbeperking is gedefinieerd, geen null-waarden mag hebben.

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

Naam van kenmerk Beschrijving
msdata:ConstraintName Als dit kenmerk is opgegeven, wordt de waarde gebruikt als de naam van de beperking. Anders geeft het naamkenmerk de waarde van de naam van de beperking op.
msdata:PrimaryKey Als PrimaryKey="true" deze aanwezig is, wordt de eigenschap IsPrimaryKey-beperking ingesteld op true, waardoor deze een primaire sleutel is. De kolomeigenschap AllowDBNull is ingesteld op false, omdat primaire sleutels geen null-waarden kunnen hebben.

Bij het converteren van een schema waarin een sleutelbeperking is opgegeven, maakt het toewijzingsproces een unieke beperking voor de tabel, waarbij de eigenschap AllowDBNull-kolom is ingesteld op false voor elke kolom in de beperking. De eigenschap IsPrimaryKey van de unieke beperking is ook ingesteld op false, tenzij u op het sleutelelement hebt opgegevenmsdata:PrimaryKey="true". Dit is identiek aan een unieke beperking in het schema waarin PrimaryKey="true".

In het volgende schemavoorbeeld geeft het sleutelelement de sleutelbeperking op voor het element 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>

Het sleutelelement geeft aan dat de waarden van het onderliggende element CustomerID van het element Klanten unieke waarden moeten hebben en geen null-waarden mogen hebben. Bij het vertalen van het XSD-schema (XML Schema Definition Language) maakt het toewijzingsproces de volgende tabel:

Customers(CustomerID, CompanyName, Phone)  

De toewijzing van het XML-schema maakt ook een UniqueConstraint op de kolom CustomerID , zoals wordt weergegeven in het volgende DataSet. (Ter vereenvoudiging worden alleen relevante eigenschappen weergegeven.)

      DataSetName: MyDataSet  
TableName: customers  
  ColumnName: CustomerID  
      AllowDBNull: False  
      Unique: True  
  ConstraintName: KeyCustID  
      Table: customers  
      Columns: CustomerID
      IsPrimaryKey: True  

In de DataSet die wordt gegenereerd, is de eigenschap IsPrimaryKey van de UniqueConstraint ingesteld op true omdat het schema in het sleutelelement opgeeftmsdata:PrimaryKey="true".

De waarde van de eigenschap ConstraintName van uniqueConstraint in de DataSet is de waarde van het kenmerk msdata:ConstraintName dat is opgegeven in het sleutelelement in het schema.

Zie ook