Опубликован: 01.11.2011 | Доступ: свободный | Студентов: 1424 / 63 | Оценка: 3.84 / 3.44 | Длительность: 15:38:00
Специальности: Программист
Лекция 10:

Разработка бизнес-приложений Silverlight

Создание модели данных для приложения

Для того, чтобы управлять данными в приложении мы будем использовать модель сущности данных

Для того, чтобы создать модель сущности данных необходимо:

  1. В Solution Explorer, щелкните правой кнопкой мышки по проекту AdventureWorksOrders.Web, выберите пункт Add, а потом - New Item. Появится диалоговое окно Add New Item.
  2. В категории Data щелкните по шаблону ADO.NET Entity Data Model.
  3. Измените название на AdventureWorksEDM.edmx и щелкните по пункту Add. При этом откроется мастер Entity Data Model Wizard.
  4. На странице Choose Model Contents щелкните мышкой по пункту Generate from database и щелкните по пункту Next.
  5. На странице Choose Your Data Connection щелкните по пункту New Connection. При этом появится окно диалога Connection Properties.
  6. В качестве источника данных выберите пункт Select Microsoft SQL Server Database File, укажите расположение файла базы данных AdventureWorksLT.
  7. Нажмите OK.
  8. На странице Choose Your Data Connection щелкните Next.
  9. Если появится предложение скопировать файл базы данных в проект и изменить соединение, нажмите на пункт Yes.
  10. На странице Choose Your Database Objects разверните узел Tables.
  11. Поставьте галочки рядом с таблицами SalesOrderDetail (SalesLT) и SalesOrderHeader (SalesLT).

  12. Щелкните мышкой Finish. В дизайнере сущностей появятся таблицы SalesOrderDetail и SalesOrderHeader.
  13. Запустите проект

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

Создание службы доменов

Служба доменов отображает сущности данных и операций в модели данных для клиента. В данном упражнении мы добавим службу доменов к серверному проекту.

Для того, чтобы создать службу доменов необходимо:

  1. В Solution Explorer щелкните правой кнопкой мышки по проекту AdventureWorksOrders.Web, щелкните Add, после чего щелкните по пункту New Item. Появится окно диалога Add New Item.
  2. В категории Web щелкните по шаблону Domain Service Class.
  3. Назовите класс службы доменов именем AdventureWorksService, после чего щелкните по пункту Add. Появится окно диалога Add New Domain Service Class.
  4. Поставьте галочку в пункте Enable editing, после чего поставьте галочки напротив сущностей SalesOrderDetail и SalesOrderHeader.

  5. Нажмите OK.
  6. Запустите решение

Редактирование запроса службы доменов с целью включения связанных данных

Служба доменов предоставляет основные операции, требующие модификации в конкретном приложении. В данном примере мы отредактируем запрос GetSalesOrderHeaders, так, чтобы он возвращал связанные записи SalesOrderDetail. Для запуска объекта DataPager также требуется задание порядка сортировки в запросе.

Для того, чтобы изменить запрос службы домена необходимо:

  1. В Solution Explorer дважды щелкните по файлу AdventureWorksService.cs.
  2. Обновите метод GetSalesOrderHeaders следующим кодом.
    public IQueryable<SalesOrderHeader> GetSalesOrderHeaders()
    {
        return this.ObjectContext.SalesOrderHeaders.Include("SalesOrderDetails").OrderBy(e => e.SalesOrderID);
    }
              
  3. в Solution Explorer дважды щелкните по файлу AdventureWorksService.metadata.cs.
  4. В классе SalesOrderHeaderMetadata добавьте атрибут Include обязательно перед выражением коллекции сущностей SalesOrderDetails:
     [Include]
    public EntityCollection<SalesOrderDetail> SalesOrderDetails { get; set; }
              
  5. Запустите решение.

Создание страницы Silverlight для отображения данных

В этом упражнении мы добавим страницу Orders для отображения данных из таблиц.

