Sdílet prostřednictvím


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.

Viz také