Generieren eines streng typisierten DataSets
Bei einem XML-Schema, das bei der Kompilierung mit dem Standard der XML-Schemadefinitionssprache (XSD) arbeitet, können Sie mit dem Tool XSD.exe, das mit dem .NET Framework SDK geliefert wird, ein DataSet mit strikter Typbindung generieren.
Der folgende Code zeigt die Syntax zum Generieren eines DataSets mit Hilfe dieses Tools.
xsd.exe /d /l:CS XSDSchemaFileName.xsd /n:XSDSchema.Namespace
Bei dieser Syntax weist die /d
-Direktive das Tool an, ein DataSet zu generieren, und die /l:
-Direktive gibt die zu verwendende Sprache an (z. B. C# oder Visual Basic .NET). Die optionale /n:
-Direktive weist das Tool außerdem an, einen Namespace für das DataSet mit dem Namen XSDSchema.Namespace zu generieren. Dieser Befehl resultiert in der Datei XSDSchemaDateiname.cs, die kompiliert und in einer ADO.NET-Anwendung verwendet werden kann. Der generierte Code kann als Bibliothek oder Modul kompiliert werden.
Der folgende Code zeigt die Syntax zum Kompilieren des generierten Codes als Bibliothek mit dem C#-Compiler (csc.exe).
csc.exe /t:library XSDSchemaFileName.cs /r:System.dll /r:System.Data.dll
Die /t:
-Direktive weist das Tool an, eine Bibliothek zu kompilieren, und die /r:
-Direktiven geben die Bibliotheken an, die für die Kompilierung erforderlich sind. Dieser Befehl resultiert in der Datei XSDSchemaDateiname.dll, die an den Compiler übergeben werden kann, wenn eine ADO.NET-Anwendung mit der /r:
-Direktive kompiliert wird.
Der folgende Code zeigt die Syntax für den Zugriff auf den Namespace, der in einer ADO.NET-Anwendung an XSD.exe übergeben wird.
Imports XSDSchema.Namespace
[C#]
using XSDSchema.Namespace;
Im folgenden Codebeispiel wird ein typisiertes DataSet namens CustomerDataSet verwendet, um eine Kundenliste aus der Northwind-Datenbank zu laden. Sobald die Daten mit der Fill-Methode geladen wurden, werden alle Kunden in der Customers-Tabelle mit dem typisierten CustomersRow (DataRow)-Objekt durchlaufen. Dadurch ist direkter Zugriff auf die CustomerID-Spalte im Gegensatz zum Zugriff über die DataColumnCollection möglich.
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);
Für das Beispiel wurde folgendes XML-Schema verwendet:
<?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>
Siehe auch
Arbeiten mit einem typisierten DataSet | Erstellen und Verwenden von DataSets | DataColumnCollection-Klasse | DataSet-Klasse