Mappare le relazioni specificate per gli elementi annidati (ADO.NET)
Per specificare esplicitamente il mapping tra due elementi qualsiasi dello schema, è possibile includere nello schema l'annotazione msdata:Relationship. Non è necessario che i due elementi specificati nell'annotazione msdata:Relationship siano annidati nello schema. L'annotazione msdata:Relationship viene utilizzata nello schema dal processo di mapping per generare la relazione di chiave primaria/chiave esterna tra le due colonne.
Nell'esempio seguente viene illustrato un XML Schema in cui l'elemento OrderDetail è un elemento figlio di Order. L'annotazione msdata:Relationship consente di identificare tale relazione padre-figlio e di specificare che la colonna OrderNumber della tabella Order risultante è correlata alla colonna OrderNo della tabella OrderDetail risultante.
<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="Order">
<xs:complexType>
<xs:sequence>
<xs:element name="OrderNumber" type="xs:string" />
<xs:element name="EmpNumber" type="xs:string" />
<xs:element name="OrderDetail">
<xs:annotation>
<xs:appinfo>
<msdata:Relationship name="OrdODRelation"
msdata:parent="Order"
msdata:child="OrderDetail"
msdata:parentkey="OrderNumber"
msdata:childkey="OrderNo"/>
</xs:appinfo>
</xs:annotation>
<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:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Il processo di mapping di XML Schema consente di creare nell'oggetto DataSet i seguenti elementi:
Una tabella Order e una tabella OrderDetail.
Order(OrderNumber, EmpNumber) OrderDetail(OrderNo, ItemNo)
Una relazione tra le tabelle Order e OrderDetail. La proprietà Nested per questa relazione viene impostata su True, poiché gli elementi Order e OrderDetail sono annidati nello schema.
ParentTable: Order ParentColumns: OrderNumber ChildTable: OrderDetail ChildColumns: OrderNo RelationName: OrdODRelation Nested: True
Il processo di mapping non consente di creare alcun vincolo.
Vedere anche
Concetti
Generazione delle relazioni del DataSet da XML Schema (XSD)
Altre risorse
Mapping dei vincoli di XML Schema (XSD) ai vincoli del DataSet