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 DataAdapterAddWithKey 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 MissingSchemaActionAddWithKey, 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 tabulkyN 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 TableNameN, 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 MissingSchemaActionAddWithKey a získat informace o schématu při volání Fill metoda.

Viz také