Entity Framework (EF) — структура об'єктно-реляційного відображення (ORM) з відкритим кодом для ADO.NET. Вона була частиною .NET Framework, але з версії 6 Entity Framework стала відокремленою від .NET Framework.
Entity Framework - це набір технологій в ADO.NET, які підтримують розробку програмно-орієнтованих на дані програмних додатків. Архітектори та розробники програм, орієнтованих на дані, зазвичай борються з необхідністю досягнення двох дуже різних цілей. Вони повинні моделювати сутності, взаємозв'язки та логіку бізнес-проблем, які вони вирішують, а також повинні працювати з движками даних, що використовуються для зберігання та отримання даних. Дані можуть охоплювати кілька систем зберігання, кожна з яких має власні протоколи; навіть програми, які працюють з єдиною системою зберігання, повинні збалансувати вимоги системи зберігання та вимоги щодо написання ефективного та ремонтопридатного коду програми.
Перша версія Entity Framework (EFv1) була включена в. NET Framework 3.5 з пакетом оновлень 1 та пакетом оновлень 1 для Visual Studio 2008, випущеними 11 серпня 2008 року. Ця версія була широко розкритикована, навіть залучивши "вотум недовіри", підписаний приблизно однією тисячею розробників. [4]
Друга версія Entity Framework, названа Entity Framework 4.0 (EFv4), була випущена як частина. NET 4.0 12 квітня 2010 р. Та розглянуто багато зауважень щодо версії 1. [5]
Третя версія Entity Framework, версія 4.1, була випущена 12 квітня 2011 року за підтримки Code First.
Оновлення версії 4.1 під назвою Entity Framework 4.1 Update 1 було випущено 25 липня 2011 року. Він включає виправлення помилок та нові підтримувані типи.
Версія 4.3.1 була випущена 29 лютого 2012 р. [6] Було кілька оновлень, таких як підтримка міграції.
Версія 5.0.0 була випущена 11 серпня 2012 р. [7] і призначена для. NET framework 4.5. Крім того, ця версія доступна для. Net framework 4, але без будь-яких переваг виконання під час версії 4.
Версія 6.0 була випущена 17 жовтня 2013 р. [8] і тепер є проектом з відкритим кодом, ліцензованим під ліцензією Apache v2. Як ASP. NET MVC, його вихідний код розміщений на GitHub за допомогою Git. [9] Ця версія має низку вдосконалень для підтримки першого коду . [10]
Entity Framework Core 1.0 ліцензований під ліцензією Apache v2 і повністю будується у відкритому режимі на GitHub [Архівовано 26 липня 2017 у Wayback Machine.] . Хоча Entity Framework Core 1.0 має деякі концептуальні подібності з попередніми версіями Entity Framework, це абсолютно нова кодова база, розроблена для того, щоб бути більш ефективною, потужною, гнучкою та розширюваною, працюватиме в Windows, Linux та OSX та підтримуватиме новий діапазон реляційних та NOSQL сховищ даних. [11]
Entity Framework Core 2.0 був випущений 14 серпня 2017 року разом з Visual Studio 2017 15.3 та ASP. NET Core 2.0 [12]
Entity Framework Core 3.0 був випущений 23 вересня 2019 року разом з Visual Studio 2019 16.3 та ASP. NET Core 3.0, [13]
Архітектура ADO.NET Entity Framework, знизу вгору, складається з наступного:
Модель даних сутності ( EDM ) визначає концептуальну модель (CSDL) даних, використовуючи техніку моделювання, яка сама називається Entity Data Model, розширеною версією моделі сутність-взаємозв'язок. Модель даних насамперед описує Сутності та Асоціації, в яких вони беруть участь. Схема EDM виражена в мові визначення схеми (SDL), яка є додатком XML (розширена мова розмітки). Крім того, також має бути вказано відображення (MSL) елементів концептуальної схеми (CSDL) на схему зберігання (SSDL). Специфікація відображення також виражається в XML.
Visual Studio також пропонує Entity Designer для візуального створення EDM та специфікації відображення. Результатом роботи інструменту є XML-файл (* .edmx) із зазначенням схеми та відображення. Файл Edmx містить артефакти метаданих EF (вміст CSDL / MSL / SSDL). Ці три файли (csdl, msl, ssdl) також можна створювати або редагувати вручну.
Майстер моделей даних сутності у Visual Studio спочатку генерує співвідношення один до одного (1: 1) між схемою бази даних та концептуальною схемою у більшості випадків. У реляційній схемі елементи складаються з таблиць, при цьому первинний та зовнішній ключі склеюють відповідні таблиці. На відміну від них, Типи сутності визначають концептуальну схему даних.
Типи сутності являють собою сукупність декількох набраних полів - кожне поле відображається в певний стовпець бази даних - і може містити інформацію з декількох фізичних таблиць. Типи сутності можуть бути пов’язані між собою, незалежно від зв’язків у фізичній схемі. Пов’язані сутності також виставляються подібним чином - через поле, ім’я якого позначає відношення, у якому вони беруть участь, і доступ до якого замість отримання значення з якогось стовпця в базі даних перетинає зв’язок і повертає сутність (або колекцію сутностей) пов'язано з.
Типи сутності утворюють клас об'єктів, яким відповідають сутності, причому Сутності є екземплярами типів сутності. Суб'єкти представляють окремі об'єкти, які складають частину проблеми, що вирішується додатком, і індексуються ключем. Наприклад, перетворюючи описану вище фізичну схему, ми матимемо два типи сутності:
Логічна схема та її відображення з фізичною схемою представлені у вигляді моделі даних сутності (EDM), вказаної як XML-файл. ADO. NET Entity Framework використовує EDM для фактичного виконання зіставлення, дозволяючи додатку працювати з сутностями, одночасно абстрагуючись від використання ADO. NET, такі як DataSet і RecordSet . ADO. NET Entity Framework виконує об'єднання, необхідні для отримання довідкової інформації сутності з декількох таблиць, або коли обв'язується зв'язок. Коли об’єкт оновлюється, він відстежує, з якої таблиці походить інформація, та видає оператори оновлення SQL для оновлення таблиць, в яких оновлено деякі дані. ADO. NET Entity Framework використовує eSQL, похідну від SQL, для виконання запитів, теоретичних операцій з наборів та оновлень сутностей та їх взаємозв’язків. Запити в eSQL, якщо потрібно, потім перекладаються на власний SQL-підхід до базової бази даних.
Типи об'єктів та набори сутностей просто формують логічну схему EDM і можуть бути виставлені як будь-що. ADO. NET Entity Framework включає Object Service, яка представляє ці сутності як Об'єкти з елементами та зв'язками, виставленими як властивості. Таким чином, об'єкти Entity є лише інтерфейсом до екземплярів типів сутності EDM, що дозволяє об'єктно-орієнтованим мовам отримувати доступ до них і використовувати їх. Подібним чином можна створити інші інтерфейси, які виставляють сутності через вебслужби (наприклад, WCF Data Services ) або XML, який використовується, коли сутності серіалізуються для постійного зберігання або бездротової передачі. [14]
Сутності ** - це екземпляри EntityType s; вони представляють окремі екземпляри об'єктів (наприклад, клієнта, замовлень ), до яких відноситься інформація. Ідентичність сутності визначається типом сутності, екземпляром якої вона є; у цьому сенсі тип сутності визначає клас, до якого належить сутність, а також визначає, які властивості матиме сутність. Властивості описують деякий аспект сутності, надаючи їй ім'я та тип. Властивості типу сутності в ADO. NET Entity Framework повністю набрані та повністю сумісні з системою типів, що використовується в системі СУБД, а також із загальною системою типів. NET Framework. Властивість може бути SimpleType або ComplexType, а також може бути багатозначною. Усі EntityType належать до деякого простору імен і мають властивість EntityKey, яка однозначно ідентифікує кожен екземпляр типу сутності. Різні типи властивостей розрізняють наступним чином:
Усі екземпляри сутності розміщуються в EntityContainers, які є контейнерами для кожного проекту. Кожен проект має один або кілька іменованих EntityContainers, які можуть посилатися на сутності в декількох просторах імен і типах сутності. Кілька екземплярів одного типу сутності можуть зберігатися у колекціях, які називаються EntitySets. Один тип сутності може мати кілька EntitySets.
Будь-які два типи сутності можуть бути пов’язані як відношенням асоціації, так і відношенням обмеження. Наприклад, відвантаження товару клієнту є асоціацією, тоді як замовлення містить деталі замовлення - це відношення стримування. Зв'язок стримування також може бути використаний для моделювання успадкування між сутностями. Відношення між двома типами сутності задається типом відносин, екземпляри якого, які називаються відносинами, відносять екземпляри сутності. У майбутніх випусках можуть бути представлені інші типи відносин, такі як Композиція або Ідентифікація. Типи відносин характеризуються ступенем (суттєвістю) або кількістю типів сутностей, які вони пов’язують, та їх кратністю. Однак у первісному випуску ADO.NET Entity Framework відносини обмежуються двійковими (другого ступеня) двонаправленими відносинами. Кратність визначає, скільки екземплярів сутності можуть бути пов'язані між собою. На основі множинності відносини можуть бути як один до одного, один до багатьох, так і багато до багатьох.
ADO. NET Entity Framework використовує варіант мови структурованих запитів, названий Entity SQL, який спрямований на написання декларативних запитів та оновлення сутностей та взаємозв’язків сутності - на концептуальному рівні. Він відрізняється від SQL тим, що не має явних конструкцій для об'єднань, оскільки EDM призначений для абстрактного розподілу даних між таблицями. Запити щодо концептуальної моделі полегшуються класами EntityClient, які приймають запит Entity SQL. Конвеєр запитів аналізує запит Entity SQL у дереві команд, розподіляючи запит за кількома таблицями, який передається постачальнику EntityClient. Як ADO. Постачальники даних NET, постачальник EntityClient також ініціалізується за допомогою об’єкта Connection, який на додаток до звичайних параметрів сховища даних та інформації про автентифікацію вимагає схеми SDL та інформації зіставлення. Потім постачальник EntityClient перетворює дерево команд Entity SQL у SQL-запит у власному ароматі бази даних. Потім виконання запиту повертає Entity SQL ResultSet, який не обмежується табличною структурою, на відміну від ADO. NET ResultSets.
Сутність SQL покращує SQL, додаючи внутрішню підтримку для:
Постачальник LINQ to Entities дозволяє використовувати LINQ для запитів різних джерел даних СУБД. Доступні кілька постачальників послуг баз даних із підтримкою Entity Framework.
У Entity Framework v4 нові методи ExecuteStoreQuery () та ExecuteStoreCommand () були додані до класу ObjectContext.
Visual Studio має функцію під назвою Visualizer. Запит LINQ, написаний у Visual Studio, можна розглядати як власний SQL за допомогою Visualizer під час сеансу налагодження. За допомогою VisualStudioGallery [Архівовано 28 грудня 2010 у Wayback Machine.] доступний візуалізатор LINQ to Entities (запит об’єкта), націлений на всі СУБД.
Lokasi Pengunjung: 3.144.7.73