Опубликован: 08.07.2011 | Уровень: для всех | Доступ: платный
Самостоятельная работа 2:

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

< Лекция 7 || Самостоятельная работа 2: 12345 || Лекция 8 >
Аннотация: Материал лабораторной работы базируется на знаниях, полученных при изучении лекций 6 и 7.

Цель

В процессе выполнения работы необходимо разработать браузерное/внебраузерное Silverlight-приложения

Задание 1. Разработать серверные компоненты приложения – 2 час.

Создайте новое веб-приложение ASP.NET, например с именем PersonService ( рис. 9.1). Имя приложения целесообразно связать с вариантом разрабатываемтй информационной подсистемы

Создание новое веб-приложение ASP.NET

увеличить изображение
Рис. 9.1. Создание новое веб-приложение ASP.NET

В проекте целесообразно использовать порт 12345. Для этого откройтве окно свойств проекта и на вкладке Веб введите новый номер порта ( рис. 9.2).

Создание новое веб-приложение ASP.NET

увеличить изображение
Рис. 9.2. Создание новое веб-приложение ASP.NET

Добавьте в проект новый элемент – модель ADO.NET EDM, и присвойте файлу модели имя, в примере это - Employee.edmx.

При завершении работы мастера создания EDM-модели в проект будет добавлен файл Employee.edmx.

Создание службы данных. Добавьте в проект новый элемент – службы данных WCF, файл которой в примере назван - WfcDataServicePerson.svc ( рис. 9.3).

Добавление в проект службы данных

увеличить изображение
Рис. 9.3. Добавление в проект службы данных

В объявлении сгенерированного класса WcfDataServicePerson необходимо указать обобщенный тип PersonalEntities (EDM-модель) родительского класса DataService, то есть:

public class WcfDataServicePerson : DataService<PersonalEntities>

и права при работе с таблицами базы данных:

config.SetEntitySetAccessRule("Employees", EntitySetRights.All);
config.SetEntitySetAccessRule("JobTitles", EntitySetRights.All);

Это обеспечивает авторизованным клиентам доступ к ресурсам указанных наборов сущностей.

Отредактированный класс службы данных будет иметь следующий вид:

public class WcfDataServicePerson: DataService<PersonalEntities>
    {
        public static void InitializeService(DataServiceConfiguration config)
        {
            config.SetEntitySetAccessRule("Employees", EntitySetRights.All);
            config.SetEntitySetAccessRule("JobTitles", EntitySetRights.All);
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
        }
    }

Результаты запуска службы данных приведены на рис. 9.4.

Тестирование службы данных

увеличить изображение
Рис. 9.4. Тестирование службы данных

Задание 2. Разработать интерфейс клиентской части приложения – 2 часа.

Создайте для имеющегося решения новый проект Silverlight, например с именем SilverlightAppPersonal ( рис. 9.5).

Создание нового проекта – приложения Silverlight

увеличить изображение
Рис. 9.5. Создание нового проекта – приложения Silverlight

В окне мастера создания приложения Silverlight проверьте размещение приложения и версию Silverlight ( рис. 9.6). В нашем проекте приложение Silverlight должно размещаться на существующем сайте в решении PersonService, а версия Silverlight должна быть – 4.

Окно мастера создания приложения Silverlight

Рис. 9.6. Окно мастера создания приложения Silverlight

В обозревателе решений будет добавлен новый проект SilverlightAppPersonal ( рис. 9.7).

Дизайнер решения с приложением Silverlight

увеличить изображение
Рис. 9.7. Дизайнер решения с приложением Silverlight

Для проекта SilverlightAppPersonal добавьте ссылку на службу данных. В мастере добавления ссылки на службу с помощью кнопки "Найти" определите адрес и имя службы и задайте пространство имен службы – Personal ( рис. 9.8).

Добавление ссылки на службу WcfDataServicePerson

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

В обозревателе решений будет добавлена ссылка на службу ( рис. 9.9).

Ссылка на службу в обозревателе решений

Рис. 9.9. Ссылка на службу в обозревателе решений

Добавление в проект нового файла кода позволяет приложению оперировать с классами данных, которые используются для доступа к ресурсам служб данных, и взаимодействовать с ними, как с объектами. Классы данных создаются в стандартном пространстве имен клиентского приложения, которое в нашем случае имеет имя Personal.

Для обеспечения функциональности необходимо добавить интерфейсные элементы на главную страницу приложения.

< Лекция 7 || Самостоятельная работа 2: 12345 || Лекция 8 >
Александр Петров
Александр Петров

При загрузке данных из БД возникает исключение InvalidOperationException с сообщением: Элемент коллекции должен быть пустым перед использованием ItemsSource. Знаю, что для заполнения DataGrid можно использовать коллекции Items или ItemsSource, но одновременно их использовать нельзя: если задано значение для свойства ItemsSource и в коде C# добавляется элемент в Items, возникает исключение. 
Вопрос, как отследить и отключить добавление элемента в Items?

Максим Спиридонов
Максим Спиридонов

В пятой лекции на второй странице в компиляторе выскакивает ошибка в строчке :

ObjectQuery<Employee> employees = DataEntitiesEmployee.Employees;

Ошибка CS0029

Не удается неявно преобразовать тип "System.Data.Entity.DbSet<WpfApplProject.Employee>" в "System.Data.Entity.Core.Objects.ObjectQuery<WpfApplProject.Employee>".

в using прописал все как положено, здесь похоже именно с преобразованием типов проблемы

Igor Chelyadinski
Igor Chelyadinski
Беларусь, Минск, №54, 2013
Валентина Алешина
Валентина Алешина
Россия