Zuordnen von XSD-'keyref'-Schlüsseleinschränkungen (XML-Schema) zu DataSet-Einschränkungen
Aktualisiert: November 2007
Mit dem keyref-Element können Sie Links zwischen Elementen innerhalb eines Dokuments erstellen. Dies ist mit einer Fremdschlüsselbeziehung in einer relationalen Datenbank vergleichbar. 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 DataSet konvertiert. In der Standardeinstellung generiert das keyref-Element außerdem eine Beziehung, wobei die Eigenschaften ParentTable, ChildTable, ParentColumn und ChildColumn der Beziehung angegeben werden.
In der folgenden Tabelle werden die msdata-Attribute aufgelistet, die im keyref-Element angegeben werden können.
Attributname |
Beschreibung |
---|---|
msdata:ConstraintOnly |
Wenn für das keyref-Element im Schema ConstraintOnly="true" angegeben wurde, wird eine Einschränkung, jedoch keine Beziehung erstellt. Wenn dieses Attribut nicht angegeben wird (oder auf False festgelegt ist), werden im DataSet sowohl die Einschränkung als auch die Beziehung erstellt. |
msdata:ConstraintName |
Wenn das ConstraintName-Attribut angegeben ist, wird dessen Wert als Einschränkungsname verwendet. Andernfalls stellt das name-Attribut des keyref-Elements im Schema den Einschränkungsnamen im DataSet bereit. |
msdata:UpdateRule |
Wenn das UpdateRule-Attribut im keyref-Element im Schema angegeben wurde, wird dessen Wert der UpdateRule-Einschränkungseigenschaft im DataSet zugeordnet. Andernfalls wird die UpdateRule-Eigenschaft auf Cascade festgelegt. |
msdata:DeleteRule |
Wenn das DeleteRule-Attribut im keyref-Element im Schema angegeben wurde, wird dessen Wert der DeleteRule-Einschränkungseigenschaft im DataSet zugeordnet. Andernfalls wird die DeleteRule-Eigenschaft auf Cascade festgelegt. |
msdata:AcceptRejectRule |
Wenn das AcceptRejectRule-Attribut im keyref-Element im Schema angegeben wurde, wird dessen Wert der AcceptRejectRule-Einschränkungseigenschaft im DataSet zugeordnet. Andernfalls wird die AcceptRejectRule-Eigenschaft auf None festgelegt. |
Das folgende Beispiel enthält ein Schema, das die key-Beziehung und die keyref-Beziehung zwischen dem untergeordneten OrderNumber-Element des Order-Elements dem untergeordneten OrderNo-Element des OrderDetail-Elements angibt.
Im Beispiel bezieht sich das untergeordnete OrderNumber-Element des OrderDetail-Elements auf das untergeordnete OrderNo-Schlüsselelement 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>
Der Zuordnungsprozess des XSD-Schemas (XML Schema Definition Language) erstellt das folgende DataSet mit zwei Tabellen:
OrderDetail(OrderNo, ItemNo) and
Order(OrderNumber, EmpNumber)
Zusätzlich werden im DataSet die folgenden Einschränkungen definiert:
Eine eindeutige Einschränkung für die Order-Tabelle.
Table: Order Columns: OrderNumber ConstraintName: OrderNumberKey Type: UniqueConstraint IsPrimaryKey: False
Eine Beziehung zwischen der Order-Tabelle und der OrderDetail-Tabelle. Die Nested-Eigenschaft ist auf False festgelegt, da die zwei Elemente im Schema nicht 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
Konzepte
Generieren von DataSet-Beziehungen aus einem XML-Schema (XSD)
Weitere Ressourcen
Zuordnen von XSD-Einschränkungen (XML-Schema) zu DataSet-Einschränkungen