Zuordnen von XML-Schema (XSD)-Schlüsseleinschränkungen zu DataSet-Einschränkungen
In einem Schema können Sie mit Hilfe des key-Elements eine Schlüsseleinschränkung für ein Element oder ein Attribut angeben. Das Element oder Attribut, für das Sie eine Schlüsseleinschränkung angeben, muss eindeutige Werte in jeder Schemainstanz aufweisen und darf keine NULL-Werte enthalten.
Die Schlüsseleinschränkung ist der unique-Einschränkung ähnlich, außer dass die Spalte, für die eine Schlüsseleinschränkung definiert wird, keine NULL-Werte enthalten darf.
Die folgende Tabelle enthält die msdata-Attribute, die Sie im key-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" vorhanden ist, ist für die IsPrimaryKey-Einschränkungseigenschaft True festgelegt, wodurch sie zu einem Primärschlüssel wird. Für die AllowDBNull-Spalteneigenschaft ist False festgelegt, weil Primärschlüssel keine NULL-Werte enthalten dürfen. |
Beim Konvertieren eines Schemas, in dem eine Schlüsseleinschränkung angegeben ist, erstellt der Zuordnungsprozess eine unique-Einschränkung für die Tabelle, in der für die AllowDBNull-Spalteneigenschaft für jede Spalte in der Einschränkung False festgelegt ist. Für die IsPrimaryKey-Eigenschaft der unique-Einschränkung ist ebenfalls False festgelegt, es sei denn, Sie haben msdata:PrimaryKey="true"
für das key-Element angegeben. Dies ist mit einer unique-Einschränkung im Schema mit PrimaryKey="true"
identisch.
Im folgenden Schemabeispiel gibt das key-Element die Schlüsseleinschränkung für das CustomerID-Element an.
<xs:schema id="cod"
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:string" 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="MyDataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="Customers" />
</xs:choice>
</xs:complexType>
<xs:key msdata:PrimaryKey="true" msdata:ConstraintName="KeyCustID" name="KeyConstCustomerID" > <xs:selector xpath=".//Customers" /> <xs:field xpath="CustomerID" /> </xs:key>
</xs:element>
</xs:schema>
Das key-Element gibt an, dass die Werte für das untergeordnete CustomerID-Element des Customers-Elements eindeutige Werte aufweisen müssen und keine NULL-Werte enthalten dürfen. Beim Übersetzen des XML Schema Definition (XSD)-Sprachschemas erstellt der Zuordnungsprozess folgende Tabelle:
Customers(CustomerID, CompanyName, Phone)
Die XML-Schemazuordnung erstellt außerdem eine UniqueConstraint-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: False
Unique: True
ConstraintName: KeyCustID
Table: customers
Columns: CustomerID
IsPrimaryKey: True
Im generierten DataSet ist True für die IsPrimaryKey-Eigenschaft der UniqueConstraint festgelegt, weil das Schema msdata:PrimaryKey="true"
im key-Element angibt.
Der Wert der ConstraintName-Eigenschaft der UniqueConstraint im DataSet ist der Wert des msdata:ConstraintName-Attributs, das im key-Element des Schemas angegeben wurde.
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