TYPED Versus typées datasets Un ensemble de données typé est un ensemble de données qui est d'abord dérivé de la classe DataSet de base et utilise ensuite des informations du Concepteur de DataSet, qui est stocké dans un. Fichier xsd, pour générer une nouvelle classe de dataset fortement typée. Les informations provenant du schéma (tables, colonnes, etc.) sont générées et compilées dans cette nouvelle classe de jeu de données en tant qu'ensemble d'objets et de propriétés de première classe. Parce qu'un jeu de données typé hérite de la classe DataSet de base, la classe typée assume toutes les fonctionnalités de la classe DataSet et peut être utilisée avec des méthodes qui prennent comme paramètre une instance d'une classe DataSet
Un jeu de données non typé, en revanche , n'a pas de schéma intégré correspondant. Comme dans un jeu de données typé, un jeu de données non typé contient des tables, des colonnes, etc., mais ceux-ci sont uniquement exposés en tant que collections. (Cependant, après avoir créé manuellement les tables et d'autres éléments de données dans un ensemble de données typées, vous pouvez exporter la structure de l'ensemble de données en tant que schéma en utilisant la méthode WriteXmlSchema de données.)
Contrastant accès aux données dactylographiés et datasets typés La classe pour une L'ensemble de données typé a un modèle d'objet dans lequel ses propriétés prennent les noms réels des tables et des colonnes.Par exemple, si vous travaillez avec un jeu de données typé, vous pouvez référencer une colonne en utilisant le code tel que le suivant:
C# VBCopy
// This accesses the CustomerID column in the first row of the Customers table.
string customerIDValue = northwindDataSet.Customers[0].CustomerID;
J # Copier
// This accesses the CustomerID column in the first row of the Customers table.
String customerIDValue =
northwindDataSet.get_Customers().get_Item(0).get_CustomerID();
En revanche , si vous travaillez avec un jeu de données typées, le code équivalent est:
C# VBCopy
string customerIDValue = (string)
dataset1.Tables["Customers"].Rows[0]["CustomerID"];
J # Copier
String customerIDValue = (String)
dataset1.get_Tables().get_Item("Customers").get_Rows().get_Item(0).get_Item("CustomerID");
accès dactylographié est non seulement plus facile à lire, mais il est entièrement pris en charge par IntelliSense dans le Code Visual Studio Editor. En plus d'être plus facile à utiliser, la syntaxe de l'ensemble de données typé fournit une vérification de type lors de la compilation, ce qui réduit considérablement la possibilité d'erreurs dans l'attribution de valeurs aux membres de l'ensemble de données. Si vous modifiez le nom d'une colonne dans votre DataSet et ensuite compilez votre application, vous recevez une erreur de génération. En double-cliquant sur l'erreur de construction dans la liste des tâches, vous pouvez accéder directement à la ou aux lignes de code faisant référence à l'ancien nom de colonne. L'accès aux tables et aux colonnes d'un jeu de données typé est également légèrement plus rapide au moment de l'exécution car l'accès est déterminé au moment de la compilation, et non via les collectes au moment de l'exécution.
Même si les ensembles de données typés présentent de nombreux avantages, il existe diverses circonstances dans lesquelles un ensemble de données non typé est utile. Le scénario le plus évident est quand aucun schéma n'est disponible pour l'ensemble de données. Cela peut se produire, par exemple, si votre application interagit avec un composant qui renvoie un jeu de données, mais que vous ne savez pas à l'avance quelle est sa structure. De même, il y a des moments où vous travaillez avec des données qui n'ont pas de structure statique et prévisible; dans ce cas, il est impossible d'utiliser un jeu de données typé, car vous devez régénérer la classe de jeu de données typée à chaque modification de la structure de données. Plus généralement, il existe plusieurs fois où vous pouvez créer un jeu de données de façon dynamique sans qu'un schéma soit disponible. Dans ce cas, l'ensemble de données est simplement une structure pratique dans laquelle vous pouvez conserver des informations, à condition que les données puissent être représentées de manière relationnelle. En même temps, vous pouvez tirer parti des fonctionnalités de l'ensemble de données, telles que la capacité de sérialiser les informations à transmettre à un autre processus ou d'écrire un fichier XML.
Personnellement, je ne suis pas sûr que je recommande * soit * dans la plupart du code; sauf si vous utilisez: SqlBulkCopy à partir de la mémoire, ou b: écrire un outil de requête générique comme SSMS ... –
Avez-vous essayé d'examiner MSDN à ce sujet? http://msdn.microsoft.com/en-us/library/esbykkzb(v=VS.100).aspx –
Les deux décrivent des choses que vous ne devriez pas utiliser. Vous devez utiliser ORM à la place :) – Stilgar