Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Метод Fill для DataAdapter заполняет DataSet только столбцами и строками из источника данных. Хотя ограничения обычно задаются данным источником, метод Fill по умолчанию не добавляет эту информацию о схеме в DataSet. Чтобы заполнить DataSet данными об существующем ограничении первичного ключа из источника данных, можно вызвать метод FillSchema объекта DataAdapter или установить свойство MissingSchemaAction объекта DataAdapter перед вызовом Fill. Это обеспечит, что ограничения первичного ключа в DataSet отражают таковые в источнике данных. Сведения об ограничении внешнего ключа не включены и должны быть созданы явным образом, как показано в ограничениях DataTable.
Добавление сведений DataSet схемы в данные перед заполнением данных гарантирует, что ограничения первичного ключа включены в DataTable объекты в Наборе данных. В результате при выполнении дополнительных вызовов для заполнения DataSet данные столбца первичного ключа используются для сопоставления новых строк из источника данных с текущими строками в каждой таблице DataTable, а текущие данные в таблицах перезаписываются с данными из источника данных. При отсутствии данных схемы новые строки добавляются из источника данных к набору данных DataSet, что приводит к появлению повторяющихся строк.
Примечание.
Если столбец в источнике данных определен как автоинкрементный, метод FillSchema или метод Fill с параметром MissingSchemaActionAddWithKey создает DataColumn, у которого свойство AutoIncrement установлено в true. Однако вам потребуется задать AutoIncrementStep и AutoIncrementSeed значения самостоятельно. Дополнительные сведения об автоматическом добавочном столбце см. в разделе "Создание столбцов автоинкремента".
Использование FillSchema или настройка MissingSchemaActionAddWithKey требует дополнительной обработки в источнике данных для определения сведений о столбце первичного ключа. Такая дополнительная обработка может снизить производительность. Если сведения о столбцах первичного ключа известны во время разработки, рекомендуется явно задавать столбец или столбцы первичного ключа, чтобы добиться оптимальной производительности. Сведения о явном задании сведений о первичном ключе для таблицы см. в разделе "Определение первичных ключей".
В следующем примере кода показано, как добавить сведения о схеме в DataSet с помощью 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");
В следующем примере кода показано, как добавить сведения о схеме в DataSet, используя свойство MissingSchemaAction.AddWithKey метода 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");
Обработка нескольких результирующих наборов
Если DataAdapter сталкивается с несколькими набором результатов, возвращаемыми из SelectCommand, он создаст несколько таблиц в DataSet. Таблицы будут иметь приращаемое по умолчанию имя Table, начиная с Table вместо "Table0", в формате N. Если имя таблицы передается методу в качестве аргумента FillSchema, таблицы будут иметь порядковое имя TableNameN, начинающееся с TableName, вместо "TableName0".
Примечание.
FillSchema Если метод OleDbDataAdapter объекта вызывается для команды, возвращающей несколько результирующих наборов, возвращается только информация о схеме из первого результирующий набора. При возврате сведений схемы для нескольких результирующих наборов с помощью OleDbDataAdapter рекомендуется указать MissingSchemaActionAddWithKey и получить сведения о схеме, вызвав метод Fill.