Compartilhar via


Gerando relações de Dataset 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 DataSet relação dentro de um esquema XSD (linguagem de definição de esquema XML):

  • Especificar tipos complexos aninhados.

  • Usar a anotação msdata:Relationship.

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

Tipos complexos aninhados

Definições de tipo complexo 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 Order elemento.

<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 pai-filho para as tabelas geradas. Observe que essas colunas pai-filho especificam relações, o que não é o mesmo que especificar restrições de chave primária/estrangeira.

Anotação msdata:Relationship

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

<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 parentkey elementos e childkey atributos envolvidos na relação. O processo de mapeamento usa essas informações para gerar tabelas no DataSet e para criar a relação 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 Relationship elemento para criar uma relação pai-filho entre a OrderNumber coluna na Order tabela e a OrderNo coluna na OrderDetail tabela no DataSet. O processo de mapeamento especifica apenas a relação; ele não especifica automaticamente quaisquer restrições nos valores nessas colunas, assim como as restrições de chave primária/chave estrangeira em bancos de dados relacionais.

Nesta seção

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

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

Especificar relações entre elementos sem aninhamento Descreve como criar relações entre elementos de esquema XML que não são aninhados no DataSet.

Derivando a estrutura relacional do Conjunto de Dados do Esquema XML (XSD) Descreve a estrutura relacional, ou esquema, de um DataSet esquema criado a partir do esquema XSD (linguagem de definição de esquema XML).

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

Consulte também