Ajout de contraintes existantes à un DataSetAdding Existing Constraints to a DataSet

Le remplir méthode de la DataAdapter remplit un DataSet uniquement avec les colonnes de table et de lignes à partir d’une source de données ; cependant les contraintes soient généralement définies par la source de données, le remplir méthode n’ajoute pas ces informations de schéma pour le DataSet par défaut.The Fill method of the DataAdapter fills a DataSet only with table columns and rows from a data source; though constraints are commonly set by the data source, the Fill method does not add this schema information to the DataSet by default. Pour remplir un DataSet avec les informations existantes de contrainte de clé primaire à partir d’une source de données, vous pouvez appeler la FillSchema méthode de la DataAdapter, ou définir le MissingSchemaAction propriété de la DataAdapter à AddWithKey avant d’appeler remplir.To populate a DataSet with existing primary key constraint information from a data source, you can either call the FillSchema method of the DataAdapter, or set the MissingSchemaAction property of the DataAdapter to AddWithKey before calling Fill. Cela garantit que clé primaire contraintes dans le DataSet reflètent celles de la source de données.This will ensure that primary key constraints in the DataSet reflect those at the data source. Informations de contrainte de clé étrangère n’est pas incluses et doit être explicitement créées, comme indiqué dans contraintes de DataTable.Foreign key constraint information is not included and must be created explicitly, as shown in DataTable Constraints.

Ajout des informations de schéma à un DataSet avant de la remplir avec les données garantit que les contraintes de clé primaire sont incluses avec le DataTable des objets dans le DataSet.Adding schema information to a DataSet before filling it with data ensures that primary key constraints are included with the DataTable objects in the DataSet. Par conséquent, lorsque supplémentaires appels pour remplir le DataSet sont effectuées, le serveur principal les informations de colonne clé sont utilisées pour faire correspondre les nouvelles lignes à partir de la source de données avec les lignes actuelles de chaque DataTableet les données actuelles dans les tables sont remplacées par les données à partir de la source de données.As a result, when additional calls to fill the DataSet are made, the primary key column information is used to match new rows from the data source with current rows in each DataTable, and current data in the tables is overwritten with data from the data source. Sans les informations de schéma, les nouvelles lignes à partir de la source de données sont ajoutées à la DataSet, se traduisant par des lignes en double.Without the schema information, the new rows from the data source are appended to the DataSet, resulting in duplicate rows.

Notes

Si une colonne dans une source de données est identifiée comme étant auto-incrémentée, les FillSchema (méthode), ou le remplir méthode avec un MissingSchemaAction de AddWithKey, crée un DataColumn avec un AutoIncrement propriété définie sur true.If a column in a data source is identified as auto-incrementing, the FillSchema method, or the Fill method with a MissingSchemaAction of AddWithKey, creates a DataColumn with an AutoIncrement property set to true. Toutefois, vous devez définir le AutoIncrementStep et AutoIncrementSeed valeurs vous-même.However, you will need to set the AutoIncrementStep and AutoIncrementSeed values yourself. Pour plus d’informations sur les colonnes à incrémentation automatique, consultez création des colonnes AutoIncrement.For more information about auto-incrementing columns, see Creating AutoIncrement Columns.

À l’aide de FillSchema ou paramètre la MissingSchemaAction à AddWithKey nécessite un traitement supplémentaire à la source de données pour déterminer les informations de colonne de clé primaire.Using FillSchema or setting the MissingSchemaAction to AddWithKey requires extra processing at the data source to determine primary key column information. Ce traitement supplémentaire peut gêner la performance.This additional processing can hinder performance. Si vous connaissez les informations de clé primaire au moment du design, il est recommandé de spécifier explicitement la ou les colonnes de clé primaire afin d'atteindre une performance optimale.If you know the primary key information at design time, we recommend that you explicitly specify the primary key column or columns in order to achieve optimal performance. Pour plus d’informations sur la définition explicite des informations de clé primaire pour une table, consultez définition des clés primaires.For information about explicitly setting primary key information for a table, see Defining Primary Keys.

L’exemple de code suivant montre comment ajouter des informations de schéma à un DataSet à l’aide de FillSchema.The following code example shows how to add schema information to a DataSet using FillSchema.

Dim custDataSet As DataSet = New DataSet()  
  
custAdapter.FillSchema(custDataSet, SchemaType.Source, "Customers")  
custAdapter.Fill(custDataSet, "Customers")  
DataSet custDataSet = new DataSet();  
  
custAdapter.FillSchema(custDataSet, SchemaType.Source, "Customers");  
custAdapter.Fill(custDataSet, "Customers");  

L’exemple de code suivant montre comment ajouter des informations de schéma à un DataSet à l’aide de la MissingSchemaAction.AddWithKey propriété de la remplir (méthode).The following code example shows how to add schema information to a DataSet using the MissingSchemaAction.AddWithKey property of the Fill method.

Dim custDataSet As DataSet = New DataSet()  
  
custAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey  
custAdapter.Fill(custDataSet, "Customers")  
DataSet custDataSet = new DataSet();  
  
custAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;  
custAdapter.Fill(custDataSet, "Customers");  

Gestion de jeux de résultats multiplesHandling Multiple Result Sets

Si le DataAdapter rencontre plusieurs jeux de résultats retournés à partir de la SelectCommand, il créera plusieurs tables dans le DataSet.If the DataAdapter encounters multiple result sets returned from the SelectCommand, it will create multiple tables in the DataSet. Les tables recevront un nom de base zéro incrémentiel par défaut de Table N, en commençant par Table au lieu de « Table0 ».The tables will be given a zero-based incremental default name of Table N, starting with Table instead of "Table0". Si un nom de table est passé comme argument à la FillSchema (méthode), les tables recevront un nom incrémentiel de base zéro de TableName N, en commençant par TableName au lieu de « TableName0 ».If a table name is passed as an argument to the FillSchema method, the tables will be given a zero-based incremental name of TableName N, starting with TableName instead of "TableName0".

Notes

Si le FillSchema méthode de la OleDbDataAdapter objet est appelé pour une commande qui retourne plusieurs jeux de résultats, les informations de schéma du premier jeu de résultats sont retournées.If the FillSchema method of the OleDbDataAdapter object is called for a command that returns multiple result sets, only the schema information from the first result set is returned. Lorsque la retournant des informations de schéma pour plusieurs résultats définit à l’aide de la OleDbDataAdapter, il est recommandé de spécifier un MissingSchemaAction de AddWithKey et obtenir les informations de schéma lors de l’appel le remplir (méthode).When returning schema information for multiple result sets using the OleDbDataAdapter, it is recommended that you specify a MissingSchemaAction of AddWithKey and obtain the schema information when calling the Fill method.

Voir aussiSee also