Спонсор: Microsoft
Опубликован: 01.03.2010 | Доступ: свободный | Студентов: 942 / 39 | Оценка: 4.38 / 4.31 | Длительность: 09:26:00
Лекция 3:

Работа вне браузера и с web-сервисами

< Лекция 2 || Лекция 3: 123456 || Лекция 4 >

Работа Silverlight с базами данных

Ключевым аспектом любого бизнес-приложения и многих других приложений является возможность переноса информации из базы данных в пользовательский интерфейс. Подключение осуществляется с помощью сущностей Entity. В качестве промежуточного транспортного слоя можно использовать классы служб RIA (подробнее в "Практикум" , либо классы Windows Communication Foundation.

Подключение к базе данных с помощью классов Domain Service

В данном разделе используем базу данных-пример AdventureWorks для MS SQL Server 2008. Непосредственное подключение к базе данных мы не рассматриваем, т.к. нежелательно иметь прямой доступ к базе данных из Интернета. Ведь доступ рассматривается в контексте Silverlight, т.е. веб-технологии. Лучшим образом организовать доступ к СУБД посредством ASP.NET класса Domain Service и Entity, который размещен на том же сайте, где и приложение Silverlight.

Воспользуемся шаблоном Silverlight Application при создании Silverlight приложения имеющего доступ к данным базы данных. Будет создано решение с двумя проектами SilverlightApplication1 и SilverlightApplication1.Web. Эта процедура описана в разделе 0 "Дизайн и разработка приложений Silverlight в Visual Studio 2008". Затем в веб-проекте SilverlightApplication1.Web создадим модель ADO.NET Entity Data Model, как показано на рис. 3.6.

Создание ADO.NET Entity Data Model

увеличить изображение
Рис. 3.6. Создание ADO.NET Entity Data Model

Выбираем шаблон генерации модели на основе существующей базы данных. Выбираем имеющуюся СУБД (параметр Connection String), выбираем все нужные таблицы, представления, функции и процедуры. И запускаем процедуру генерации модели. Все данные действия показаны на рис. 3.7, рис. 3.8, рис. 3.9.

Генерация модели данных на основе существующей базы данных

увеличить изображение
Рис. 3.7. Генерация модели данных на основе существующей базы данных
Выбор источника данных для модели

увеличить изображение
Рис. 3.8. Выбор источника данных для модели
Выбор объектов базы данных для модели

увеличить изображение
Рис. 3.9. Выбор объектов базы данных для модели

Автоматически будет сгенерирован класс прокси-класс Model1.Designer.cs, который содержит все выбранные элементы, как отдельные классы и свойства. После окончания генерации будет видно окно с визуальным представлением сгенерированной модели (рис. 3.10 и рис. 3.11).

Сущности модели данных

увеличить изображение
Рис. 3.10. Сущности модели данных
Свойства сущности модели данных

увеличить изображение
Рис. 3.11. Свойства сущности модели данных

Теперь необходимо в том же веб-проекте SilverlightApplication1.Web создать прокси-класс Domain Service (рис. 3.12). Но перед этим необходимо скомпилировать приложение SilverlightApplication1.Web. Иначе нельзя будет увидеть сущности.

Добавление класса Domain Service

Рис. 3.12. Добавление класса Domain Service

Далее выбираем все необходимые сущности (рис. 3.13), которые войдут в прокси-класс Domain Service DomainService1.

Добавление класса Domain Service. Выбор сущностей

увеличить изображение
Рис. 3.13. Добавление класса Domain Service. Выбор сущностей

Теперь переходим к проекту SilverlightApplication1. Добавляем элемент управления DataGrid на главную страницу MainPage.xaml.

<data:DataGrid x:Name="dataGrid1"/>

Данные можно загрузить с помощью процедурного языка, как показано на рис. 3.14 и на листинге кода программы:

using SilverlightApplication1.Web;
using System.Windows.Ria.Data;

namespace SilverlightApplication1
{
  public partial class MainPage : UserControl
  {
    private SilverlightApplication1.Web.DomainService1 domainService = 
                                       new DomainService1();
    public MainPage()
    {
        
      InitializeComponent();
      System.Windows.Ria.Data.LoadOperation<Product> loadOp = 
                    this.domainService.Load<Product>
                   (this.domainService.GetProductQuery());
      this.dataGrid1.DataContext = loadOp.Entities;
    }
  }
}
Добавление ссылки на сервис Domain Service

увеличить изображение
Рис. 3.14. Добавление ссылки на сервис Domain Service

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

Пример приложения, имеющего доступ к базе данных

Рис. 3.15. Пример приложения, имеющего доступ к базе данных
< Лекция 2 || Лекция 3: 123456 || Лекция 4 >
Атанас Маринов
Атанас Маринов
Болгария
Pavel Pelevin
Pavel Pelevin
Украина, Одесса