Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: .NET Framework
.NET
Standard
A SqlDataAdapter obsahuje kolekci nulových nebo více DataTableMapping objektů ve své TableMappings vlastnosti. DataTableMapping poskytuje primární mapování mezi daty vrácenými z dotazu na zdroj dat a DataTable. Název DataTableMapping lze předat místo názvu DataTable metodě FillDataAdapter. Následující příklad vytvoří DataTableMapping s názvem AuthorsMapping pro tabulku Authors .
workAdapter.TableMappings.Add("AuthorsMapping", "Authors");
DataTableMapping umožňuje používat názvy sloupců v tabulce DataTable, které se liší od názvů v databázi. DataAdapter používá mapování tak, aby odpovídaly sloupcům při aktualizaci tabulky.
Poznámka:
Pokud při volání metody Fill nebo Update objektu DataAdapter nezadáte název TableName nebo DataTableMapping, dataAdapter hledá DataTableMapping s názvem Table. TableNameDataTable je "Table", pokud DataTableMapping neexistuje. Výchozí dataTableMapping můžete zadat tak, že vytvoříte dataTableMapping s názvem "Tabulka".
Následující příklad kódu vytvoří DataTableMapping (z System.Data.Common oboru názvů) a nastaví ho jako výchozí mapování pro zadaný objekt DataAdapter pojmenováním tabulky. Příklad pak namapuje sloupce z první tabulky ve výsledku dotazu (z tabulky Customers z databáze Northwind) na sadu uživatelsky přívětivějších názvů v tabulce Northwind Customers v DataSet. U sloupců, které nejsou namapované, se použije název sloupce ze zdroje dat.
// 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);
V pokročilejších situacích se můžete rozhodnout, že chcete, aby stejný datovýadapter podporoval načítání různých tabulek s různými mapováními. Uděláte to tak, že přidáte další objekty DataTableMapping .
Když je metodě Fill předána instance DataSet a název DataTableMapping, pokud existuje mapování s tímto názvem, použije se; jinak se použije DataTable s tímto názvem.
Následující příklady vytvoří DataTableMapping s názvem Customers a názvem DataTableBizTalkSchema. Příklad pak mapuje řádky vrácené příkazem SELECT na BizTalkSchemaDataTable.
// 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);
Poznámka:
Pokud název zdrojového sloupce není zadán pro mapování sloupců, výchozí názvy se automaticky vygenerují. Mapování sloupců má přírůstkový výchozí název SourceColumnN počínajesourceColumn1 , pokud pro mapování sloupců není zadaný žádný zdrojový sloupec.
Poznámka:
Pokud pro mapování tabulky není zadaný název zdrojové tabulky, automaticky se vygenerují výchozí názvy. Mapování tabulky má inkrementální výchozí název SourceTableN počínaje tabulkou SourceTable1 , pokud pro mapování tabulky není zadán žádný název zdrojové tabulky.
Poznámka:
Doporučujeme, abyste se vyhnuli konvenci pojmenování SourceColumnN pro mapování sloupců nebo SourceTableN pro mapování tabulky, protože zadaný název může být v konfliktu s existujícím výchozím názvem mapování sloupců v názvu Mapování sloupce ColumnMappingCollection nebo název mapování tabulky v DataTableMappingCollection. Pokud zadaný název již existuje, vyvolá se výjimka.
Zpracování více sad výsledků
Pokud selectCommand vrátí více tabulek, Fill automaticky vygeneruje názvy tabulek s přírůstkovými hodnotami pro tabulky v datové sadě, počínaje zadaným názvem tabulky a pokračováním ve formuláři TableNameN počínaje TableName1. Pomocí mapování tabulek můžete namapovat automaticky vygenerovaný název tabulky na název, který chcete zadat pro tabulku v datové sadě. Například pro SelectCommand , který vrací dvě tabulky, Customers a Orders, zadejte následující volání Fill.
adapter.Fill(customersDataSet, "Customers");
V datové sadě se vytvoří dvě tabulky: Zákazníci aZákazníci1. Pomocí mapování tabulek můžete zajistit, aby se druhá tabulka jmenovala Objednávky místo Customers1. Uděláte to tak, že namapujte zdrojovou tabulku Customers1 na tabulku Objednávkydatové sady, jak je znázorněno v následujícím příkladu.
// 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");