Compartir a través de


Especificar relaciones entre elementos sin anidamiento

Cuando los elementos no están anidados, no se crean relaciones implícitas. Sin embargo, puede especificar explícitamente las relaciones entre los elementos que no están anidados mediante la anotación msdata:Relationship .

En el ejemplo siguiente se muestra un esquema XML en el que se especifica la anotación msdata:Relationship entre los elementos Order y OrderDetail , que no están anidados. La anotación msdata:Relationship se especifica como el elemento secundario del elemento Schema .

<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>  

El proceso de asignación de esquemas del lenguaje de definición de esquemas XML (XSD) crea un DataSet con tablas Order y OrderDetail y una relación especificada entre estas dos tablas, como se muestra a continuación.

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

Consulte también