|
Программирование >> Программирование с использованием ajax
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)
Таблица Order
Таблица Product
Вы можете отключить это преобразование множественного в единственное число, установив параметр 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, чтобы отделить дополнительные поля от остальной части списка):
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |