Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La méthode Fill du DataAdapter remplit un DataSet uniquement avec les colonnes et les lignes de tableau d'une source de données ; bien que les contraintes soient généralement définies par la source de données, la méthode Fill n’ajoute pas ces informations de schéma au DataSet par défaut. Pour remplir un DataSet avec les informations de contrainte de clé primaire existantes d'une source de données, vous pouvez soit appeler la méthode FillSchema du DataAdapter, soit définir la propriété MissingSchemaAction du DataAdapter sur AddWithKey avant d'appeler Fill. Cela garantit que les contraintes de clé primaire dans le DataSet reflètent celles au niveau de la source de données. Les informations de contrainte de clé étrangère ne sont pas incluses et doivent être créées explicitement, comme indiqué dans Contraintes des DataTables.
L’ajout d’informations de schéma à un DataSet avant de le remplir avec des données garantit que les contraintes de clé primaire sont incluses dans les DataTable objets du DataSet. Par conséquent, lorsque des appels supplémentaires pour remplir le DataSet fichier sont effectués, les informations de colonne clé primaire sont utilisées pour faire correspondre les nouvelles lignes de la source de données avec les lignes actuelles de chaque DataTable, et les données actuelles des tables sont remplacées par des données de la source de données. Sans les informations de schéma, les nouvelles lignes de la source de données sont ajoutées au DataSet, ce qui a pour résultat des lignes en doublon.
Notes
Si une colonne d’une source de données est identifiée comme auto-incrémentée, la méthode FillSchema ou la méthode Fill avec un MissingSchemaActionAddWithKey, crée une DataColumn avec une propriété AutoIncrement définie à true. Toutefois, vous devrez définir les valeurs de AutoIncrementStep et AutoIncrementSeed vous-même. Pour plus d’informations sur les colonnes auto-incrémentées, consultez Création de colonnes auto-incrémentées.
L'utilisation de FillSchema ou la définition de MissingSchemaAction à AddWithKey nécessite un traitement supplémentaire à la source de données pour déterminer les informations de la colonne clé primaire. Ce traitement supplémentaire peut gêner la 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. Pour plus d’informations sur la définition explicite des informations de clé primaire pour une table, consultez Définition de clés primaires.
L’exemple de code suivant montre comment ajouter des informations de schéma à une DataSet en utilisant 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");
L’exemple de code suivant montre comment ajouter des informations de schéma à une
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");
Gestion de plusieurs jeux de résultats
Si le DataAdapter rencontre plusieurs jeux de résultats retournés par le SelectCommand, il créera plusieurs tables dans le DataSet. Les tables recevront un nom par défaut de base zéro incrémentiel sous la forme de TableN, commençant par Table, au lieu de « Table0 ». Si un nom de table est passé en tant qu’argument à FillSchema méthode, les tables reçoivent un nom incrémentiel de base zéro de TableNameN, en commençant par TableName au lieu de « TableName0 ».
Notes
Si la FillSchema méthode de l’objet OleDbDataAdapter est appelée pour une commande qui retourne plusieurs jeux de résultats, seules les informations de schéma du premier jeu de résultats sont retournées. Lorsque vous retournez des informations de schéma pour plusieurs jeux de résultats à l’aide de OleDbDataAdapter, il est recommandé de spécifier un MissingSchemaAction et d'obtenir les informations de schéma en appelant la méthode Fill.