生成强类型化数据集

如果给定符合 XML 架构定义语言 (XSD) 标准的 XML 架构,就可以使用随 Windows 软件开发工具包 (SDK) 提供的 XSD.exe 工具生成强类型 DataSet

(若要从数据库表创建 xsd,请参见 WriteXmlSchema在 Visual Studio 中使用数据集)。

以下代码显示使用该工具生成数据集的语法。

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

在此语法中,/d 指令指示该工具生成数据集,/l: 指示该工具要使用哪种语言(例如 C# 或 Visual Basic .NET)。 可选的 /eld 指令指定你可以使用 LINQ to DataSet 来查询生成的数据集。当同时指定 /d 选项时可使用此选项。 有关详细信息,请参阅查询类型化数据集。 可选的 /n: 指令指示该工具还要为名为 XSDSchema.Namespace 的数据集生成命名空间。 命令的输出为 XSDSchemaFileName.cs,该输出可以在 ADO.NET 应用程序中编译和使用。 所生成的代码可以编译成库或模块。

以下代码显示使用 C# 编译器 (csc.exe) 将生成的代码编译成库的语法。

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

/t: 指令指示该工具编译成库,/r: 指令指定进行编译所需的依赖库。 该命令的输出为 XSDSchemaFileName.dll,它可以在使用 /r: 指令编译 ADO.NET 应用程序时传递给编译器。

以下代码显示访问向 ADO.NET 应用程序中的 XSD.exe 传递的命名空间的语法。

Imports XSDSchema.Namespace  
using XSDSchema.Namespace;  

以下代码示例使用名为 CustomerDataSet 的类型化数据集来加载 Northwind 数据库中客户的列表。 当使用 Fill 方法加载数据后,该示例会使用类型化 CustomersRow (DataRow) 对象循环通过 Customers 表中的每个客户。 它提供了对 CustomerID 列的直接访问,而不是通过 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);  

下面是用于该示例的 XML 架构:

<?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>  

请参阅