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 XSD.exe hulpprogramma 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 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 Querying Typed DataSets voor meer informatie. De optionele /n: instructie vertelt het hulpprogramma ook een naamruimte te genereren voor de DataSet zogenaamde 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 naam gebruikt CustomerDataSet 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 Customers tabel met behulp van het getypte CustomersRow object (DataRow). Dit biedt directe toegang tot de CustomerID kolom, in plaats van via de 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