Freigeben über


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