Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: .NET Framework
.NET
.NET Standard
A SqlDataAdapter contém uma coleção de zero ou mais DataTableMapping objetos na sua TableMappings propriedade. Um DataTableMapping estabelece um mapeamento principal entre os dados devolvidos de uma consulta a uma fonte de dados e um DataTable. O nome DataTableMapping pode ser passado em vez do nome DataTable para o método Fill do DataAdapter. O exemplo seguinte cria um DataTableMapping chamado AuthorsMapping para a tabela Authors .
workAdapter.TableMappings.Add("AuthorsMapping", "Authors");
Um DataTableMapping permite-lhe usar nomes de colunas numa DataTable que são diferentes dos da base de dados. O DataAdapter usa o mapeamento para corresponder às colunas quando a tabela é atualizada.
Observação
Se não especificar um TableName ou um nome DataTableMapping ao chamar o método Fill ou Update do DataAdapter, o DataAdapter procura um DataTableMapping chamado "Table". O TableName da DataTable é "Table" se esse DataTableMapping não existir. Pode especificar um DataTableMapping como predefinido ao criar um DataTableMapping com o nome de "Table".
O exemplo de código seguinte cria um DataTableMapping (a partir do System.Data.Common namespace) e torna-o o mapeamento padrão para o DataAdapter especificado, nomeando-o "Table". O exemplo depois mapeia as colunas da primeira tabela nos resultados da consulta (a tabela Clientes da base de dados Northwind) para um conjunto de nomes mais fáceis de usar na tabela Northwind Customers na DataSet. Para colunas que não são mapeadas, o nome da coluna da fonte de dados é usado.
// Assumes that connection is a valid SqlConnection object.
DataSet custDataSet = new DataSet();
SqlDataAdapter custAdapter = new SqlDataAdapter(
"SELECT * FROM dbo.Customers", connection);
DataTableMapping mapping =
custAdapter.TableMappings.Add("Table", "NorthwindCustomers");
mapping.ColumnMappings.Add("CompanyName", "Company");
mapping.ColumnMappings.Add("ContactName", "Contact");
mapping.ColumnMappings.Add("PostalCode", "ZIPCode");
custAdapter.Fill(custDataSet);
Em situações mais avançadas, pode decidir que quer o mesmo DataAdapter para suportar o carregamento de diferentes tabelas com diferentes mapeamentos. Para isso, adicione objetos adicionais de DataTableMapping .
Quando o método Fill recebe uma instância de um DataSet e um nome de DataTableMapping, se existir um mapeamento com esse nome, ele é utilizado; caso contrário, é utilizada uma DataTable com esse nome.
Os exemplos seguintes criam um DataTableMapping com o nome Clientes e um DataTable chamado BizTalkSchema. O exemplo então mapeia as linhas devolvidas pela instrução SELECT para a Tabela de Dados BizTalkSchema.
// Assumes that connection is a valid SqlConnection object.
DataSet custDataSet = new DataSet();
SqlDataAdapter custAdapter = new SqlDataAdapter(
"SELECT * FROM dbo.Customers", connection);
// The DataTableMapping is implemented ITableMapping.
ITableMapping mapping =
custAdapter.TableMappings.Add("Table", "BizTalkSchema");
mapping.ColumnMappings.Add("CustomerID", "ClientID");
mapping.ColumnMappings.Add("CompanyName", "ClientName");
mapping.ColumnMappings.Add("ContactName", "Contact");
mapping.ColumnMappings.Add("PostalCode", "ZIP");
custAdapter.Fill(custDataSet);
Observação
Se não for fornecido um nome de coluna de origem para um mapeamento de colunas, os nomes por defeito serão gerados automaticamente. O mapeamento de colunas recebe um nome predefinido incremental, "SourceColumnN", começando por "SourceColumn1" se para mapeamento de colunas não for fornecida nenhuma coluna de origem.
Observação
Se não for fornecido um nome de tabela fonte para um mapeamento de tabela, nomes padrão serão gerados automaticamente. O mapeamento de tabela recebe um nome padrão incremental de SourceTableN, começando por SourceTable1 se não for fornecido um nome de tabela de origem para um mapeamento de tabela.
Observação
Recomendamos que evite a convenção de nomenclatura SourceColumnN para um mapeamento de colunas, ou SourceTableN para um mapeamento de tabelas, pois o nome que fornecer pode entrar em conflito com um nome de mapeamento de coluna padrão existente na ColumnMappingCollection ou nome de mapeamento de tabela na DataTableMappingCollection. Se o nome fornecido já existir, uma exceção será lançada.
Lidar com múltiplos conjuntos de resultados
Se o seu SelectCommand devolver múltiplas tabelas, o Fill gera automaticamente nomes de tabelas com valores incrementais para as tabelas no DataSet, começando pelo nome da tabela especificado e continuando na forma TableNameN, começando por TableName1. Você pode usar mapeamentos de tabela para mapear o nome da tabela gerada automaticamente para um nome que você deseja especificar para a tabela no DataSet. Por exemplo, para um SelectCommand que devolve duas tabelas, Clientes e Encomendas, emita a seguinte chamada para Preencher.
adapter.Fill(customersDataSet, "Customers");
No DataSet são criadas duas tabelas: Clientes e Clientes1. Pode usar mapeamentos de tabela para garantir que a segunda tabela se chama Orders em vez de Customers1. Para isso, mapeie a tabela fonte de Customers1 para a tabela DataSet Orders, como mostrado no exemplo seguinte.
// Assumes that connection is a valid SqlConnection object.
string queryString =
"SELECT * FROM dbo.Customers; SELECT * FROM dbo.Orders;";
SqlDataAdapter adapter = new SqlDataAdapter(queryString, connection);
DataSet customersDataSet = new DataSet();
adapter.TableMappings.Add("Customers1", "Orders");
adapter.Fill(customersDataSet, "Customers");