XSD(XML 스키마 정의 언어) 표준을 준수하는 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 지시문은 생성된 DataSet에 대해 LINQ to DataSet을 사용하여 쿼리할 수 있도록 지정합니다. 이 옵션은 /d 옵션이 지정된 경우에 사용됩니다. 자세한 내용은 형식화된 데이터 세트 쿼리를 참조하세요. 선택적 /n: 지시문은 DataSet를 XSDSchema.Namespace로 명명된 네임스페이스도 생성하도록 도구에 지시합니다. 명령의 출력은 ADO.NET 애플리케이션에서 컴파일 및 사용할 수 있는 XSDSchemaFileName.cs. 생성된 코드를 라이브러리 또는 모듈로 컴파일할 수 있습니다.
다음 코드는 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을 통해서가 아니라 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>