Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O método Fill do DataAdapter preenche DataSet apenas com colunas e linhas de tabela de uma fonte de dados; embora as restrições de esquema sejam normalmente definidas pela fonte de dados, o método Fill não adiciona informações de esquema ao DataSet por padrão. Para preencher um DataSet com informações de restrição de chave primária existentes de uma fonte de dados, você pode chamar o método FillSchema do DataAdapter ou definir a propriedade MissingSchemaAction do DataAdapter para AddWithKey antes de chamar Fill. Isso garantirá que as restrições de chave primárias DataSet reflitam as da fonte de dados. As informações de restrição de chave estrangeira não estão incluídas e devem ser criadas explicitamente, como mostrado em Restrições da DataTable.
Adicionar informações de esquema a um DataSet antes de preenchê-lo com dados garante que as restrições de chave primária sejam incluídas nos objetos DataTable do DataSet. Como resultado, quando chamadas adicionais para preencher o DataSet são feitas, as informações da coluna de chave primária são usadas para corresponder novas linhas da fonte de dados com as linhas atuais de cada DataTable, e os dados atuais nas tabelas são sobrescritos por dados da fonte de dados. Sem as informações do esquema, as novas linhas da fonte de dados são acrescentadas ao DataSet, resultando em linhas duplicadas.
Observação
Se uma coluna em uma fonte de dados for identificada como incremento automático, o método FillSchema ou o método Fill com um MissingSchemaAction de AddWithKey criará um DataColumn com a propriedade AutoIncrement definida como true. No entanto, você precisará definir os valores de AutoIncrementStep e AutoIncrementSeed por conta própria. Para mais informações sobre o incremento automático de colunas, confira Como criar colunas de preenchimento automático.
Usar FillSchema ou definir MissingSchemaAction para AddWithKey requer processamento extra na fonte de dados para determinar as informações da coluna de chave primária. Esse processamento adicional pode prejudicar o desempenho. Se você souber as informações de chave primária em tempo de design, recomendamos especificar explicitamente a coluna (ou colunas) de chave primária, a fim de alcançar um desempenho ideal. Para informações sobre como definir explicitamente informações de chave primária para uma tabela, confira Definir chaves primárias.
O exemplo de código a seguir mostra como adicionar informações de esquema a um DataSetFillSchema usando:
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");
O exemplo de código a seguir mostra como adicionar informações de esquema a um DataSet usando a propriedade MissingSchemaAction.AddWithKey do Fill método:
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");
Manipulando vários conjuntos de resultados
Se o DataAdapter encontrar vários conjuntos de resultados retornados do SelectCommand, ele criará várias tabelas no DataSet. As tabelas receberão um nome padrão incremental com base em zero de TableN, começando com Table em vez de "Table0". Se um nome de tabela for passado como argumento para o método FillSchema, as tabelas receberão um nome incremental iniciado em zero, no formato TableNameN, começando com TableName em vez de "TableName0".
Observação
Se o FillSchema método do OleDbDataAdapter objeto for chamado para um comando que retorna vários conjuntos de resultados, somente as informações de esquema do primeiro conjunto de resultados serão retornadas. Ao retornar informações de esquema para vários conjuntos de resultados usando o OleDbDataAdapter, é recomendável especificar um MissingSchemaAction de AddWithKey e obter as informações de esquema ao chamar o método Fill.