Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O método Fill de DataAdapter preenche uma DataSet apenas com colunas e linhas de tabela de uma fonte de dados; embora as restrições sejam normalmente definidas pela fonte de dados, o método Fill não adiciona por defeito esta informação de esquema ao DataSet. Para preencher a DataSet com a informação de restrição da chave primária de uma fonte de dados existente, pode chamar o método FillSchema do DataAdapter, ou definir a propriedade MissingSchemaAction do DataAdapter como AddWithKey antes de chamar Fill. Isto garantirá que as restrições de chave primária no DataSet reflictam 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, conforme mostrado em Restrições de DataTable.
Adicionar informações de esquema a um DataSet antes de preencher com dados garante que as restrições de chave primária estão incluídas nos objetos DataTable no DataSet. Como resultado, quando são feitas chamadas adicionais para preencher o DataSet, a informação da coluna da chave primária é usada para casar novas linhas da fonte de dados com as linhas atuais em cada DataTable, e os dados atuais nas tabelas são substituídos 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.
Nota
Se uma coluna numa fonte de dados for identificada como auto-incremento, o método FillSchema ou Fill com MissingSchemaAction de AddWithKey, cria um DataColumn com uma propriedade AutoIncrement definida como true. No entanto, terá de definir os valores AutoIncrementStep e AutoIncrementSeed por si próprio. Para obter mais informações sobre o incremento automático de colunas, consulte Criando colunas de AutoIncremento.
Usar FillSchema ou definir o MissingSchemaAction para AddWithKey requer processamento adicional na fonte de dados para determinar a informação da coluna chave primária. Este processamento adicional pode prejudicar o desempenho. Se você souber as informações da chave primária em tempo de design, recomendamos especificar explicitamente a(s) coluna(s) da chave primária para obter o desempenho ideal. Para obter informações sobre como definir explicitamente informações de chave primária para uma tabela, consulte Definindo chaves primárias.
O seguinte exemplo de código mostra como adicionar informação de esquema a um DataSet usando o 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");
O seguinte exemplo de código mostra como adicionar informação de esquema a 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");
Manipulação de vários conjuntos de resultados
Se o DataAdapter encontrar múltiplos conjuntos de resultados devolvidos pelo SelectCommand, irá criar múltiplas tabelas no DataSet. As tabelas receberão um nome padrão incremental baseado em zero de TableN, começando com Table em vez de "Table0". Se for passado um nome de tabela como argumento ao método FillSchema, as tabelas receberão um nome incremental com índice baseado em zero do tipo TableNameN, começando por TableName em vez de "NomeTabela0".
Nota
Se o FillSchema método do OleDbDataAdapter objeto for chamado para um comando que devolve múltiplos conjuntos de resultados, apenas a informação do esquema do primeiro conjunto de resultados é devolvida. Ao devolver informação de esquema para múltiplos conjuntos de resultados usando o OleDbDataAdapter, recomenda-se que especifique um MissingSchemaAction de AddWithKey e obtenha a informação do esquema ao chamar o método Fill.