Zuordnen von keyref-XML-Schema (XSD)-Einschränkungen zu DataSet-Einschränkungen
Mit dem keyref-Element können Sie Verknüpfungen zwischen Elementen innerhalb eines Dokuments erstellen. Dies ist einer Fremdschlüsselbeziehung in einer relationalen Datenbank ähnlich. Wenn ein Schema das keyref-Element angibt, wird das Element während des Schemazuordnungsprozesses in eine entsprechende Fremdschlüsseleinschränkung für die Spalten in der Tabelle des DataSets konvertiert. Außerdem generiert das keyref-Element standardmäßig eine Beziehung, wobei die Eigenschaften ParentTable, ChildTable, ParentColumn und ChildColumn der Beziehung angegeben werden.
Die folgende Tabelle enthält die msdata-Attribute, die Sie im keyref-Element angeben können.
Attributname | Beschreibung |
---|---|
msdata:ConstraintOnly | Wenn ConstraintOnly="true" für das keyref-Element im Schema angegeben wurde, wird eine Einschränkung, jedoch keine Beziehung erstellt. Wenn dieses Attribut nicht angegeben (oder False festgelegt) wurde, wird die Einschränkung und die Beziehung im DataSet erstellt. |
msdata:ConstraintName | Wenn das ConstraintName-Attribut angegeben ist, wird sein Wert als Einschränkungsname verwendet. Andernfalls enthält das name-Attribut des keyref-Elements im Schema den Einschränkungsnamen im DataSet. |
msdata:UpdateRule | Wenn das UpdateRule-Attribut im keyref-Element im Schema angegeben wurde, wird sein Wert der UpdateRule-Einschränkungseigenschaft im DataSet zugeordnet. Andernfalls wird die UpdateRule-Eigenschaft auf Überlappend festgelegt. |
msdata:DeleteRule | Wenn das DeleteRule-Attribut im keyref-Element im Schema angegeben wurde, wird sein Wert der DeleteRule-Einschränkungseigenschaft im DataSet zugeordnet. Andernfalls wird die DeleteRule-Eigenschaft auf Überlappend festgelegt. |
msdata:AcceptRejectRule | Wenn das AcceptRejectRule-Attribut im keyref-Element im Schema angegeben wurde, wird sein Wert der AcceptRejectRule-Einschränkungseigenschaft im DataSet zugeordnet. Andernfalls wird für die AcceptRejectRule-Eigenschaft Keine festgelegt. |
Das folgende Beispiel enthält ein Schema, das die Beziehungen key und keyref zwischen dem untergeordneten OrderNumber-Element des Order-Elements und dem untergeordneten OrderNo-Element des OrderDetail-Elements angibt.
In diesem Beispiel bezieht sich das untergeordnete OrderNumber-Element des OrderDetail-Elements auf das untergeordnete OrderNo-Element des Order-Elements.
<xs:schema id="MyDataSet"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="MyDataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="OrderDetail">
<xs:complexType>
<xs:sequence>
<xs:element name="OrderNo" type="xs:integer" />
<xs:element name="ItemNo" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Order">
<xs:complexType>
<xs:sequence>
<xs:element name="OrderNumber" type="xs:integer" />
<xs:element name="EmpNumber" type="xs:integer" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:key name="OrderNumberKey" > <xs:selector xpath=".//Order" /> <xs:field xpath="OrderNumber" /> </xs:key> <xs:keyref name="OrderNoRef" refer="OrderNumberKey"> <xs:selector xpath=".//OrderDetail" /> <xs:field xpath="OrderNo" /> </xs:keyref>
</xs:element>
</xs:schema>
Die Schemazuordnung der XML Schema Definition (XSD)-Sprache erstellt folgendes DataSet mit zwei Tabellen:
OrderDetail(OrderNo, ItemNo) and
Order(OrderNumber, EmpNumber)
Zusätzlich definiert DataSet folgende Einschränkungen:
Eine unique-Einschränkung für die Order-Tabelle.
Table: Order Columns: OrderNumber ConstraintName: OrderNumberKey Type: UniqueConstraint IsPrimaryKey: False
Eine Beziehung zwischen den Tabellen Order und OrderDetail. Für die Nested-Eigenschaft wird False festgelegt, weil die beiden Elemente nicht im Schema geschachtelt sind.
ParentTable: Order ParentColumns: OrderNumber ChildTable: OrderDetail ChildColumns: OrderNo ParentKeyConstraint: OrderNumberKey ChildKeyConstraint: OrderNoRef RelationName: OrderNoRef Nested: False
Eine Fremdschlüsseleinschränkung für die OrderDetail-Tabelle.
ConstraintName: OrderNoRef Type: ForeignKeyConstraint Table: OrderDetail Columns: OrderNo RelatedTable: Order RelatedColumns: OrderNumber
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