Программирование >>  Программирование с использованием ajax 

1 ... 279 280 281 [ 282 ] 283 284 285 ... 396


16. Откомпилируйте и выполните программу (можете просто нажать <F5> для запуска отладки). Вы увидите на экране информацию о заказчиках из США, как показано ниже:

ID = GREAL, Name = Great Lakes Food Market, City = Eugene, State = OR } ID = HUNGC, Name = Hungry Coyote Import Store, City = Elgin, State = OR } ID = LAZYK, Name = Lazy К Kountry Store, City = Walla Walla, State = WA } ID = LETSS, Name = Lets Stop N Shop, City = San Francisco, State = CA } ID = LONEP, Name = Lonesome Pine Restaurant, Ci.ty = Portland, State = OR } ID = OLDWO, Name = Old World Delicatessen, City = Anchorage, State = AK } ID = RATTC, Name = Rattlesnake Canyon Grocery, City = Albuquerque, State = NM } ID = SAVEA, Name = Save-a-lot Markets, City = Boise, State = ID } ID = SPLIR, Name = Split Rail Beer & Ale, City = Lander, State = WY } ID = THEBI, Name = The Big Cheese, City = Portland, State = OR } ID = THECR, Name = The Cracker Box, City = Butte, State = MT } ID = TRAIH, Name = Trails Head Gourmet Provisioners, City = Kirkland, State = WA } ID = WHITC, Name = White Clover Markets, City = Seattle, State = WA } Для продолжения нажмите Enter...

Просто нажмите <Enter> для завершения программы и закрытия экрана консоли. Если вы использовали <Ctrl+F5> (запуск без отладки), может понадобиться нажать <Enter> два раза. Это завершит выполнение программы. Теперь давайте рассмотрим ее работу в деталях.

Описание полученных результатов

Код для этого и всех прочих примеров этой главы подобен примеру, описанному во введении в LINQ, который изложен в предыдущей главе, и использует расширяющие классы из пространства имен System. Linq, на которое установлена ссылка using, автоматически вставленная Visual С# 2008 при создании проекта:

using System.Linq;

Первый шаг использования классов LINQ to SQL состоит в создании экземпляра объекта DataContext для определенной базы данных, к которой вы обращаетесь; экземпляр представляет собой класс из файла .dbml, созданного в 0/R Designer. Этот объект служит воротами к вашей базе данных, предоставляя все методы, которые вам необходимы для управления ею из программы. Он также служит фабрикой для создания бизнес-объектов, соответствующих концептуальным сущностям, хранящимся в вашей базе данных (например, заказчикам и продуктам).

В проекте класс контекста данных называется NorthwindDataContext, и он скомпилирован из файла Northwind.dbml. Первый шаг в методе Main () состоит в создании экземпляра NorthwindDataContext, как показано ниже:

NorthwindDataContext northWindDataContext = new NorthwindDataContext();

Когда вы перетаскиваете таблицу Customers в панель 0/R Designer, объект Customer добавляется в класс LINQ to SQL в Northwind.dbml, a член Customers добавляется к объекту NorthwindDataContext, чтобы позволить запрашивать объекты Customer в базе данных Northwind.

Преобразование к множественному числу в 0/R Designer

0/R Designer обнаруживает, что имя таблицы Customers представляет собой множественную форму существительного английского языка и автоматически создает имя Customer в единственном числе для генерируемого объекта. Вы можете управлять этим поведением через пункт меню Tools>=>OptionsDatabase ToolsiO/R Designer (Сервис Параметры=t>Инструменты=>О/R Designer), как показано на следующем рисунке.



Объекты С#


Реляционные таблицы в базе данных SQL Таблица Customer

Слой объектно реляционного отображения (LINQ to SQL)


Name

City

Country

Zhang

NewYork

Smythe

London

Smgh

Mumbiii

India

Таблица Order

Order #

Customer ID

Product ID

Quantity

Таблица Product

ID 1

