Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа № 2

.pdf
Скачиваний:
68
Добавлен:
13.05.2015
Размер:
849.53 Кб
Скачать

Егоров А.А.

Технология программирования

АСОИУ

Технология

программирования

Лабораторная работа №2

1

Егоров А.А.

Технология программирования

АСОИУ

Лабораторная работа № 2

Entity Framework

Цель работы: Изучение подходов к разработке Entity Framework.

Задание:

1.Создать проект Windows 32 Application.

2.Подключиться к базе данных AdwentureWorks (подход Database First).

Дополнительный материал.

ADO.NET Entity Framework представляет собой набор технологий ADO.NET,

обеспечивающих разработку приложений, связанных с обработкой данных. Архитекторам и разработчикам приложений, ориентированных на обработку данных, приходится учитывать необходимость достижения двух совершенно различных целей. Они должны моделировать сущности, связи и логику решаемых бизнес-задач, а также работать с ядрами СУБД, используемыми для сохранения и получения данных. Данные могут распределяться по нескольким системам хранения данных, в каждой из которых применяются свои протоколы, но даже в приложениях, работающих с одной системой хранения данных, необходимо поддерживать баланс между требованиями системы хранения данных и требованиями написания эффективного и удобного для обслуживания кода приложения.

Существует три подхода к разработке приложений с помощью Entity Framework

(рис. 1):

Database First;

Model First;

Code First.

2

Егоров А.А.

Технология программирования

АСОИУ

Рис. 1 – Подходы к работе с данными в Entity Framework

Database First

В случае уже имеющейся базы данных Entity Framework может автоматически создать модель данных, состоящую из классов и свойств, соответствующих объектам базы даных (таким, как таблицы и столбцы). Информация о структуре базы (store schema),

модель данных (conceptual model) и маппинг их друг на друга содержится в XML в файле

.edmx. Visual Studio предоставляет графический дизайнер Entity Framework, с помощью которого можно просматривать и редактировать .edmx. Части Getting Started With the Entity Framework и Continuing With the Entity Framework в материалах о Web Forms

используют подход Database First.

Model First

Если базы нет, вы можете начать с создания модели данных, используя дизайнер

Entity Framework Visual Studio. После окончания работ над моделью дизайнер сгенерирует

DDL (data definition language)-код для создания базы. В этом подходе для хранения информации о модели и маппингах также используется .edmx. What's New in the Entity Framework 4 включает небольшой пример разработки с использованием данного подхода.

3

ещё нет, Entity Framework может создать, удалить или

Егоров А.А.

Технология программирования

АСОИУ

Code First

Вне зависимости от наличия базы вы можете вручную написать код классов и свойств, соответствующих сущностям в базе и использовать этот код с Entity Framework

без использования файла .edmx. Именно поэтому можно порой увидеть, как этот подход называют code only, хотя официальное наименование Code First. Маппинг между store schema и conceptual model в represented by your code is handled by convention and by a special mapping API. Если базы

пересоздать её в случае изменений в модели.

Ход выполнения работы.

Шаг 1. Создание БД.

Создайте на основе скрипта из приложения 1 новую базу данных School.

Шаг 2. Создание проекта.

Создайте новый проект Win32 приложения.

4

Егоров А.А.

Технология программирования

АСОИУ

Шаг 3. Создание формы Преподаватель

В созданном проекте выберите форму по умолчанию (Form1).

В области Свойства файла измените значение Имя файла на значение

CourseViewer.cs.

В окне Обозревателя решений дважды щелкните CourseViewer.vb или

CourseViewer.cs, чтобы открыть форму.

В области Свойства измените значение свойства Name на CourseViewer а

значение свойства Text на Course Viewer.

В окне Область элементов раскройте элемент Общие элементы управления,

перетащите элемент управления ComboBox на форму и измените имя элемента управления на departmentList.

В окне Область элементов перетащите элемент управления Button на форму,

измените имя этого элемента управления на closeForm, а значение свойства Text

на Закрыть.

В окне Область элементов раскройте элемент Данные, перетащите элемент управления DataGridView на форму и измените имя элемента управления на courseGridView.

Дважды нажмите кнопку closeForm.

5

Егоров А.А.

Технология программирования

АСОИУ

Откроется страница программного кода формы, и будет создан метод обработчика события closeForm_Click.

