Zuordnen eindeutiger XSD-Einschränkungen (XML-Schema) zu 'DataSet'-Einschränkungen

Aktualisiert: November 2007

In einem XSD-Schema (XML Schema Definition Language) gibt das unique-Element die eindeutige Einschränkung für ein Element oder Attribut an. Beim Übersetzen eines XML-Schemas in ein relationales Schema wird die im XML-Schema für ein Element oder Attribut angegebene eindeutige Einschränkung einer eindeutigen Einschränkung in der DataTable des entsprechenden DataSet zugeordnet, das erstellt wird.

In der folgenden Tabelle werden die msdata-Attribute aufgelistet, die im unique-Element angegeben werden können.

Attributname

Beschreibung

msdata:ConstraintName

Wenn dieses Attribut angegeben ist, wird dessen Wert als Einschränkungsname verwendet. Andernfalls wird der Wert für den Einschränkungsnamen vom name-Attribut bereitgestellt.

msdata:PrimaryKey

Wenn PrimaryKey="true" im unique-Element vorhanden ist, wird eine eindeutige Einschränkung erstellt, deren IsPrimaryKey-Eigenschaft auf true festgelegt ist.

Im folgenden Beispiel wird ein XML-Schema dargestellt, das mit dem unique-Element eine eindeutige Einschränkung angibt.

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

Das unique-Element im Schema gibt an, dass der Wert des untergeordneten CustomerID-Elements für alle Customers-Elemente in einer Dokumentinstanz eindeutig sein muss. Wenn das DataSet erstellt wird, liest der Zuordnungsprozess dieses Schema und generiert folgende Tabelle:

Customers (CustomerID, CompanyName, Phone)

Beim Zuordnungsprozess wird auch eine eindeutige Einschränkung für die CustomerID-Spalte erstellt. Dies wird im folgenden DataSet dargestellt. (Zur Vereinfachung werden nur relevante Eigenschaften gezeigt.)

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

Im erstellten DataSet ist die IsPrimaryKey-Eigenschaft für die eindeutige Einschränkung auf False festgelegt. Die unique-Eigenschaft für die Spalte gibt an, dass die Werte der CustomerID-Spalte eindeutig sein müssen. (Entsprechend der AllowDBNull-Eigenschaft der Spalte können die Werte jedoch ein NULL-Verweis sein.)

Wenn Sie das Schema ändern und den optionalen msdata:PrimaryKey-Attributwert auf True festlegen, wird die eindeutige Einschränkung für die Tabelle erstellt. Die AllowDBNull-Spalteneigenschaft ist auf False festgelegt, und die IsPrimaryKey-Eigenschaft der Einschränkung ist auf True festgelegt. Damit wird die CustomerID-Spalte zu einer Primärschlüsselspalte.

Sie können eine eindeutige Einschränkung für eine Kombination aus Elementen oder Attributen im XML-Schema angeben. Im folgenden Beispiel wird veranschaulicht, wie angegeben wird, dass eine Kombination von CustomerID-Werten und CompanyName-Werten für alle Customers in jeder Instanz eindeutig sein müssen. Hierzu wird dem Schema ein weiteres xs:field-Element hinzugefügt.

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

Dies ist die im resultierenden DataSet erstellte Einschränkung.

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

Siehe auch

Konzepte

Generieren von DataSet-Beziehungen aus einem XML-Schema (XSD)

Weitere Ressourcen

Zuordnen von XSD-Einschränkungen (XML-Schema) zu DataSet-Einschränkungen