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.
Следваща част: Заключение