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