Unieke XML-schema (XSD)-beperkingen toewijzen aan DataSet-beperkingen

In een XSD-schema (XML Schema Definition Language) geeft het unique element de uniekheidsbeperking op voor een element of kenmerk. Tijdens het vertalen van een XML-schema in een relationeel schema wordt de unieke beperking die is opgegeven voor een element of kenmerk in het XML-schema toegewezen aan een unieke beperking in de DataTable overeenkomende DataSet beperking die wordt gegenereerd.

De volgende tabel bevat een overzicht van de msdata kenmerken die u in het unique element 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 name kenmerk de waarde van de naam van de beperking op.
msdata:PrimaryKey Als PrimaryKey="true" in het unique element aanwezig is, wordt er een unieke beperking gemaakt met de IsPrimaryKey-eigenschap ingesteld op 'true'.

In het volgende voorbeeld ziet u een XML-schema dat gebruikmaakt van het unique element om een uniekheidsbeperking op te geven.

<xs:schema id="SampleDataSet"
            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:integer"
           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="SampleDataSet" msdata:IsDataSet="true">
  <xs:complexType>
    <xs:choice maxOccurs="unbounded">
      <xs:element ref="Customers" />
    </xs:choice>
  </xs:complexType>
   <xs:unique     msdata:ConstraintName="UCustID"     name="UniqueCustIDConstr" >       <xs:selector xpath=".//Customers" />       <xs:field xpath="CustomerID" />     </xs:unique>
</xs:element>
</xs:schema>

Het unique element in het schema geeft aan dat voor alle Customers elementen in een documentinstantie de waarde van het CustomerID onderliggende element uniek moet zijn. Bij het bouwen van de DataSet leest de toewijzingsprocedure dit schema en genereert op basis daarvan de volgende tabel:

Customers (CustomerID, CompanyName, Phone)

Het toewijzingsproces maakt ook een unieke beperking voor de CustomerID kolom, zoals wordt weergegeven in de volgende DataSet. (Ter vereenvoudiging worden alleen relevante eigenschappen weergegeven.)

      DataSetName: MyDataSet
TableName: Customers
  ColumnName: CustomerID
      AllowDBNull: True
      Unique: True
  ConstraintName: UcustID       Type: UniqueConstraint
      Table: Customers
      Columns: CustomerID
      IsPrimaryKey: False

In de gegenereerde DataSet wordt de IsPrimaryKey eigenschap ingesteld tot False voor de unieke beperking. De unique eigenschap in de kolom geeft aan dat de CustomerID kolomwaarden uniek moeten zijn (maar ze kunnen een null-verwijzing zijn, zoals opgegeven door de AllowDBNull eigenschap van de kolom).

Als u het schema wijzigt en de optionele kenmerkwaarde instelt op msdata:PrimaryKeyTrue, wordt de unieke beperking in de tabel gemaakt. De AllowDBNull kolomeigenschap is ingesteld op Onwaar en de IsPrimaryKey eigenschap van de beperking ingesteld op Waar, waardoor de CustomerID kolom een primaire-sleutelkolom wordt.

U kunt een unieke beperking opgeven voor een combinatie van elementen of kenmerken in het XML-schema. In het volgende voorbeeld ziet u hoe u kunt opgeven dat een combinatie van CustomerID waarden CompanyName uniek moet zijn voor iedereen Customers in elk geval door een ander xs:field-element toe te voegen aan het schema.

      <xs:unique
         msdata:ConstraintName="SomeName"
         name="UniqueCustIDConstr" >
  <xs:selector xpath=".//Customers" />
  <xs:field xpath="CustomerID" />
  <xs:field xpath="CompanyName" />
</xs:unique>

Dit is de beperking die wordt gemaakt in de resulterende DataSet.

ConstraintName: SomeName
  Table: Customers
  Columns: CustomerID CompanyName
  IsPrimaryKey: False

Zie ook