Dodawanie istniejących ograniczeń do zestawu danych
Metoda Fill elementu DataAdapter wypełnia DataSet tylko kolumny tabeli i wiersze ze źródła danych, chociaż ograniczenia są często ustawiane przez źródło danych, metoda Fill nie dodaje tych informacji schematu do zestawu danych domyślnie. Aby wypełnić element DataSet istniejącymi informacjami o ograniczeniu klucza podstawowego ze źródła danych, możesz wywołać metodę FillSchema elementu DataAdapter lub ustawić właściwość MissingSchemaAction elementu DataAdapter na AddWithKey przed wywołaniem metody Fill. Zapewni to, że ograniczenia klucza podstawowego w zestawie danych odzwierciedlają te ograniczenia w źródle danych. Informacje o ograniczeniu klucza obcego nie są uwzględniane i należy je utworzyć jawnie, jak pokazano w temacie Ograniczenia tabeli danych.
Dodanie informacji o schemacie do elementu DataSet przed wypełnieniem go danymi gwarantuje, że ograniczenia klucza podstawowego są uwzględniane w DataTable obiektach w zestawie danych. W związku z tym, gdy zostaną wykonane dodatkowe wywołania w celu wypełnienia zestawu danych , informacje o kolumnie klucza podstawowego są używane do dopasowywania nowych wierszy ze źródła danych z bieżącymi wierszami w każdej tabeli DataTable, a bieżące dane w tabelach są zastępowane danymi ze źródła danych. Bez informacji o schemacie nowe wiersze ze źródła danych są dołączane do zestawu danych, co powoduje zduplikowanie wierszy.
Uwaga
Jeśli kolumna w źródle danych zostanie zidentyfikowana jako automatyczne zwiększanie, metoda FillSchema lub metoda Fill z wartością MissingSchemaAction elementu AddWithKey, tworzy kolumnę DataColumn z właściwością AutoIncrement ustawioną na true
wartość . Należy jednak samodzielnie ustawić wartości AutoIncrementStep i AutoIncrementSeed . Aby uzyskać więcej informacji na temat automatycznego zwiększania kolumn, zobacz Creating AutoIncrement Columns (Tworzenie kolumn autoinkrementacji).
Użycie metody FillSchema lub ustawienie polecenia MissingSchemaAction na wartość AddWithKey wymaga dodatkowego przetwarzania w źródle danych w celu określenia informacji o kolumnie klucza podstawowego. To dodatkowe przetwarzanie może utrudnić wydajność. Jeśli znasz podstawowe informacje o kluczu w czasie projektowania, zalecamy jawne określenie kolumny lub kolumn klucza podstawowego w celu uzyskania optymalnej wydajności. Aby uzyskać informacje na temat jawnego ustawiania informacji o kluczu podstawowym dla tabeli, zobacz Definiowanie kluczy podstawowych.
W poniższym przykładzie kodu pokazano, jak dodać informacje o schemacie do zestawu danych przy użyciu metody 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");
Poniższy przykład kodu przedstawia sposób dodawania informacji o schemacie do zestawu danych przy użyciu właściwości MissingSchemaAction.AddWithKey metody Fill:
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");
Obsługa wielu zestawów wyników
Jeśli element DataAdapter napotka wiele zestawów wyników zwracanych z polecenia SelectCommand, utworzy wiele tabel w zestawie danych. Tabele będą mieć domyślną nazwę domyślną tabeli N opartą na zera, zaczynając od tabeli zamiast "Table0". Jeśli nazwa tabeli jest przekazywana jako argument do metody FillSchema, tabele otrzymają przyrostową nazwę typu TableName N, zaczynając od tabeli TableName zamiast "TableName0".
Uwaga
Jeśli metoda FillSchema obiektu OleDbDataAdapter jest wywoływana dla polecenia zwracającego wiele zestawów wyników, zwracane są tylko informacje o schemacie z pierwszego zestawu wyników. Podczas zwracania informacji o schemacie dla wielu zestawów wyników przy użyciu obiektu OleDbDataAdapter zaleca się określenie wartości MissingSchemaAction elementu AddWithKey i uzyskanie informacji o schemacie podczas wywoływania metody Fill.