Gerar relações de DataSet do esquema XML (XSD)
Em uma 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 de conjunto de dados dentro de um esquema XSD (linguagem de definição de esquema XML):
Especificar tipos complexos aninhados.
Usar a anotação msdata:Relationship.
Especificar 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 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 conjunto de dados 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/chave 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 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 parentkey e childkey e atributos envolvidos na relação. O processo de mapeamento usa essas informações para gerar tabelas no conjunto de dados 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 por sua vez 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 Conjunto de dados. O processo de mapeamento especifica apenas a relação; ele não especifica automaticamente nenhuma restrição sobre os valores nessas colunas, que é o que fazem 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 criadas implicitamente em um conjunto de dados quando elementos aninhados são encontrados no Esquema XML.
Mapear relações especificadas para elementos aninhados
Descreve como definir explicitamente as relações em um conjunto de dados para elementos aninhados no Esquema XML.
Especificar relações entre elementos sem nenhum aninhamento
Descreve como criar relações em um conjunto de dados entre elementos de esquema XML que não estão aninhados.
Seções relacionadas
Derivando a estrutura relacional do DataSet do esquema XML (XSD)
Descreve a estrutura relacional ou o esquema de um conjunto de dados que é criado a partir do esquema XML.
Mapeamento de restrições de esquema XML (XSD) para restrições de DataSet
Descreve os elementos do Esquema XML usados para criar restrições de chave exclusiva e estrangeira em um conjunto de dados.