Създаване на XML схема с помощта на XSD

XML е тясно интегрирана в ADO.NET; в действителност, това е основен формат за предаване на данни между обекти. По време на изпълнение на .NET DataTable клас може да бъде описан в дефиниция файла с XML схема (т.е. XSD). Освен това, можете да определите DataSet клас с много DataTable класове и набор от връзки между таблици и включват различни други елементи за пълно описание на данните.

След определяне XSD файл можете да използвате инструмента по време на работа, който превръща веригата според класовете за достъп до данни на такива, както е показано по-рано, за да се осигури DataTable видове клас. Да започнем с един прост файл XSD (Products.xsd), описвайки същата информация, както примера AutoLot, което се разглежда по-рано, а след това се разширява чрез добавяне на допълнителна функционалност:

Този файл се определя основно от атрибута схема номер, посочен в AutoLot. Дефинирани комплекс тип на име на продукта, съдържащ редица елементи - по един за всяка от областите на продукти за консумация.

Елементите са показани на класовете на данни, както следва. AutoLot схема показва класа, получени от набор от данни. Комплекс Тип на продукта показва в този клас, получени от DataTable. Всеки под-елемент се показва на клас, който произтича от DataColumn. Колекция от всички колони, които се показват в класа, получен от DataRow.

За щастие, в .NET Framework има инструмент, който генерира код за тези класове, използвайки XSD входен файл. Тъй като нейната единствена цел е да се изпълняват различни действия върху файлове XSD, в самата програма, се нарича XSD.EXE.

Ако приемем, че предишното файлът е записан като AutoLotXsd.xsd, тя може да се превърне в кода, като изпълните следната команда от командния ред:

Резултатът е AutoLotXsd.cs файл. С полезност xsd.exe различни ключове могат да бъдат използвани, с което се променя генериран изход. Някои от най-често използваните превключватели са описани по-долу:

Тя ви позволява да генерирате класове, които наследяват от DataSet, DataTable и DataRow.

Тя ви позволява да изберете езика, на който ще се генерира изходния файл. По подразбиране това е C #, но можете да посочите хб за зареждане на файла за Visual Basic .NET.

Тя ви позволява да определите пространството от имена, в който трябва да се постави генерирания код. По подразбиране, няма пространство от имена.

По-долу е съкратена версия на помощната програма изход XSD схема AutoLot:

Всички частни и защитени членове са отстранени, за да се съсредоточи върху публичния интерфейс. Определения ProductDataTable ProductRow и да се покаже позицията на двете подгрупи, които ще се реализират по-нататък. AutoLot () конструктор е частен метод InitClass (). че конструкти пример на клас получен от DataTable ProductDataTable и добавя маса на набора от данни за клас събиране таблици.

чрез добавяне на редове в таблицата се занимава с една от двете претоварен (и значително различно) AddProductRow () методи. Първият претоварването отнеме вече изградени DataRow и се връща за невалидни. Вторият отнема набор от ценности, по един за всяка DataTable колона, конструира нова линия, тя определя стойността, добавя един ред към DataTable обект и връща този низ на повикващия. И така различни функции се наричат ​​едно и също!

Като член InitClass (), получена от класа на масива, който добавя маса в данните, InitMember () член на ProductDataTable добавя колони в DataTable. Свойствата на всяка колона са определени по подходящ начин, след това колоната се добавя към колони за събиране.

Последният клас, които ще обсъдим - това ProductRow, наследена от DataRow. Този клас се използва за осигуряване на сигурен достъп до всички видове полета за данни на масата. Той служи като обвивка за определен низ и осигурява на членовете за четене (и писане) на всяко поле в таблицата.

В допълнение, за всяка от областта позволява нулеви стойности набор от функции, за да зададете областта на нула и проверка на стойността на полето за нула равенство. Следващият пример показва функцията за CarID колона: