Freigeben über


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

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

Die folgende Tabelle enthält die msdata-Attribute, die Sie im unique-Element angeben können.

Attributname Beschreibung
msdata:ConstraintName Wenn dieses Attribut angegeben ist, wird sein Wert als Einschränkungsname verwendet. Andernfalls enthält das name-Attribut den Wert des Einschränkungsnamens.
msdata:PrimaryKey Wenn PrimaryKey="true" im unique-Element vorhanden ist, wird eine unique-Einschränkung erstellt, für deren IsPrimaryKey-Eigenschaft True festgelegt ist.

Das folgende Beispiel zeigt ein XML-Schema, das mit dem unique-Element eine Eindeutigkeitseinschrä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. Beim Erstellen des DataSets liest der Zuordnungsprozess dieses Schema und generiert folgende Tabelle:

Customers (CustomerID, CompanyName, Phone)

Der Zuordnungsprozess erstellt außerdem eine unique-Einschränkung für die CustomerID-Spalte, wie im folgenden DataSet gezeigt. (Der Einfachheit halber 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 generierten DataSet ist für die IsPrimaryKey-Eigenschaft der unique-Einschränkung False festgelegt. Die unique-Eigenschaft der Spalte gibt an, dass die CustomerID-Spaltenwerte eindeutig sein müssen. (Es kann sich um einen NULL-Verweis handeln, wie von der AllowDBNull-Eigenschaft der Spalte angegeben.)

Wenn Sie das Schema ändern, das optionale msdata:PrimaryKey-Attribut des unique-Elements angeben und für den Wert True festlegen, wird die unique-Einschränkung für die Tabelle erstellt. Für die AllowDBNull-Spalteneigenschaft ist False und für die IsPrimaryKey-Eigenschaft der Einschränkung True festgelegt, so dass die CustomerID-Spalte eine primäre Schlüsselspalte ist.

Sie können eine unique-Einschränkung für eine Kombination aus Elementen oder Attributen im XML-Schema angeben. Im folgenden Beispiel wird gezeigt, wie eine Kombination aus CustomerID-Werten und CompanyName-Werten für alle Customers in jeder Instanz als eindeutig angegeben wird, indem ein anderes xs:field-Element in das Schema eingefügt wird.

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

Nachfolgend sehen Sie die Einschränkung, die im daraus entstehenden DataSet erstellt wird.

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

Siehe auch

Zuordnen von XML-Schema (XSD)-Einschränkungen zu DataSet-Einschränkungen | Generieren von DataSet-Beziehungen aus einem XML-Schema (XSD) | Datentypunterstützung zwischen XML-Schematypen (XSD) und .NET Framework-Typen