Delen via


Sterk getypte gegevenssets genereren

Gezien een XML-schema dat voldoet aan de XSD-standaard (XML Schema Definition Language), kunt u een sterk getypt DataSet genereren met behulp van het hulpprogramma XSD.exe dat is geleverd met de Windows Software Development Kit (SDK).

(Als u een XSD wilt maken op databasetabellen, raadpleegt WriteXmlSchema u of werkt u met gegevenssets in Visual Studio).

De volgende code toont de syntaxis voor het genereren van een DataSet met behulp van dit hulpprogramma.

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

In deze syntaxis vertelt de /d instructie het hulpprogramma om een DataSet te genereren en geeft het /l: hulpprogramma aan welke taal moet worden gebruikt (bijvoorbeeld C# of Visual Basic .NET). De optionele /eld instructie geeft aan dat u LINQ naar DataSet kunt gebruiken om een query uit te voeren op de gegenereerde DataSet. Deze optie wordt gebruikt wanneer de /d optie ook wordt opgegeven. Zie Query's voor getypte gegevenssets voor meer informatie. De optionele /n: instructie geeft aan dat het hulpprogramma ook een naamruimte moet genereren voor de DataSet met de naam XSDSchema.Namespace. De uitvoer van de opdracht is XSDSchemaFileName.cs, die kan worden gecompileerd en gebruikt in een ADO.NET toepassing. De gegenereerde code kan worden gecompileerd als een bibliotheek of een module.

De volgende code toont de syntaxis voor het compileren van de gegenereerde code als bibliotheek met behulp van de C#-compiler (csc.exe).

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

De /t: richtlijn vertelt het hulpprogramma om naar een bibliotheek te compileren en de /r: instructies geven afhankelijke bibliotheken op die nodig zijn om te compileren. De uitvoer van de opdracht is XSDSchemaFileName.dll, die kan worden doorgegeven aan de compiler bij het compileren van een ADO.NET toepassing met de /r: instructie.

De volgende code toont de syntaxis voor toegang tot de naamruimte die is doorgegeven aan XSD.exe in een ADO.NET toepassing.

Imports XSDSchema.Namespace  
using XSDSchema.Namespace;  

In het volgende codevoorbeeld wordt een getypte DataSet met de naam CustomerDataSet gebruikt om een lijst met klanten uit de Northwind-database te laden. Zodra de gegevens zijn geladen met behulp van de fill-methode , doorloopt het voorbeeld elke klant in de tabel Klanten met behulp van het getypte CustomersRow-object (DataRow). Dit biedt directe toegang tot de kolom CustomerID, in plaats van via DataColumnCollection.

Dim customers As CustomerDataSet= New CustomerDataSet()  
Dim adapter As SqlDataAdapter New SqlDataAdapter( _  
  "SELECT * FROM dbo.Customers;", _  
  "Data Source=(local);Integrated " & _  
  "Security=SSPI;Initial Catalog=Northwind")  
  
adapter.Fill(customers, "Customers")  
  
Dim customerRow As CustomerDataSet.CustomersRow  
For Each customerRow In customers.Customers  
  Console.WriteLine(customerRow.CustomerID)  
Next  
CustomerDataSet customers = new CustomerDataSet();  
SqlDataAdapter adapter = new SqlDataAdapter(  
  "SELECT * FROM dbo.Customers;",  
  "Data Source=(local);Integrated " +  
  "Security=SSPI;Initial Catalog=Northwind");  
  
adapter.Fill(customers, "Customers");  
  
foreach(CustomerDataSet.CustomersRow customerRow in customers.Customers)  
  Console.WriteLine(customerRow.CustomerID);  

Hier volgt het XML-schema dat wordt gebruikt voor het voorbeeld:

<?xml version="1.0" encoding="utf-8"?>  
<xs:schema id="CustomerDataSet" xmlns="" 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>  

Zie ook