Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ
5.1 Разработка клиент-серверного приложения баз данных (тонкий клиент, толстый клиент, n-tier архитектура) 5.1.1 Создание базы данных и схемы School (в среде SQL Server Management Studio 2008) В меню “Файл” укажите пункт “Создать” и выберите пункт “Запрос к ядру СУБД”. В диалоговом окне “Подключение к компоненту Database Engine” введите “localhost” или имя локального экземпляра SQL Server, а затем нажмите кнопку “Соединить”. Из файла CREATE_School.sql вставьте сценарий Transact-SQL в окно запроса и нажмите кнопку “Выполнить”.
Обзор таблиц в базе данных School В меню “Файл” выберите пункт “Подключить к обозревателю объектов”. В диалоговом окне “Подключение к компоненту Database Engine” введите “localhost” или имя локального экземпляра SQL Server, а затем нажмите кнопку “Соединить”. В окне “Обозреватель объектов” разверните узел подключенного экземпляра, а затем последовательно разверните узлы “Базы данных”, “School”, “Таблицы” и просмотрите список табличных объектов в базе данных. Ниже показана схема базы данных School (рис. 5.1). Рис. 5.1 Схема базы данных для приложения баз данных
5.1.2 Создание приложения Course Manager в среде Visual Studio 2010 В меню “Файл” выберите пункт “Создать проект”. В области “Типы проектов” выберите “Visual C#”. В области “Шаблоны” выберите пункт “Приложение Windows Forms”. Введите в качестве имени проекта “CourseManager” и нажмите кнопку “ ОК”. Создание формы «Просмотр курсов» В проекте CourseManager выберите форму по умолчанию (Form1). В области “Свойства файла” измените “Имя файла” на CourseViewer.cs. В “обозревателе решений” дважды щелкните или “CourseViewer.cs”, чтобы открыть форму. В области “Свойства” измените значение свойства “Name” на “CourseViewer”, а свойства “Text — на Просмотр курсов”. В окне “Область элементов раскройте элемент “Общие элементы управления, перетащите элемент управления “ComboBox на форму и измените имя элемента управления на “departmentList. В окне “Область элементов перетащите элемент управления “Button на форму, измените имя этого элемента управления на “closeForm, а значение свойства “Text” - на “Закрыть”. В окне “Область элементов” раскройте элемент “Данные”, перетащите элемент управления “DataGridView” на форму и измените имя элемента управления на “courseGridView”. Дважды нажмите кнопку “closeForm”. Откроется страница программного кода формы, и будет создан метод обработчика события “closeForm_Click”. В тексте метода обработчика события “closeForm_Click” введите следующий код для закрывания формы: // Close the form. this.Close(); Приложение Course Manager успешно создано. Далее будут созданы файлы сопоставления, описывающие модель Entity Data Model (EDM) на основе взаимно-однозначного сопоставления с базой данных School, созданной в первой задаче.
Добавление шаблона элемента модели EDM ADO.NET В “обозревателе решений” щелкните проект CourseManager правой кнопкой мыши, укажите “Добавить” и выберите пункт “Создать элемент”. В области “Шаблоны” выберите “модель EDM ADO.NET”. В качестве имени модели введите “School.edmx” и нажмите кнопку “Добавить”. На экране откроется стартовая страница мастера моделей EDM.
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” в сетке данных, в базе данных.
5.1.5 Сохранение изменений, внесенных в объекты В “Области элементов” разверните узел “Общие элементы управления”, перетащите элемент управления “Кнопка” в конструктор формы “CourseViewer”, измените имя элемента управления на “saveChanges” и измените значения “Text” на “Обновить”. В конструкторе формы “CourseViewer” дважды щелкните элемент управления “saveChanges”. При этом будет создан метод обработчика события “saveChanges_Click”. Вставьте следующий код, сохраняющий изменения объекта в базе данных.
try { int numChanges; // Save object changes to the database, display a message, // and refresh the form. numChanges = schoolContext.SaveChanges(); MessageBox.Show(numChanges.ToString() + " change(s) saved to the database."); this.Refresh(); } catch (Exception ex) { MessageBox.Show(ex.Message); }
Закрытие соединений с помощью удаления контекста долго выполняемых объектов В методе “closeForm_Click” обработчика события введите следующий код. Этот код удаляет контекст объекта перед закрытием формы.
// Dispose the object context. schoolContext.Dispose();
Сборка и запуск приложения Class Scheduling В меню “Отладка” выберите команду “Начать отладку” или “Запуск без отладки”. Выполняются сборка и запуск приложения. После загрузки формы выберите отдел в элементе управления “ComboBox”. Отображаются курсы, принадлежащие данному отделу. В представлении “DataGridView” обновите сведения курса или добавьте новый курс, а затем нажмите кнопку “Update”. Изменения сохраняются в базе данных, и отображается окно сообщения, в котором указано число сохраненных изменений. |
Последнее изменение этой страницы: 2019-04-19; Просмотров: 282; Нарушение авторского права страницы