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.