Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота1_2014.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.07 Mб
Скачать

Лабораторна робота №1

  1. Додаток з Entity Framework. Підхід Model First

  2. Створення запитів в Entity Framework

  3. Взаємодія з даними. Підходи Code First

  1. Додаток з Entity Framework. Підхід Model First

Щоб безпосередньо почати працювати з Entity Framework, створимо додаток. Для цього нам потрібна буде, по-перше, середовище розробки. В якості середовища розробки виберемо Visual Studio 2013..

Створимо простий додаток Windows Forms Application.

Створення проекту для Entity Framework 6

Тепер додамо в додаток новий елемент. Натиснемо правою кнопкою миші на проект у вікні Solution Explorer і в списку виберемо Add -> New Item. І потім у вікні додавання нового елемента виберемо ADO.NET Entity Data Model:

Entity Data Model

Оскільки модель буде описувати людину, то назвемо її Person. Натиснемо OK і нам відкриється майстер створення моделі:

Він нам пропонує дві опції: Generate from database (Створення моделі за наявною базою даних) і Empty model (Порожня модель). Так як поки у нас немає ніякої бази даних, то виберемо другу опцію. Таким чином, ми будемо застосовувати підхід Model First, тобто спочатку створювати модель, а по ній потім базу даних. Якби ми використовували підхід Database First, в цьому випадку ми б обрали першу опцію, і фреймворк нам би згенерував модель за наявною БД.

Вибравши опцію Empty Model, натиснемо кнопку Finish. Після цього перед нами відкриється порожнє вікно створення моделі.

Перетягнемо на це поле з панелі Toolbox (Панель Інструментів) в лівій частині елемент Entity. Тепер у нас на поле створення моделі є невелика схема майбутньої моделі, в якій зараз за замовчуванням зазначено лише одне поле - Id.

По-перше, перейменуємо сутність. За умовчанням вона називається Entity1. Виділимо схему і перейдемо до вікна властивостей в правому нижньому кутку:

Тут змінимо значення властивості Name на Person. Це у нас буде ім'я сутності. Воно необов'язково має збігатися з назвою моделі. І також змінимо значення властивості Entity Set Name на Persons. Це у нас буде назва набору об'єктів Person.

Далі створимо кілька властивостей. Сутність у нас буде проста та буде містити всього дві властивості для імені і віку. Отже, виділимо схему сутності і натиснемо на праву кнопку миші. У випадаючому списку виберемо Add New -> Scalar Property. Після цього буде додано нову властивість. Scalar Property увазі властивості на основі найпростіших типів int, float, string і т.д. Додамо дві властивості - Name і Age. За замовчуванням всі властивості що додаються мають тип string. Однак ми можемо змінити тип у вікні властивостей.

Таким чином, у нас повинна вийти наступна схема сутності:

Тепер згенеруємо базу даних по нашій моделі. Проте відразу звертаю увагу, що модель може містити і кілька сутностей, які можуть мати більш складні властивості і також можуть бути пов'язані між собою. Але в даному випадку для початку ми використовуємо дуже просту модель. Отже, натиснемо на неї правою кнопкою миші і в випадаючому списку виберемо Generate Database from Model (Згенерувати базу даних по моделі). Перед нами відкриється майстер створення підключення. Так як у нас поки ніяких підключень немає, виберемо New Connection (Нове підключення).

Спочатку нам треба вибрати тип джерела даних. Ми виберемо Microsoft SQL Server. І далі нам буде запропоновано налаштувати підключення і створити базу даних:

Тут нам треба ввести ім'я сервера. А також назву БД. Як ім'я бази даних введемо persondb. Натиснемо OK і потім Visual Studio згенерує нам скрипт бази даних:

Натиснемо Finish (Готово). У нас автоматично відкриється в Visual Studio файл скрипта Person.edmx.sql. І на завершення нам треба буде запустити цей скрипт. Для цього натиснемо у верхньому лівому куті на зелену кнопку Execute (Виконати):

Після цього в нижньому вікні Visual Studio нам повідомить про успішне (або неуспішному) створенні бази даних. Якщо ми відкриємо вікно Database Explorer (його можна відкрити, вибравши в меню View-> Other Windows), то ми побачимо нашу базу даних. А розкривши вузол, також побачимо, що вона містить всю ту схему, яку ми визначили в моделі:

Це все була робота по створенню моделі та бази даних. Тепер займемося самим додатком. Він буде дуже простим - буде виводити всі записи з БД, додавати в неї запис і видаляти. У фінальному варіанті додаток буде виглядати приблизно так:

Такий гранично простий і примітивний інтерфейс дозволить виконувати всі намічені вище функції: для додавання використовуватиметься кнопка Add і текстове поле (для введення імені) і поле numericUpDown (для введення віку). Для перегляду всіх записів на формі буде компонент DataGridView. І для видалення призначена ще одна кнопка Delete.

Весь код форми буде виглядати наступним чином:

Ключовим об'єктом тут є контейнер або контекст даних - PersonContainer. Клас контейнера в якості назви за замовчуванням приймає назву моделі плюс суфікс Container. Об'єкти цього класу сприймаються як сховище даних, так як через них ми можемо взаємодіяти з БД.

Клас контексту даних створюється автоматично при створенні моделі, і ми його можемо знайти в оглядачі рішень:

У моєму випадку він має наступний вигляд:

У конструкторі форми нам треба завантажити дані і виконати прив'язку до dataGridView. Для цього викликаємо метод personContainer.Persons.Load (). Так як у якості набору об'єктів Person ми вказали назву Persons, то саме його ми і використовуємо для отримання всіх об'єктів Person. Для видалення використовується метод personContainer.Persons.Remove (person), в який ми передаємо об'єкт для видалення. І додавання також робиться за допомогою одного тільки виклику методу personContainer.Persons.Add (p), в який передається об'єкт для додавання. І щоб зафіксувати всі зміни в БД, в завершенні викликається метод personContainer.SaveChanges ().

І остання річ, яку нам треба зробити - знищення контейнера, що є гарною практикою. В даному випадку у нас одна форма, але форм може бути скільки завгодно. А контейнери даних можуть завантажувати величезна кількість об'єктів, які після завершення використання чекатимуть збірку сміття. Тому рекомендується викликати для контейнера метод Dispose після того, як контейнер вже не потрібен і передбачається використовувати.

У нашому випадку у нас є один контейнер на форму. Він використовується протягом всього життєвого циклу форми, і тому знищуватися він повинен із завершенням роботи форми. У вікні Solution Explorer (Оглядач рішень) у структурі проекту ми можемо знайти файл дизайнера форми Form1.Designer.cs. Відкриємо його і знайдемо реалізацію методу Dispose форми. Він розташовується ближче до початку коду і виглядає зараз так:

protected override void Dispose(bool disposing)

{

if (disposing && (components != null))

{

components.Dispose();

}

base.Dispose(disposing);

}

Додамо в нього рядок знищення контексту даних:

protected override void Dispose(bool disposing)

{

if (disposing && (components != null))

{

components.Dispose();

}

personContainer.Dispose();

base.Dispose(disposing);

}

Ось фактично все додаток, що дозволить нам переглядати, додавати і видаляти дані з простенької БД, створеної за допомогою підходу Model First.