Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ



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; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.039 с.)
Главная | Случайная страница | Обратная связь