Создание страницы Silverlight

  1. В Solution Explorer, в AdventureWorksOrders, щелкните правой кнопкой по папке Views и добавьте новый элемент.
  2. В диалоговом окне Add New Item щелкните по категории Silverlight, затем щелкните по шаблону Silverlight Page.
  3. Назовите Orders.xaml, щелкните по пункту Add.

Добавление кнопки навигации к домашней стричке

В этом упражнении мы добавим кнопку к домашней страничке приложения для перехода на страничку Orders.

Создание кнопки навигации

  1. В Solution Explorer дважды щелкните по MainPage.xaml.
  2. В окне XAML добавьте следующий код после строки
    <HyperlinkButton x:Name="Link2" ... />.
    <Rectangle x:Name="Divider3" Style="{StaticResource DividerStyle}"/>
    <HyperlinkButton x:Name="Link3" Content="Orders" 
      Style="{StaticResource LinkStyle}" NavigateUri="/Orders" TargetName="ContentFrame"/>
              
  3. Запустите приложение. В панели навигации должна появиться кнопка Orders.
  4. Щелкните по кнопке Order. Появится пустая страничка Orders.

Отображение связанных данных на странице

В этом упражнении мы создадим элемент управления связывания данных на странице Orders за счет перетаскивания элементов из окна Data Sources прямо в конструктор. Вначале мы создадим DataGrid, отображающий основную информацию об отдельном заказе, такую как Account Number, CustomerID, и Amount Due. Затем мы создадим элемент управления Grid, который перечисляет индивидуальные элементы заказа.

Создание элемента управления связывания данных

  1. В Solution Explorer дважды щелкните по Orders.xaml.
  2. Выберите меню Data и щелкните Show Data Sources. Откроется окно Data Sources. Учтите, что окно Data Sources уже содержитсущности, доступные для приложения.
  3. Щелкните по узлу SalesOrderHeader и щелкните по ниспадающему меню.
  4. Щелкните Details.
  5. Из окна Data Sources перетащите узел SalesOrderHeader в конструктор. При этом будет создан Grid, наполненный данными из таблицы SalesOrderHeader.

  6. In the Data Sources window, expand the SalesOrderHeader node.
  7. Click the SalesOrderDetails node (the child node of the SalesOrderHeader node).

  8. Перетащите узел SalesOrderDetails в конструктор. Появится DataGrid, содержащий данные из таблицы SalesOrderDetail.

Добавление разбивки на страницы для навигации по данным заказа

В данном упражнении мы добавим разбивку на страницы за счет добавления элемента управления DataPager к источнику данных. Мы установим DataPager.Source в положение DomainDataSource для управления данными на странице.

Нужно при этом учитывать, что DataPager требует, чтобы его данные были явно отсортированы. Именно поэтому выражение OrderBy было добавлено в запрос в самом начале упражнения.

Конфигурирование разбивки данных на страницы

  1. В Solution Explorer дважды щелкните по Orders.xaml.
  2. Найдите элемент управления DataPager в панели инструментов.
  3. Перетащите DataPager в конструктор.
  4. В окне Data Sources щелкните по узлу SalesOrderHeader.
  5. Перетащите узел SalesOrderHeader на DataPager. Это свяжет свойство Source элемента управления DataPager с корректным источником данных.
  6. Выберите DataPager в конструкторе.
  7. В окне Properties установите свойство PageSize равным 1.

Тестирование приложения

В этом упражнении мы построим и запустим приложение для того, чтобы убедиться, что программа работает нормально.

Тестирование приложения

  1. В меню Build щелкните по Build Solution. Убедитесь, что приложение работает без ошибок.
  2. Запустите приложение.
  3. Нажмите на кнопку Orders.
  4. Щелкните по кнопкам навигации на элементе управления DataPager для навигации по записям.

Учтите, что связь между главной и подчиненной таблицами появится в DataGrid при навигации по записям заголовка заказов.