次の方法で共有


厳密に型指定されたデータセットの生成

XML スキーマ定義言語 (XSD) 標準に準拠する XML スキーマを使用すると、Windows ソフトウェア開発キット (SDK) で提供される XSD.exe ツールを使用して、厳密に型指定された DataSet を生成できます。

(データベース テーブルから xsd を作成するには、「 WriteXmlSchema 」または 「Visual Studio でのデータセットの操作」を参照してください)。

次のコードは、このツールを使用して DataSet を生成するための構文を示しています。

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

この構文では、 /d ディレクティブは DataSet を生成するようにツールに指示し、 /l: は使用する言語 (C# や Visual Basic .NET など) をツールに指示します。 オプションの /eld ディレクティブは、LINQ to DataSet を使用して、生成された DataSet に対してクエリを実行できることを指定 します。 このオプションは、 /d オプションも指定するときに使用されます。 詳細については、「 型指定されたデータセットのクエリ」を参照してください。 省略可能な /n: ディレクティブは、DataSet と呼ばれるの名前空間も生成するようにツールに指示します。 コマンドの出力は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;

次のコード例では、DataSet という名前の型指定されたCustomerDataSetを使用して、Northwind データベースから顧客の一覧を読み込みます。 Fill メソッドを使用してデータが読み込まれると、この例では、型指定されたCustomers (CustomersRow) オブジェクトを使用して、 テーブル内の各顧客をループ処理します。 これにより、CustomerID ではなく、列に直接アクセスできます。

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>

こちらも参照ください