Product 1 Price Widget i $25 00 Wax $3 00

Cable 1 $50.00

Вы можете отключить это преобразование множественного в единственное число, установив параметр Pluralization of Names Enabled (Включить преобразование к множественному числу) в False вместо значения по умолчанию True. Однако, возможно, стоит не изменять это поведение, потому что оно делает имена классов и их членов более интуитивно понятными.

Сам оператор LINQ выполняет запрос, используя член Customers объекта NorthwindDataContext как источника данных:

var queryResults = from с in northWindDataContext.Customers where c.Country == USA select new {

ID=c.CustomerID, Name=c.CompanyName, City=c.City, State=c.Region

Customers - типизированная таблица LINQ (System. Data. Linq. Table<Customer>), которая подобна типизированной коллекции объектов Customer (как List<Table>), но реализована для LINQ to SQL, и заполняется информацией из базы данных автоматически. Она реализует интерфейсы lEnumerable/IQueryable, и потому может использоваться в качестве источника данных LINQ в конструкции from, как любая другая коллекция или массив.

Конструкция where ограничивает результаты только перечнем заказчиков из США. Конструкция select - это проекция, подобная примерам, которые разрабатывались в предыдущей главе; она создает новый объект с членами ID, Name, City и State. Поскольку вы знаете, что результаты относятся только к США, вы можете переименовать Region в State, чтобы более точно отображать результаты. И, наконец, вы создаете стандартный цикл foreach, подобный тому, что разрабатывался в главе 26:

foreach (var item in queryResults) { Console.WriteLine(item);

Этот код использует сгенерированный по умолчанию метод ToString () для каждого элемента, чтобы форматировать вывод для Console.WriteLine (item), так что вы можете видеть значения каждого экземпляра - члена проекции в фигурных скобках:

{ ID=WHITC, Name=White Clover Markets, City=Seattle, State=WA }



И, наконец, пример завершается кодом, выполняющим паузу, чтобы вы могли увидеть результат:

Console.WriteLine( Для продолжения нажмите Enter... ); Console.ReadLineО;

Таким образом, вы создали базовый запрос LINQ to SQL, который можно использовать в качестве основы для построения других, более сложных запросов.

Навигация по отношениям LINQ to SQL

Одним из наиболее мощных аспектов 0/R Designer из Visual Studio является его способность автоматически создавать объекты LINQ to SQL, которые помогут выполнять навигацию по отношениям между связанными таблицами в базе данных. В следующем практическом занятии вы добавите связанную таблицу к классу LINQ to SQL, а также напишете код навигации по связанным объектам данных в базе и печати их значений.

1ктическое занятие

Навигация по отношениям LINQ to SQL

Для создания примера выполните следующие шаги в Visual С# 2008.

1. Модифицируйте проект из предыдущего примера BegVCSharp 27 1 FirstLINQtoSQLQuery в каталоге С: \BegVCSharp\Chapter27, как описано в следующих шагах.

2. Щелкните на таблице Orders в окне Database Explorer и перетащите ее в панель Northwind.dbml, как показано на рис. 17.15.

,е Eroct fiuiJ £)et> 5 Dt lex

- 4 NOPTHWNO WDf . Detebtie Di*9 T4

CurtomefCirtlomffOemo . J Ortter CM iH

. Functont . Synoo.rm

Prcpen ei

T Coorrr,

Зш.

if ОсЫР CultcfrtflD

Л* Sep, recO*? T Sh-F

h.pFfg on

Pwc. 27.75. Перетаскивание таблицы Orders

3. Откомпилируйте проект, чтобы объект Order появлялся в IntelliSense, когда вы начинаете вводить код для следующего шага.

4. Откройте главный файл Program.cs. В методе Main() добавьте поле Orders к конструкции select запроса LINQ (не забудьте добавить запятую после с.Region, чтобы отделить дополнительные поля от остальной части списка):



1 ... 279 280 281 [ 282 ] 283 284 285 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика