Přidání existujících omezení do datové sady
Metoda Fill objektu DataAdapter vyplňuje pouze sloupce a řádky DataSet tabulky ze zdroje dat. Omezení jsou však obvykle nastavena zdrojem dat, metoda Fill ve výchozím nastavení nepřidá tyto informace schématu do datové sady. Chcete-li naplnit dataSet existující informace o omezení primárního klíče ze zdroje dat, můžete buď volat FillSchema metoda DataAdapter, nebo nastavit MissingSchemaAction Vlastnost DataAdapter DataAdapter AddWithKey před voláním Fill. Tím zajistíte, aby omezení primárního klíče v datové sadě odrážela omezení ve zdroji dat. Informace o omezení cizího klíče nejsou zahrnuty a musí být vytvořeny explicitně, jak je znázorněno v omezeních tabulky DataTable.
Přidání informací o schématu do datové sady před vyplněním dat zajišťuje, že omezení primárního DataTable klíče jsou součástí objektů v sadě DataSet. V důsledku toho se při dalších voláních k vyplnění datové sady používají informace o sloupci primárního klíče ke spárování nových řádků ze zdroje dat s aktuálními řádky v každé tabulce DataTable a aktuální data v tabulkách se přepíšou daty ze zdroje dat. Bez informací o schématu se nové řádky ze zdroje dat připojí k datové sadě, což vede k duplicitním řádkům.
Poznámka:
Pokud je sloupec ve zdroji dat identifikován jako automatické přírůstky, FillSchema metoda nebo Fill metoda s MissingSchemaAction AddWithKey, vytvoří DataColumn s AutoIncrement vlastnost nastavenou na true
. Budete ale muset nastavit hodnoty AutoIncrementStep a AutoIncrementSeed sami. Další informace o automatickém přírůstku sloupců naleznete v tématu Vytváření sloupců automatického přírůstku.
Použití FillSchema nebo nastavení MissingSchemaAction na AddWithKey vyžaduje dodatečné zpracování ve zdroji dat k určení informací o primárním klíči sloupce. Toto další zpracování může bránit výkonu. Pokud znáte informace o primárním klíči v době návrhu, doporučujeme explicitně zadat sloupec nebo sloupce primárního klíče, abyste dosáhli optimálního výkonu. Informace o explicitním nastavení informací o primárním klíči pro tabulku naleznete v tématu Definování primárních klíčů.
Následující příklad kódu ukazuje, jak přidat informace o schématu do datové sady pomocí FillSchema:
Dim custDataSet As New DataSet()
custAdapter.FillSchema(custDataSet, SchemaType.Source, "Customers")
custAdapter.Fill(custDataSet, "Customers")
var custDataSet = new DataSet();
custAdapter.FillSchema(custDataSet, SchemaType.Source, "Customers");
custAdapter.Fill(custDataSet, "Customers");
Následující příklad kódu ukazuje, jak přidat informace schématu do DataSet pomocí MissingSchemaAction.AddWithKey vlastnost Fill metoda:
Dim custDataSet As New DataSet()
custAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
custAdapter.Fill(custDataSet, "Customers")
var custDataSet = new DataSet();
custAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
custAdapter.Fill(custDataSet, "Customers");
Zpracování více sad výsledků
Pokud objekt DataAdapter narazí na více sad výsledků vrácených z selectCommand, vytvoří v datové sadě více tabulek. Tabulky budou mít přírůstkový výchozí název tabulky N založený na nule, počínaje tabulkou namísto tabulky Table0. Pokud je název tabulky předán jako argument metodě FillSchema, tabulky budou mít nulové přírůstkové názvy TableName N, počínaje TableName místo "TableName0".
Poznámka:
Pokud FillSchema metoda OleDbDataAdapter objektu je volána příkaz, který vrací více sad výsledků, je vrácena pouze informace o schématu z první sady výsledků. Při vracení informací o schématu pro více sad výsledků pomocí OleDbDataAdapter je doporučeno zadat MissingSchemaAction AddWithKey a získat informace o schématu při volání Fill metoda.