Поделиться через


Создание объектов DataSet со строгой типизацией (ADO.NET)

При наличии схемы XML, соответствующей стандарту языка XSD, можно создать объект DataSet со строгой типизацией с помощью инструмента XSD.exe, предоставляемого Пакет средств разработки программного обеспечения (SDK) для Windows.

В следующем коде показан синтаксис создания 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. Дополнительные сведения см. в разделе Запрос к типизированным объектам DataSet. Дополнительная директива /n: служит для этого инструмента указанием по созданию пространства имен для DataSet с именем 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, который можно передать компилятору при компилировании приложения ADO.NET с помощью директивы /r:.

В следующем коде показан синтаксис обеспечения доступа к пространству имен, переданному инструменту XSD.exe в приложении ADO.NET.

Imports XSDSchema.Namespace
using XSDSchema.Namespace;

В следующем примере кода используется типизированный объект DataSet с именем CustomerDataSet для загрузки списка клиентов из базы данных Northwind. После загрузки данных с помощью метода Fill в этом примере кода происходит обработка в цикле данных о каждом заказчике из таблицы Customers с помощью типизированного объекта CustomersRow (DataRow). Благодаря этому обеспечивается прямой доступ к столбцу 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: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>

См. также

Ссылки

DataColumnCollection

DataSet

Другие ресурсы

Типизированные объекты DataSet (ADO.NET)

Объекты DataSet, DataTable и DataView (ADO.NET)