Partager via


Génération d'un DataSet fortement typé

À partir d'un schéma XML conforme à la norme XSD (XML Schema Definition language), vous pouvez générer un DataSet fortement typé à l'aide de l'outil XSD.exe fourni avec le Kit de développement .NET Framework SDK.

Le code suivant montre la syntaxe permettant de générer un DataSet à l'aide de cet outil.

xsd.exe /d /l:CS XSDSchemaFileName.xsd /n:XSDSchema.Namespace

Dans cette syntaxe, la directive /d donne à l'outil l'ordre de générer un DataSet et /l: indique le langage à utiliser (par exemple, C# ou Visual Basic .NET). La directive facultative /n: demande à l'outil de générer également un espace de noms appelé XSDSchema.Namespace pour le DataSet. La commande donne en sortie un fichier XSDSchemaFileName.cs, qui peut être compilé et utilisé dans une application ADO.NET. Le code généré peut être compilé sous la forme d'une bibliothèque ou d'un module.

Le code suivant montre la syntaxe permettant de compiler le code généré sous la forme d'une bibliothèque à l'aide du compilateur C# (csc.exe).

csc.exe /t:library XSDSchemaFileName.cs /r:System.dll /r:System.Data.dll

La directive /t: donne à l'outil l'ordre de compiler en bibliothèque et les directives /r: spécifient les bibliothèques dépendantes requises pour la compilation. La commande donne en sortie un fichier XSDSchemaFileName.dll, qui peut être passé au compilateur au moment de la compilation d'une application ADO.NET avec la directive /r:.

Le code suivant montre la syntaxe permettant d'accéder à l'espace de noms passé à XSD.exe dans une application ADO.NET.

Imports XSDSchema.Namespace
[C#]
using XSDSchema.Namespace;

L'exemple de code suivant utilise un DataSet typé nommé CustomerDataSet pour charger une liste de clients à partir de la base de données Northwind. Une fois les données chargées à l'aide de la méthode Fill, l'exemple boucle sur chaque client de la table Customers à l'aide de l'objet typé CustomersRow (DataRow). La colonne CustomerID est ainsi accessible directement, plutôt que via le DataColumnCollection.

Dim custDS As CustomerDataSet= New CustomerDataSet()
Dim custCMD As SqlDataAdapter New SqlDataAdapter("SELECT * FROM Customers", _
                                                 "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind")

custCMD.Fill(custDS, "Customers")

Dim custRow As CustomerDataSet.CustomersRow
For Each custRow In custDS.Customers
  Console.WriteLine(custRow.CustomerID)
Next
[C#]
CustomerDataSet custDS = new CustomerDataSet();
SqlDataAdapter custCMD = new SqlDataAdapter("SELECT * FROM Customers",
                                            "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind");

custCMD.Fill(custDS, "Customers");

foreach(CustomerDataSet.CustomersRow custRow in custDS.Customers)
  Console.WriteLine(custRow.CustomerID);

Vous trouverez ci-dessous le schéma XML utilisé pour l'exemple.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="CustomerDataSet"  xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="CustomerDataSet" msdata:IsDataSet="true">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element name="Customers">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="CustomerID" type="xs:string" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>

Voir aussi

Utilisation d'un DataSet typé | Création et utilisation de DataSets | DataColumnCollection, classe | DataSet, classe