Partilhar via


Gerando relações de conjunto de dados a partir do esquema XML (XSD)

Em um DataSet, você forma uma associação entre duas ou mais colunas criando uma relação pai-filho. Há três maneiras de representar uma relação DataSet dentro de um esquema XSD (XML Schema Definition Language):

  • Especifique tipos complexos aninhados.

  • Use a anotação msdata:Relationship .

  • Especifique um xs:keyref sem a anotação msdata:ConstraintOnly .

Tipos complexos aninhados

Definições de tipo complexas aninhadas em um esquema indicam as relações pai-filho dos elementos. O fragmento de esquema XML a seguir mostra que OrderDetail é um elemento filho do elemento Order .

<xs:element name="Order">  
  <xs:complexType>  
     <xs:sequence>
       <xs:element name="OrderDetail" />  
           <xs:complexType>
           </xs:complexType>  
     </xs:sequence>  
  </xs:complexType>  
</xs:element>  

O processo de mapeamento de esquema XML cria tabelas no DataSet que correspondem aos tipos complexos aninhados no esquema. Ele também cria colunas adicionais que são usadas como colunas filho pai-para as tabelas geradas. Observe que essas colunas filho pai-especificam relações, o que não é o mesmo que especificar restrições de chave primária/chave estrangeira.

msdata:Anotação de relacionamento

A anotação msdata:Relationship permite especificar explicitamente relações pai-filho entre elementos no esquema que não estão aninhados. O exemplo a seguir mostra a estrutura do elemento Relationship .

<msdata:Relationship name="CustOrderRelationship"
msdata:parent=""
msdata:child=""
msdata:parentkey=""
msdata:childkey="" />  

Os atributos da anotação msdata:Relationship identificam os elementos envolvidos na relação pai-filho, bem como os elementos e atributos parentkey e childkey envolvidos na relação. O processo de mapeamento usa essas informações para gerar tabelas no DataSet e para criar a relação de chave primária/chave estrangeira entre essas tabelas.

Por exemplo, o fragmento de esquema a seguir especifica os elementos Order e OrderDetail no mesmo nível (não aninhados). O esquema especifica uma anotação msdata:Relationship , que especifica a relação pai-filho entre esses dois elementos. Nesse caso, uma relação explícita deve ser especificada usando a anotação msdata:Relationship .

 <xs:element name="MyDataSet" msdata:IsDataSet="true">  
  <xs:complexType>  
    <xs:choice maxOccurs="unbounded">  
        <xs:element name="OrderDetail">  
          <xs:complexType>  
  
          </xs:complexType>  
       </xs:element>  
       <xs:element name="Order">  
          <xs:complexType>  
  
          </xs:complexType>  
       </xs:element>  
    </xs:choice>  
  </xs:complexType>  
</xs:element>  
   <xs:annotation>  
     <xs:appinfo>  
       <msdata:Relationship name="OrdOrdDetailRelation"  
          msdata:parent="Order"  
          msdata:child="OrderDetail"
          msdata:parentkey="OrderNumber"  
          msdata:childkey="OrderNo"/>  
     </xs:appinfo>  
  </xs:annotation>  

O processo de mapeamento usa o elemento Relationship para criar uma relação pai-filho entre a coluna OrderNumber na tabela Order e a coluna OrderNo na tabela OrderDetail no DataSet. O processo de mapeamento especifica apenas a relação; Ele não especifica automaticamente quaisquer restrições sobre os valores nessas colunas, assim como as restrições de chave primária/chave estrangeira em bancos de dados relacionais.

Nesta Secção

Mapear relações implícitas entre elementos de esquema aninhados
Descreve as restrições e relações que são criadas implicitamente em um DataSet quando elementos aninhados são encontrados no esquema XML.

Relações de mapa especificadas para elementos aninhados
Descreve como definir explicitamente relações em um DataSet para elementos aninhados no esquema XML.

Especificar relações entre elementos sem aninhamento
Descreve como criar relações em um DataSet entre elementos do esquema XML que não estão aninhados.

Derivando a estrutura relacional do conjunto de dados do esquema XML (XSD)
Descreve a estrutura relacional, ou esquema, de um DataSet que é criado a partir do esquema XSD (XML Schema Definition Language).

Mapeando restrições de esquema XML (XSD) para restrições de conjunto de dados
Descreve os elementos do esquema XML usados para criar restrições de chave exclusiva e estrangeira em um DataSet.

Consulte também