Підходи Database First і Model First.
Підхід Database First найчастіше використовують коли БД вже розроблена і необхідно розробити програмну логіку для роботи з нею. Використовуючи такі інструменти Visual Studio, як Entity Framework Designer, можна згенерувати C# чи VB.NET класи, що будуть відповідати структурі існуючої БД. Після створення проекції з метою оптимізації моделі можна змінювати зв’язки чи структуру за допомогою дизайнера (чи змінюючи XML файли проекцій). Пріоритетом в даному підході є БД – код і модель виносяться на задній план.
Підхід Model First доцільно використовувати коли ведеться розробка нового проекту (необхідно розробити структуру БД, що буде використовуватись). При цьому підході розробка починається з моделі: використовується Entity Framework Designer для побудови сутностей та зв'язків між ними. З побудованої моделі в середовищі Visual Studio генеруються C# чи VB.NET класи і БД. Пріоритетом в даному підході є модель БД; сама БД і код відходять на задній план.
Підхід Code First.
Підхід Code First найчастіше використовується коли проект і БД розробляються з нуля. Даний підхід дає можливість відмовитися від використання схем дизайнера чи файлів XML проекцій, натомість БД створюється на основі коду. Програмісти можуть створювати програмні класи для опису потрібних об’єктів, а Entity Framework забезпечить їх використання з БД і моделлю. Entity Framework забезпечує коректну комунікацію і роботу з БД; всі класи, які необхідні для проекції, генеруються автоматично. При використанні цього підходу конфігурація проекції БД не зчитується з XML файлу, натомість використовується об’єкт DbContext, який забезпечує представлення структури БД в пам’яті.
Code First дозволяє:
Проектувати і розробляти ПЗ не використовуючи дизайнер моделі чи файли XML проекцій.
Описувати об’єкти моделі за допомогою підходу POCO (Plain Old CLR Objects)
Анотація даних і гнучкий арі CodFirst.
Останні версії Entity Framework підтримують використання так званих анотацій даних, що використовуються для задання правил валідації, а також для визначення зв’язків між класами та таблицями в БД. Всі анотації реалізовані у вигляді атрибутів, які можна присвоювати відповідним властивостям класів чи самим класам.
Перелік атрибутів, які найчастіше використовуються:
[Key] – визначення первинного ключа в БД
[StringLength] – мінімальна і максимальна довжина стрічки (використовується тільки для валідації)
[MaxLength] – можна використовувати замість атрибуту StringLength для задання максимальної довжини стрічки
[ConcurrencyCheck] – активує перевірку конкурентного доступу
[Required] – встановлює прапорець обов’язкового значення (в БД колонка позначається як not null)
[Timestamp] – прапорець для колонок, які використовуються в якості часового маркера при перевірках конкурентного доступу
[Column] – використовується для задання імені колонки (за замовчуванням використовується ім’я властивості), також можна використовувати для встановлення позиції колонки
[Table] – використовується для задання імені таблиці (за замовчування таблиця називається згідно з іменем класу)
[DatabaseGenerated] – властивості з даним атрибутом будуть генеруватись БД (допустимі значення: Computed, Identity, None)
[NotMapped] – використовується у випадках, коли певну властивість класу необхідно виключити з проекції на таблицю БД.
[ForeignKey] і [InverseProperty] – колонки, що визначають зовнішні ключі
Анотації даних – зручний і швидкий спосіб задання правил валідації і структур зв’язків, однак він не забезпечує можливості використання повної потужності Code First. Існує більш гнучкий програмний спосіб опису структур і залежностей між ними – це АРІ Code First. Для його використання необхідно в класі контексту реалізувати метод OnModelCreating.
Валідація даних.
Валідація даних – надзвичайно важлива частина процесу розробки ПЗ. Необхідно забезпечити високу якість і цілісність даних. Необхідно уникати збереження пошкоджених чи неправильних даних, які можуть привести до хибної поведінки системи.
Аудит даних.
Entity Framework забезпечує потужний механізм аудиту всіх даних, які використовуються в моделі. Це дає можливість бачити і працювати з історією змін, відміняти зміни повертаючись до попереднього значення, чи вирішувати проблеми конкурентного доступу.
Entity Framework забезпечує доступ до наступних властивостей кожної з сутностей:
Значення в БД (Database value)
Початкове значення (Original value)
Поточне значення (Current value)
