Ефективне використання зв'язку багато-до-одного в Entity Framework Core

Ефективне використання зв’язку багато-до-одного в Entity Framework Core

6 Березня 2024 в 21:28 40

Система управління базами даних (СУБД) Entity Framework Core є потужним інструментом для роботи з реляційними базами даних в середовищі .NET. Однією з ключових можливостей EF Core є підтримка зв’язків багато-до-одного між об’єктами. У цій статті ми розглянемо ефективне використання такого типу зв’язків із практичними прикладами.

Зв’язок багато-до-одного (one-to-many) в EF Core дозволяє відображати взаємозв’язки між об’єктами даних, де один об’єкт може мати багато дочірніх об’єктів. Це дуже корисно, коли маємо справу з даними, які мають ієрархічну структуру або залежать від більш високого рівня об’єкта.

Для розуміння цього типу зв’язку давайте розглянемо конкретний приклад. Нехай у нас є система керування подіями, де одна подія може мати багато випадків виникнення. У цьому випадку ми маємо два класи: Event та Occurrence.

Клас Event має список Occurrences, що дозволяє кожній події мати багато випадків виникнення. Поля Parent та ParentId у класі Occurrence вказують на батьківську подію.

Однією з типових операцій, яку можна виконати з цим типом зв’язку, є вибірка об’єктів за певним критерієм. Наприклад, якщо ми хочемо отримати першу подію, у якій є випадок виникнення з певним індексом, ми можемо скористатися методом Where:

Цей запит поверне першу подію, у якій є Occurrence з вказаним RecurrenceIndex.

Ще один сценарій – отримання батьківського об’єкта разом із відповідним Occurrence в одному запиті. Для цього можна використати метод Join:

Цей запит об’єднує Occurrences з Events на основі ParentId та Id відповідно і повертає перший результат з відповідним Event та Occurrence.