+38(044) 277-40-42
+38(063) 233-01-83
+38(095) 628-11-32
Войти
+38(044) 277-42-05
+38(063) 233-01-83
+38(095) 628-11-32

ENTITY FRAMEWORK CORE

Об’єктно-реляційне відображення це технологія, яка дозволяє пов’язати реляційні бази даних з принципами об’єктно-орієнтованого програмування. Згідно даної парадигми програмування об’єкти програмного коду представляють об’єкти предметної області, яку моделює програмне забезпечення. Одним з найпопулярніших ORM пакетів Entity Framework, остання версія якого була презентована у 2016 році компанією Microsoft. Треба зазначити, що дане програмне забезпечення має відкритий вихідний код, з яким можна ознайомитися на GitHub сторінці проекту. Це дає можливість дослідити як працює продукт, брати участь у дискусіях, робити власний внесок у розвиток проекту. Перехід на нову версію Entity Framework не буде обов’язковим, тому комерційні проекти, які працюють на більш старих версіях зможуть продовжити стабільну роботу без змін. Команда розробки EF буде продовжувати слідкувати за розвитком версії Entity Framework 6, проводячи аналіз та оновлюючи проект, згідно змін виконаних товариством зацікавлених розробників. Основними змінами, що включені до нової версії Повністю переписаний вихідний код проекту, тобто дана версія продукту не продовженням попередніх версій. Побудований на базі .NET 4.5.1+ і .NET Core. Підтримка нереляційних, а також in-memory баз даних для проведення тестування. Підтримка пристроїв, що не використовують повний пакет .NET Framework. Тобто, Entity Framework Core може бути використаний для побудови Windows Phone та Windows Store додатків, так само як і для додатків на Linux або Macintosh, що використовують Mono. Підтримка найбільш популярних СУБД, серед яких SQL Server, SQLite, PostgreSQL, SQL Server Compact Edition, Redis та Azure Table Storage. Кожний провайдер СУБД буде постачатися як незалежний NuGet пакет, що сприяє модульності цільових проектів. Суттєво покращена генерація SQL. З кожною версією Entity Framework еволюціонує, додаючи нові можливості для розробників, а також оптимізуючи швидкість роботи. Остання версія даного пакету включає функціонал, якого давно не вистачало розробникам програмних продуктів, а саме асинхронне виконання запитів до бази даних, модифікацію процесу виконання запиту, модифікацію Code First конвенцій і багато іншого. Застаріла кодова база, яка будувалася протягом 10 років, уповільнювала його розвиток, роблячи неможливим привнесення кардинальних змін, а також відповідності тенденціям розробки. Саме тому командою розробки було прийнято рішення переписати вихідний код продукту, для виведення його на новий конкурентний рівень. Порівняно з попередніми версіями програмного забезпечення був покращений процес виконання запиту і, як наслідок, підвищена швидкість виконання запитів до бази даних. На початку обробки запиту виконується трансляція LINQ в SQL, після чого відбувається зчитування даних з БД. При цьому дані зчитуються частинами і записуються у буфер. Після даного етапу процес обробки отриманих даних виконується за допомогою двох програмних потоків. Перший потік продовжує зчитувати дані з БД, а другий відповідає за зчитування даних з буфера, створення сутностей відповідного типу і запису адреси пам’яті створеної сутності у список диспетчера змін для моніторингу будь-яких модифікацій даної сутності. За допомогою паралельності виконання цих двох операцій, досягається підвищення швидкодії виконання запитів і роботи клієнтського додатку в цілому. Розробнику також доступні засоби управління транзакціями та кількістю операцій, які виконуються за одне звернення до бази даних. За допомогою такого API розробник має можливість контролювати які саме операції будуть виконані за одну транзакцію для відміни усіх операцій при потребі. В свою чергу управління кількістю операцій при зверненні до БД дає можливість регулювати величину звернень до контейнера даних, тим самим регулюючи навантаження. Варто відзначити, що була суттєво покращена генерація запитів, тобто оптимізована трансляція LINQ в SQL. Даний пакет об’єднує однотипні операції в один запит і розділяє великі запити до декількох таблиць на більш прості і такі, що виконуються швидше. Усі наведені можливості стали доступні завдяки оновленій структурі API для роботи з Entity Framework. Користувачу стали доступні такі можливості, як «тіньові» властивості, альтернативні ключі, змішані запити. «Тіньова» властивість це одна з характеристик програмного класу (сутності), яка явно не присутня у ній, але її структура і значення зберігаються у базі даних. Відповідно у сховищі даних створюється стовпець з визначеним ім’ям, розробнику надається інтерфейс зчитування даної інформації, але безпосередньо користувачі класу не бачать вказаного поля. Така властивість може бути вдало використана у випадку, коли певна характеристика об’єкту предметної області не суттєвою, але потребує збереження. Альтернативні ключі дають змогу визначати додаткові обмеження для таблиці і типу даних у об’єктно-орієнтованій моделі. Розробник має можливість задати обмеження «первинний ключ» для поля строкового типу або вказати додаткове обмеження «унікальний ключ» певної характеристики об’єкту. У новій версії технології Entity Framework користувачу також доступні змішані запити, які дозволяють написання LINQ виразу, з використанням SQL. Така властивість може бути використана для виклику існуючої процедури або функції бази даних, що мають визначене ім’я, логіку і структуру. Розвиток транслятора запитів технології Entity Framework дав можливість додати підтримку не реляційних сховищ даних Redis та Azure Table Storage, які мають відмінну від SQL структуру запитів. Важливим кроком у розвитку проекту підтримка «in-memory» провайдерів даних, які значно полегшують модульне тестування програмного коду та дають можливість легко змоделювати реальну базу даних на етапі тестування.