VB.NET - Mapeando tabelas da fonte de dados para o DataSet


 

A estrutura de tabelas em um DataSet nem sempre coincide com a estrutura das tabelas na fonte de dados. Algumas razões para isto podem ser :

A fim de coincidir tabelas e colunas na fonte de dados com aquelas no dataset você pode definir a propriedade TableMappings de um data adapter. Esta propriedade contém informação que estabelece uma correspondência entre as colunas das tabelas da fonte de dados e as colunas das tabelas do datset. Quando o data adapter lê dados de uma fonte de dados , a propriedade TableMappings é usada para determinar onde escrever no DataSet os dados.

A seguir vou mostrar como você pode definir o mapeamento das tabelas no data adapter. Vamos supor que você esta trabalhando com um esquema de dados que recebeu ; você terá que mapear as colunas de uma tabela no seu banco de dados (no nosso caso a tabela costumers do banco de dados northwind.mdb) para as colunas definidas no esquema de dados.

- Inicie um novo projeto no Visual Studio.NET com as seguintes características (sinta-se a vontade para alterar a seu gosto.)

  1. Project Types : Visual Basic .NET
  2. Templates : Class Library
  3. Name : MapTabelas
  4. Location : c:\vbnet\MapTabelas

O esquema com o qual você vai ter que é o seguinte :(Perceba que a estrutura definida para o esquema é diferente da estrutura da tabela Customers)

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="dsCustomers" targetNamespace="http://www.tempuri.org/dsCustomers.xsd" _
    xmlns="http://www.tempuri.org/dsCustomers.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" _
    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" elementFormDefault="qualified">
   <xs:element name="dsCustomers" msdata:IsDataSet="true">
      <xs:complexType>
         <xs:choice maxOccurs="unbounded">
            <xs:element name="Customers">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="CustID" type="xs:string" />
                     <xs:element name="CompName" type="xs:string" />
                     <xs:element name="ContName" type="xs:string" minOccurs="0" />
                     <xs:element name="ContTitle" type="xs:string" minOccurs="0" />
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
         </xs:choice>
      </xs:complexType> 
         <xs:key name="Constraint1" msdata:PrimaryKey="true">
            <xs:selector xpath=".//Customers" />
            <xs:field xpath="CustID" />
         </xs:key>
      </xs:element>
   </xs:schema>

 

A primeira coisa a fazer é incluir o esquema acima no seu projeto.

Vamos a segunda etapa do nosso projeto: Incluir uma instância de um DataSet no seu projeto

A terceira etapa do projeto será criar o data adapter e o Table Mapping

Com o dataset definido você pode configurar o data adapter que irá ler os dados do banco de dados e preencherá o dataset. O data adapter conterá o mapeamento das tabelas que fará coincidir o nome das colunas do banco de dados com o dataset.]

Vamos agora criar e configurar o Table Mapping

Agora vamos testar o projeto.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

   OleDbDataAdapter1.Fill(DsCustomers1)

End Sub

 

Pressione  F5 para rodar o formulário. Quando o formulário for exibido os dados da tabela Customers do banco de dados Northwind.mdb serão exibidos usando as colunas mapeadas.

 

 

Até o próximo artigo...


José Carlos Macoratti