В тексте метода обработчика события closeForm_Click введите следующий код

для закрывания формы:

this.Close();

Шаг 4. Добавление шаблона элемента модели EDM ADO.NET

Выберите проект CourseManager в окне Обозреватель решений, щелкните его правой кнопкой мыши, укажите пункт Добавить, а затем выберите пункт Создать элемент.

Выберите в области Шаблоны пункт ADO.NET Entity Data Model.

В качестве имени модели введите School.edmx и нажмите кнопку Добавить.

Запуститься мастер Entity Data Model.

Шаг 5. Создание EDMX-файла

6

Егоров А.А.

Технология программирования

АСОИУ

Нажмите кнопку Создать соединение.

Установите соединение к БД.

В диалоговом окне Выбор источника данных выберите источник данных и нажмите Продолжить.

В диалоговом окне Свойства соединения введите имя сервера, выберите метод проверки подлинности, введите имя базы данных School и нажмите кнопку ОК.

7

Егоров А.А.

Технология программирования

АСОИУ

В диалоговом окне Выбор подключения к данным появятся заданные настройки подключения к базе данных.

Убедитесь, что установлен флажок Сохранить настройки соединения сущности в App.config как, а значение установлено в SchoolEntities. Затем нажмите кнопку Далее.

Откроется диалоговое окно Выбор объектов базы данных.

Выделите все таблицы и хранимые процедуры и убедитесь, что параметр Пространство имен модели имеет значение SchoolModel.

Установите флажки Формировать имена объектов во множественном или единственном числе и Включить столбцы внешнего ключа в модель.

На экране откроется стартовая страница мастера моделей EDM.

Шаг 6. Просмотр EDMX-файла в конструкторе моделей EDM ADO.NET

Модель School откроется в окне конструктора моделей EDM ADO.NET, как показано на следующей схеме.

8

Егоров А.А.

Технология программирования

АСОИУ

Шаг 7. Запрос по отделам в базе данных School

В начале файла с кодом для формы CourseViewer добавьте директиву using (C#) или Imports (Visual Basic), чтобы сослаться на модель, созданную из базы

данных School, и пространство имен сущностей.

using System.Data.Objects;

using System.Data.Objects.DataClasses;

В начале определения разделяемого класса для формы CourseViewer

добавьте следующий код, создающий экземпляр ObjectContext.

private SchoolEntities schoolContext;

В конструкторе форм CourseViewer дважды щелкните форму CourseViewer.

Откроется страница с кодом формы, и будет создан метод обработчика события courseViewer _Load.

В методе обработчика события courseViewer _Load скопируйте и вставьте следующий код, который определяет представление DataGridView,

выполняет запрос, возвращающий коллекцию отделов (упорядоченную по

9

Егоров А.А.

Технология программирования

АСОИУ

параметру Name), и привязывает коллекцию объектов Department к

элементу управления departmentList.

schoolContext = new SchoolEntities();

var departmentQuery = from d in schoolContext.Departments.Include("Courses")

orderby d.Name select d;

try

{

this.departmentList.DisplayMember = "Name"; this.departmentList.DataSource =

((ObjectQuery)departmentQuery).Execute(MergeOption.AppendOnly);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

Шаг 8. Отображение курсов для выбранного отдела

В конструкторе форм CourseViewer дважды щелкните элемент управления departmentList.

Будет создан метод обработчика события departmentList_SelectedIndexChanged.

Вставьте следующий код, загружающий курсы, связанные с выбранным отделом.

try

{

Department department = (Department)this.departmentList.SelectedItem; courseGridView.DataSource = department.Courses;

courseGridView.Columns["Department"].Visible = false; courseGridView.Columns["StudentGrades"].Visible = false; courseGridView.Columns["OnlineCourse"].Visible = false; courseGridView.Columns["OnsiteCourse"].Visible = false; courseGridView.Columns["People"].Visible = false; courseGridView.Columns["DepartmentId"].Visible = false;

courseGridView.AllowUserToDeleteRows = false; courseGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

Шаг 9. Сохранение изменений, внесенных в объекты

В Области элементов разверните узел Общие элементы управления,

перетащите элемент управления Кнопка в конструктор формы CourseViewer,

измените имя элемента управления на saveChanges и измените значения Text

на Обновить.

10