Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Учитывая xml-схему, которая соответствует стандарту языка определения схемы XML (XSD), можно создать строго типизированный DataSet с помощью средства XSD.exe, предоставленного пакетом средств разработки программного обеспечения Windows (SDK).
(Чтобы создать 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, которые можно передать компилятору при компиляции приложения ADO.NET с директивой /r:
.
В следующем коде показан синтаксис для доступа к пространству имен, переданному в XSD.exe в приложении ADO.NET.
Imports XSDSchema.Namespace
using XSDSchema.Namespace;
В следующем примере кода используется типизированный набор данных с именем CustomerDataSet для загрузки списка клиентов из базы данных Northwind . После загрузки данных с помощью метода Fill пример выполняет циклы по каждому клиенту в таблице Customers с помощью объекта Typed 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="" 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>