- •Методические указания к лабораторным работам
- •«Клиент-серверные технологии субд»
- •Санкт-Петербург
- •080801 – Прикладная информатика в экономике и
- •Содержание
- •Цель работы
- •Программно - техническая платформа
- •Теоретическая часть
- •Перечень заданий к лабораторной работе
- •Порядок выполнения лабораторной работы
- •5.1 Разработка клиент-серверного приложения баз данных (тонкий клиент, толстый клиент, n-tier архитектура)
- •5.1.2 Создание приложения Course Manager в среде Visual Studio 2010
- •5.1.3 Формирование модели edm
- •5.1.4 Запрос данных о факультетах из базы данных School
- •5.1.5 Сохранение изменений, внесенных в объекты
- •5.2. Дизайн модели данных и ее использование в клиент-серверном приложении
- •5.3 Разработка клиент-серверных приложений баз данных с различными сценариям доступа к данным
- •Основы asp.Net Dynamic Data
- •5.4 Разработка распределенных приложений баз данных в клиент-серверной архитектуре с использованием сервисов данных
- •5.4.1. Создание сервиса данных
- •5.4.2 Создание клиентского приложения
- •5.5 Асинхронные приложения баз данных в клиент-серверной технологии субд
- •Содержание отчета по лабораторной работе
- •Список литературы
- •7.1 Основная
- •7.2 Дополнительная:
- •Приложения
- •Образец титульного листа отчета по лабораторной работе
- •Клиент-серверные технологии субд отчет по лабораторным работам
5.1.3 Формирование модели edm
В диалоговом окне “Выбор содержимого модели” выберите “Создать из базы данных”. Затем нажмите кнопку “Далее”.
Нажмите кнопку “Создать соединение”.
В диалоговом окне “Выбор источника данных” выберите источник данных и нажмите кнопку “Продолжить”.
В диалоговом окне “Свойства соединения” введите имя сервера, выберите метод проверки подлинности, введите имя базы данных “School” и нажмите кнопку “ОК”.
В диалоговом окне “Выбор подключения к данным” появятся заданные настройки подключения к базе данных.
Проверьте, что установлен флажок “Сохранить параметры соединения сущности в App.Config как:” и задано значение “SchoolEntities”. Затем нажмите кнопку “Далее”.
Откроется диалоговое окно “Выбор объектов базы данных”.
Убедитесь в том, что выделены все таблицы и хранимые процедуры и параметр “Пространство имен модели” имеет значение “SchoolModel”, а затем нажмите кнопку “Готово”, чтобы завершить работу мастера.
Мастер выполняет следующие действия:
Добавляет ссылки на сборки System.Data.Entity, System.Runtime.Serialization и System.Security.
Создает файл School.edmx, который определяет модель EDM.
Создает файл с исходным кодом, в котором содержатся классы, сформированные на базе данной модели EDM. Файл с исходным кодом можно просмотреть, раскрыв EDMX-файл в “Обозревателе решений”.
Создает файл App.Config.
Открывание модели EDM в конструкторе моделей EDM ADO.NET
В “Обозревателе решений” дважды щелкните файл School.edmx.
Модель School откроется в окне конструктора моделей EDM ADO.NET, как показано на следующей схеме (рис. 5.2).
Рис. 5.2 Модель сущностей
В меню “Вид” выберите “Другие окна” и щелкните “Показать обозреватель моделей сущностей”.
Будет открыто окно обозревателя моделей сущностей.
Раскройте узлы “SchoolModel” и “SchoolModel.Store”, чтобы просмотреть концептуальные определения и определения хранения соответственно.
В меню “Вид” выберите “Другие окна”, щелкните “Показать сведения о сопоставлении сущности”, а затем щелкните сущность или ассоциацию в конструкторе сущностей.
Будет открыто окно «Сведения о сопоставлении сущности» с информацией об объектно-реляционном сопоставлении для выделенного объекта.
Файлы сопоставления и определения классов для модели School были успешно созданы. Далее предстоит создать запросы к объектам CLR, которые представляют сущности и ассоциации в модели School, и связать результаты этих запросов с элементами управления.
5.1.4 Запрос данных о факультетах из базы данных School
В начале файла с кодом для формы CourseViewer добавьте директиву using (C#) или Imports (Visual Basic), чтобы сослаться на модель, созданную из базы данных School, и пространство имен сущностей.
using System.Data.Objects;
using System.Data.Objects.DataClasses;
В начале определения разделяемого класса для формы CourseViewer добавьте следующий код, создающий экземпляр ObjectContext.
// Create an ObjectContext instance based on SchoolEntity.
private SchoolEntities schoolContext;
В конструкторе форм CourseViewer дважды щелкните форму CourseViewer.
Откроется страница с кодом формы, и будет создан метод обработчика события courseViewer _Load.
В методе обработчика события courseViewer _Load скопируйте и вставьте следующий код, который определяет представление DataGridView, выполняет запрос, возвращающий коллекцию факультетов (упорядоченную по параметру Name), и привязывает коллекцию объектов Department к элементу управления departmentList.
// Initialize the ObjectContext.
schoolContext = new SchoolEntities();
// Define a query that returns all Department objects and related
// Course objects, ordered by name.
ObjectQuery<Department> departmentQuery =
schoolContext.Department.Include("Course").OrderBy("it.Name");
try
{
// Bind the ComboBox control to the query, which is
// executed during data binding.
this.departmentList.DataSource = departmentQuery;
this.departmentList.DisplayMember = "Name";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Отображение курсов для выбранного факультета
В конструкторе форм “CourseViewer” дважды щелкните элемент управления “departmentList”.
Будет создан метод обработчика события “departmentList_SelectedIndexChanged”.
Вставьте следующий код, который загружает курсы, связанные с выбранным факультетом.
try
{
// Get the object for the selected department.
Department department =
(Department)this.departmentList.SelectedItem;
// Bind the grid view to the collection of Course objects
// that are related to the selected Department object.
courseGridView.DataSource = department.Course;
courseGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Были успешно созданы запросы, возвращающие объекты “Department” и “Course” и связывающие эти объекты с элементами управления. После этого необходимо сохранить изменения, выполненные для объектов “Course” в сетке данных, в базе данных.