Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #71, ОКТЯБРЬ 2006 г.

орки наступают

БОРИС ВОЛЬФСОН

Спецвыпуск: Хакер, номер #071, стр. 071-060-4


[DLinq.]

Все, что было прежде – цветочки, теперь начинаются ягодки. Действительно, истинная мощь новой концепции встроенного языка запросов раскрывается при работе с базами данных. Для работы с базой данных, как это ни банально звучит, необходим сервер баз данных. В нашем случае это будет Microsoft SQL Server. В поставку Visual Studio входит его бесплатная версия SQL Server Express – она тоже подойдет для наших экспериментов.

Теперь надо выбрать базу данных, с которой мы будем работать. Я возьму стандартную базу данных NorthWind, которая поставляется с LINQ. Проще всего посмотреть ее структуру и содержание прямо из самой Visual Studio, просто добавив новое соединение и выбрав файл С:\Program Files\LINQ Preview\Data\NORTHWND.MDF.

После приготовлений можно приступать к кодированию. Для начала напишем простейший запрос на выборку всех заказчиков, которые живут в Париже:

var q =

from c in db.Customers

where c.City == "Paris"

select c;

ObjectDumper.Write(q);

Обрати внимание, что для печати используется специальный класс ObjectDumper, который на основе механизма отражения (reflection) печатает объект, переданный ему. Кроме того, он напечатает еще и запрос, который был сгенерирован к базе данных:

SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName],

[t0].[ContactTitle], [t0].[Address], [t0].[City], [t0].[Region],

[t0].[PostalCode], [t0].[Country], [t0].[Phone], [t0].[Fax]

FROM [Customers] AS [t0]

WHERE [t0].[City] = @p0

При сортировке данных используем специальный оператор orderby с указанием сортировать по возрастанию или по убыванию. Попробуем отсортировать продукты по цене:

var q =

from p in db.Products

orderby p.UnitPrice descending

select p;

Думаю, принцип создания простых запросов на выборку понятен. Надо научиться добавлять данные. Рассмотрим один из стандартных примеров по этой теме. Сначала надо вывести всех клиентов со свойством Region равным «WA». После это надо вставить нового заказчика, для чего просто создаем объект, используя инициализацию свойств. Добавляем нового заказчика и подтверждаем транзакцию, в результате чего новый заказчик благополучно оказывается в базе данных, о чем свидетельствует вывод на консоль.

var q =

from c in db.Customers

where c.Region == "WA"

select c;

Console.WriteLine("*** BEFORE ***");

ObjectDumper.Write(q);

Console.WriteLine();

Console.WriteLine("*** INSERT ***");

var newCustomer = new Customer { CustomerID = "MCSFT",

CompanyName = "Microsoft",

ContactName = "John Doe",

ContactTitle = "Sales Manager",

Address = "1 Microsoft Way",

City = "Redmond",

Region = "WA",

PostalCode = "98052",

Country = "USA",

Phone = "(425) 555-1234",

Назад на стр. 071-060-3  Содержание  Вперед на стр. 071-060-5