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.
A DataAdapter 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 DataTable názvu Fill metodě DataAdapter. Následující příklad vytvoří DataTableMapping pojmenované AuthorsMapping pro tabulku Authors.
workAdapter.TableMappings.Add("AuthorsMapping", "Authors")
workAdapter.TableMappings.Add("AuthorsMapping", "Authors");
A DataTableMapping umožňuje používat názvy sloupců v DataTable, které se liší od těch v databázi.
DataAdapter používá mapování k porovnání sloupců při aktualizaci tabulky.
Pokud při volání TableName nebo DataTableMapping metody Fill nezadáte název Update nebo , DataAdapter vyhledá tabulku pojmenovanou DataTableMapping. Pokud neexistuje DataTableMapping, TableNameDataTable je "Table". Výchozí hodnotu DataTableMapping můžete zadat tak, že vytvoříte DataTableMapping tabulku s názvem "Tabulka".
Následující příklad kódu vytvoří DataTableMapping (z oboru názvů System.Data.Common), nastaví ho jako výchozí mapování pro určené DataAdapter a pojmenuje ho "Table". Příklad pak mapuje sloupce z první tabulky ve výsledku dotazu ( Customers tabulka Northwind databáze) na sadu uživatelsky přívětivějších názvů v tabulce Northwind Customers v tabulce DataSet. U sloupců, které nejsou namapované, se použije název sloupce ze zdroje dat.
Dim mapping As DataTableMapping = _
adapter.TableMappings.Add("Table", "NorthwindCustomers")
mapping.ColumnMappings.Add("CompanyName", "Company")
mapping.ColumnMappings.Add("ContactName", "Contact")
mapping.ColumnMappings.Add("PostalCode", "ZIPCode")
adapter.Fill(custDS)
DataTableMapping mapping =
adapter.TableMappings.Add("Table", "NorthwindCustomers");
mapping.ColumnMappings.Add("CompanyName", "Company");
mapping.ColumnMappings.Add("ContactName", "Contact");
mapping.ColumnMappings.Add("PostalCode", "ZIPCode");
adapter.Fill(custDS);
V pokročilejších situacích se můžete rozhodnout, že chcete, aby stejný DataAdapter podporoval načítání různých tabulek s různými mapováními. Uděláte to jednoduše tak, že přidáte další DataTableMapping objekty.
Fill Když je metodě předána instance DataSet a název DataTableMapping, pokud mapování s tímto názvem existuje, použije se toto mapování; jinak se použije DataTable s tímto názvem.
Následující příklady vytvoří DataTableMapping s názvem Customers a DataTable s názvem BizTalkSchema. Příklad pak mapuje řádky vrácené příkazem SELECT na BizTalkSchematabulku DataTable.
Dim mapping As ITableMapping = _
adapter.TableMappings.Add("Customers", "BizTalkSchema")
mapping.ColumnMappings.Add("CustomerID", "ClientID")
mapping.ColumnMappings.Add("CompanyName", "ClientName")
mapping.ColumnMappings.Add("ContactName", "Contact")
mapping.ColumnMappings.Add("PostalCode", "ZIP")
adapter.Fill(custDS, "Customers")
ITableMapping mapping =
adapter.TableMappings.Add("Customers", "BizTalkSchema");
mapping.ColumnMappings.Add("CustomerID", "ClientID");
mapping.ColumnMappings.Add("CompanyName", "ClientName");
mapping.ColumnMappings.Add("ContactName", "Contact");
mapping.ColumnMappings.Add("PostalCode", "ZIP");
adapter.Fill(custDS, "Customers");
Poznámka:
Pokud název zdrojového sloupce není zadán pro mapování sloupců nebo není zadán název zdrojové tabulky pro mapování tabulky, výchozí názvy se automaticky vygenerují. Pokud pro mapování sloupců není zadán žádný zdrojový sloupec, je mapování sloupců přiřazeno přírůstkovým výchozím názvem SourceColumnN počínajesourceColumn1. Pokud pro mapování tabulky není zadán žádný název zdrojové tabulky, je mapování tabulky dáno přírůstkovým výchozím názvem SourceTableN počínaje tabulkou SourceTable1.
Poznámka:
Doporučujeme, abyste se vyhnuli konvenci pojmenování SourceColumnN pro mapování sloupců nebo SourceTableN pro mapování tabulek, protože zadaný název může kolidovat s existujícím výchozím názvem mapování sloupců nebo tabulek ve ColumnMappingCollection kolekci DataTableMappingCollection. Pokud zadaný název již existuje, vyvolá se výjimka.
Zpracování více sad výsledků
Pokud vrátíte SelectCommand 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ý vrátí dvě tabulky, Customers a Orders, použijte následující volání Fill.
adapter.Fill(customersDataSet, "Customers")
adapter.Fill(customersDataSet, "Customers");
V datové sadě se vytvoří dvě tabulky: Customers a Customers1. Mapování tabulek můžete použít k zajištění, aby druhá tabulka byla pojmenovaná Orders místo Customers1. Uděláte to tak, že namapuje zdrojovou tabulku Customers1 na DataSet tabulku Objednávky, jak je znázorněno v následujícím příkladu.
adapter.TableMappings.Add("Customers1", "Orders")
adapter.Fill(customersDataSet, "Customers")
adapter.TableMappings.Add("Customers1", "Orders");
adapter.Fill(customersDataSet, "Customers");