Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In einem XSD-Schema (XML Schema Definition Language) gibt das unique Element die Eindeutigkeitseinschrä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 beschrieben, die Sie im unique Element angeben können.
| Attributname | BESCHREIBUNG |
|---|---|
| msdata:ConstraintName | Wenn dieses Attribut angegeben ist, wird der Wert als Einschränkungsname verwendet. Andernfalls stellt das name Attribut den Wert des Einschränkungsnamens bereit. |
| msdata:PrimaryKey | Wenn PrimaryKey="true" im unique Element vorhanden ist, wird eine eindeutige Einschränkung erstellt, wobei die IsPrimaryKey Eigenschaft auf "true" festgelegt ist. |
Das folgende Beispiel zeigt ein XML-Schema, das das unique Element verwendet, um eine Eindeutigkeitseinschränkung anzugeben.
<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 für alle Customers Elemente in einer Dokumentinstanz der Wert des CustomerID untergeordneten Elements eindeutig sein muss. Beim Erstellen des DataSet liest der Zuordnungsprozess dieses Schema und generiert die folgende Tabelle:
Customers (CustomerID, CompanyName, Phone)
Der Zuordnungsprozess erstellt auch eine eindeutige Einschränkung für die CustomerID Spalte, wie im folgenden DataSet dargestellt. (Aus Gründen der Einfachheit werden nur relevante Eigenschaften angezeigt.)
DataSetName: MyDataSet
TableName: Customers
ColumnName: CustomerID
AllowDBNull: True
Unique: True
ConstraintName: UcustID Type: UniqueConstraint
Table: Customers
Columns: CustomerID
IsPrimaryKey: False
In dem generierten DataSet wird die IsPrimaryKey Eigenschaft auf False für die eindeutige Einschränkung festgelegt. Die unique Eigenschaft in der Spalte gibt an, dass die CustomerID Spaltenwerte eindeutig sein müssen (sie können jedoch ein Nullverweis sein, wie durch die AllowDBNull Eigenschaft der Spalte angegeben).
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" und die IsPrimaryKey Eigenschaft der Einschränkung auf "True" festgelegt, wodurch die CustomerID Spalte eine Primärschlüsselspalte wird.
Sie können eine eindeutige Einschränkung für eine Kombination von Elementen oder Attributen im XML-Schema angeben. Im folgenden Beispiel wird veranschaulicht, wie Sie angeben, dass eine Kombination aus CustomerID und CompanyName Werten für alle Customers in jeder Instanz eindeutig sein muss, indem sie ein weiteres xs:field-Element im Schema hinzufügen.
<xs:unique
msdata:ConstraintName="SomeName"
name="UniqueCustIDConstr" >
<xs:selector xpath=".//Customers" />
<xs:field xpath="CustomerID" />
<xs:field xpath="CompanyName" />
</xs:unique>
Dies ist die Einschränkung, die im resultierenden DataSet erstellt wird.
ConstraintName: SomeName
Table: Customers
Columns: CustomerID CompanyName
IsPrimaryKey: False