Udostępnij przez


Określ relacje między elementami bez użycia zagnieżdżania

Jeśli elementy nie są zagnieżdżone, nie są tworzone żadne niejawne relacje. Można jednak jawnie sprecyzować relacje między elementami, które nie są zagnieżdżone, przy użyciu adnotacji msdata:Relationship.

W poniższym przykładzie przedstawiono schemat XML, w którym adnotacja msdata:Relationship jest określona między elementami Order i OrderDetail , które nie są zagnieżdżone. Adnotacja msdata:Relationship jest określona jako element podrzędny Schema elementu .

<xs:schema id="MyDataSet" xmlns=""
             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:string" />
           <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:string" />
           <xs:element name="EmpNumber" type="xs:string" />
         </xs:sequence>
       </xs:complexType>
      </xs:element>
    </xs:choice>
  </xs:complexType>

  </xs:element>
   <xs:annotation>
     <xs:appinfo>
       <msdata:Relationship name="OrdOrderDetailRelation"
                            msdata:parent="Order"
                            msdata:child="OrderDetail"
                            msdata:parentkey="OrderNumber"
                            msdata:childkey="OrderNo"/>
     </xs:appinfo>
  </xs:annotation>
</xs:schema>

Proces mapowania schematu języka XSD (XML Schema Definition Language) tworzy schemat z tabelami DataSet, Order i OrderDetail, oraz relacją określoną między tymi dwiema tabelami, jak pokazano poniżej.

RelationName: OrdOrderDetailRelation
ParentTable: Order
ParentColumns: OrderNumber
ChildTable: OrderDetail
ChildColumns: OrderNo
Nested: False

Zobacz także