Поделиться через


Пошаговое руководство по созданию модели Adventure Works Sales и запроса к ней (на языке C#)

Данное пошаговое руководство представляет базовый комплексный сценарий LINQ to Entities минимальной сложности. Будет создана модель AdventureWorks Sales, содержащая сущности и взаимосвязи на основе таблиц Address, Contact, Product, SalesOrderHeader и SalesOrderDetail в образце базы данных AdventureWorks. Затем будет создан простой запрос для получения списка всех продуктов красного цвета в каталоге продуктов AdventureWorks.

Предварительные требования

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

Общие сведения

Данное пошаговое руководство состоит из четырех основных задач.

  • Создание решения LINQ to Entities в среде Visual Studio 2008.

  • Создание модели AdventureWorks Sales.

  • Создание простого запроса, выполняемого для модели Sales.

  • Выполнение запроса и просмотр результатов.

Создание решения LINQ to Entities

В первой задаче будет создано решение Visual Studio, содержащее ссылки, необходимые для построения и запуска проекта LINQ to Entities.

Создание решения C# LINQ to Entities

  1. В среде Visual Studio в меню Файл укажите Создать и выберите пункт Проект.

  2. В области Типы проектов диалогового окна Создание проекта выберите Visual C#.

  3. Выберите из раскрывающегося меню пункт .NET Framework 3.5.

  4. В области Шаблоны выберите Приложение командной строки.

  5. В поле Имя введите LinqToEntitesConsoleApp.

  6. В окне Расположение выберите расположение файлов проекта, а затем нажмите кнопку ОК.

  7. В меню Проект выберите команду Добавить ссылку, перейдите на вкладку .NET, щелкните сборку System.Data.Entity и нажмите кнопку ОК.

  8. Добавьте директиву using, указав пространство имен System.Data.Objects к своему файлу исходного кода.

Создание модели AdventureWorks Sales

В этой задаче будет создана модель AdventureWorks Sales при помощи мастера Entity Data Model и ссылка на модель в проекте.

Создание модели AdventureWorks Sales и ссылки на нее

  1. В меню Проект выберите пункт Добавить новый элемент.

  2. В области Шаблоны диалогового окна Добавление нового элемента выберите Модель EDM ADO.NET. Назовите модель AdventureWorksSalesModel и нажмите кнопку Добавить.

  3. В диалоговом окне Выбор содержимого модели выберите Создать из базы данных и нажмите кнопку Далее.

  4. В окне Выбор подключения к данным выберите из списка существующее соединение AdventureWorks или создайте новое соединение с образцом базы данных AdventureWorks на экземпляре SQL Server.

  5. Сохраните параметры соединения в файле App.Config как AdventureWorksEntities и нажмите кнопку Далее.

  6. В диалоговом окне Выбор объектов базы данных очистите все объекты, разверните узел Таблицы и выберите следующие табличные объекты.

    • Address (Person)

    • Contact (Person)

    • Product (Production)

    • SalesOrderDetail (Sales)

    • SalesOrderHeader (Sales)

  7. Назовите пространство имен модели AdventureWorksModel и нажмите кнопку Готово.

  8. Открывается представление Выбор модели, отображающее сущности, содержащиеся в модели AdventureWorks Sales. Нажмите кнопку сохранения и выберите вкладку Program.cs, чтобы вернуться к исходному коду.

  9. Добавьте в исходный файл инструкцию using, указав пространство имен AdventureWorksSalesModel.

Создание простого запроса

На этом шаге будет создан запрос для поиска в каталоге продукции AdventureWorks продуктов красного цвета. В переменной запроса хранятся только команды запроса, если он предназначен для возврата последовательности значений. Фактическое выполнение запроса откладывается до тех пор, пока переменная запроса не будет обработана в цикле foreach. Такой подход называется отложенным выполнением. Дополнительные сведения см. в разделе Выполнение запроса.

Создание простого запроса

  • Введите или вставьте следующий код в метод Main.
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
    ObjectQuery<Product> products = AWEntities.Product;

    IQueryable<Product> query =
        from product in products
        where product.Color == "Red"
        select product;

    foreach (Product product in query)
    {
        Console.WriteLine("Name: {0}", product.Name);
        Console.WriteLine("Product number: {0}", product.ProductNumber);
        Console.WriteLine("List price: ${0}", product.ListPrice);
        Console.WriteLine("");
    }
}

//Prevent the console window from closing.
Console.WriteLine("Hit Enter...");
Console.Read();

Выполнение запроса

На этом шаге производится фактическое выполнение запроса. Выражение запроса, созданное на предыдущем шаге, не вычисляется до тех пор, пока не потребуются результаты. В начале цикла foreach выполняется запрос к модели AdventureWorks Sales, после чего результаты материализуются.

Выполнение запроса

  1. Нажмите клавишу F5, чтобы запустить приложение в режиме отладки.

  2. Результаты запроса должны появиться в окне консоли.

  3. Нажмите в окне консоли клавишу ВВОД, чтобы закрыть приложение.

См. также

Задачи

Как использовать мастер моделей EDM (платформа Entity Framework)

Основные понятия

Общие сведения о технологии LINQ to Entities