Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Em uma representação relacional de dados, as tabelas individuais contêm linhas relacionadas umas às outras usando uma coluna ou um conjunto de colunas. No ADO.NET DataSet, a relação entre tabelas é implementada usando um DataRelation. Quando você cria um DataRelation, as relações pai-filho das colunas são gerenciadas somente por meio da relação. As tabelas e colunas são entidades separadas. Na representação hierárquica dos dados fornecidos pelo XML, as relações pai-filho são representadas por elementos pai que contêm elementos filho aninhados.
Para facilitar o aninhamento de objetos filho quando um DataSet é sincronizado com um XmlDataDocument ou gravado como dados XML usando WriteXml, DataRelation expõe uma propriedade Nested. Definir a propriedade Nested de um DataRelation para true faz com que as linhas filhas da relação sejam aninhadas na coluna mãe quando escritas como dados XML ou sincronizadas com um XmlDataDocument. A Nested propriedade do DataRelation é false, por padrão.
Por exemplo, considere o Conjunto de Dados a seguir.
' Assumes connection is a valid SqlConnection.
Dim customerAdapter As SqlDataAdapter = New SqlDataAdapter( _
"SELECT CustomerID, CompanyName FROM Customers", connection)
Dim orderAdapter As SqlDataAdapter = New SqlDataAdapter( _
"SELECT OrderID, CustomerID, OrderDate FROM Orders", connection)
connection.Open()
Dim dataSet As DataSet = New DataSet("CustomerOrders")
customerAdapter.Fill(dataSet, "Customers")
orderAdapter.Fill(dataSet, "Orders")
connection.Close()
Dim customerOrders As DataRelation = dataSet.Relations.Add( _
"CustOrders", dataSet.Tables("Customers").Columns("CustomerID"), _
dataSet.Tables("Orders").Columns("CustomerID"))
// Assumes connection is a valid SqlConnection.
SqlDataAdapter customerAdapter = new SqlDataAdapter(
"SELECT CustomerID, CompanyName FROM Customers", connection);
SqlDataAdapter orderAdapter = new SqlDataAdapter(
"SELECT OrderID, CustomerID, OrderDate FROM Orders", connection);
connection.Open();
DataSet dataSet = new DataSet("CustomerOrders");
customerAdapter.Fill(dataSet, "Customers");
orderAdapter.Fill(dataSet, "Orders");
connection.Close();
DataRelation customerOrders = dataSet.Relations.Add(
"CustOrders", dataSet.Tables["Customers"].Columns["CustomerID"],
dataSet.Tables["Orders"].Columns["CustomerID"]);
Como a propriedade Nested do objeto DataRelation não está definida para true neste DataSet, os objetos filho não são aninhados dentro dos elementos pai quando este DataSet é representado como dados XML. Transformar a representação XML de um DataSet conjunto de dadosrelacionado com relações de dados não aninhadas pode causar um desempenho lento. Recomendamos que você organize as relações de dados em camadas. Para fazer isso, defina a Nested propriedade como true. Em seguida, escreva código na folha de estilos XSLT que usa expressões de consulta XPath hierárquicas de cima para baixo para localizar e transformar os dados.
O exemplo de código a seguir mostra o resultado da chamada WriteXml no DataSet.
<CustomerOrders>
<Customers>
<CustomerID>ALFKI</CustomerID>
<CompanyName>Alfreds Futterkiste</CompanyName>
</Customers>
<Customers>
<CustomerID>ANATR</CustomerID>
<CompanyName>Ana Trujillo Emparedados y helados</CompanyName>
</Customers>
<Orders>
<OrderID>10643</OrderID>
<CustomerID>ALFKI</CustomerID>
<OrderDate>1997-08-25T00:00:00</OrderDate>
</Orders>
<Orders>
<OrderID>10692</OrderID>
<CustomerID>ALFKI</CustomerID>
<OrderDate>1997-10-03T00:00:00</OrderDate>
</Orders>
<Orders>
<OrderID>10308</OrderID>
<CustomerID>ANATR</CustomerID>
<OrderDate>1996-09-18T00:00:00</OrderDate>
</Orders>
</CustomerOrders>
Observe que o Customers elemento e os Orders elementos são mostrados como elementos irmãos. Se você quisesse que os Orders elementos aparecessem como filhos de seus respectivos elementos pai, a propriedade Nested do DataRelation precisaria ser definida como true e adicionar o seguinte:
customerOrders.Nested = True
customerOrders.Nested = true;
O código a seguir mostra como seria a saída resultante, com os Orders elementos aninhados dentro de seus respectivos elementos pai.
<CustomerOrders>
<Customers>
<CustomerID>ALFKI</CustomerID>
<Orders>
<OrderID>10643</OrderID>
<CustomerID>ALFKI</CustomerID>
<OrderDate>1997-08-25T00:00:00</OrderDate>
</Orders>
<Orders>
<OrderID>10692</OrderID>
<CustomerID>ALFKI</CustomerID>
<OrderDate>1997-10-03T00:00:00</OrderDate>
</Orders>
<CompanyName>Alfreds Futterkiste</CompanyName>
</Customers>
<Customers>
<CustomerID>ANATR</CustomerID>
<Orders>
<OrderID>10308</OrderID>
<CustomerID>ANATR</CustomerID>
<OrderDate>1996-09-18T00:00:00</OrderDate>
</Orders>
<CompanyName>Ana Trujillo Emparedados y helados</CompanyName>
</Customers>
</CustomerOrders>