Galin Iliev

Software Architecture & Development

LINQ to XSD

Преди да започнем с описанието на LINQ to XSD нека да споменем какво стои зад абревиатурата XSD (XML schema definition) – това е схемата, която описва XML документите. Въпреки, че XML документи могат да съществуват и без да има дефинирана схема, то наличието на такава позволява валидиране на структурата на документа и въведените данни. Чрез валидация осигуряваме данните, които са записани в чист текстов вид ( какъвто представлява XML ) са такива, каквито трябва да бъдат.

Разполагайки със схемата можем с инструментариума на LINQ to XSD,  се улеснява значително писането на зявки към данните в XML. Така кода от Четене и обхождане на XML  би изглеждал по този начин:

var products = from p in xml.Product

               orderby p.ProductID descending

               select new {

                   ProductName = p.ProductName,

                   ProductID = p.ProductID,

                   UnitPrice = p.UnitPrice,

                   UnitsInStock = p.UnitsInStock

               };

Както се вижда значително се намалява кода, а и с това възможността да се получи изключение по време на изпълнение. За да се постигне подобен начин на изписване, обаче, трябва да се изпълнят няколко неща:

·         Да разполагаме с XML документа,

·         Да разполагаме с XSD схемата,

·         VS да генерира съответните класове за данните спрямо схемата.

Точно тук се крие разликата в изграждането на LINQ to XSD. Нека да разгледаме последователно как може да постигнем това в среда на Visual Studio[12]:

1.       Създаваме нов проект от тип “LINQ to XSD Console Application”

2.       Добавяме нов елемент към проекта от тип XML File

3.       Добавяме нов елемент към проекта от тип XML Schema

4.       Задаваме при компилиране XML схемата да се използва за генериране на класове като задаваме Build Action “LinqToXsdSchema”

5.       Компилираме проекта, за да се генерират класовете от схемата, с което IntelliSense на Visual Studio ще има възможност да помага при писане на заявките. След компилация може да разгледаме класовете в прозореца Object Browser ( View ->  Object Browser)
За да увеличите снимката щракнете върху нея

6.       Добавяме в кода пространството от имена на генерираните класове и можем да пишем заявки, като разполагаме и с IntelliSense

За съжаление LINQ to XSD изглежда е изключено от Visual Studio 2008 Beta 2 както и LINQ to Entities, което означава, че двете ще бъдат пуснати по-късно като допълнение на Visual Studio 2008. Дотогава ще трябва да се задоволим с възможностите на LINQ to XML.

 

Следваща част: Заключение

Content