Entity Framework | Entity Framework Core
Версия 10.1 от Alexandr Fokin на 2022/12/01 04:44
EntityFramework (core)
ORM, которая позволяет использовать несколько различных подходов для взаимодействия с базой. ORM предоставляет возможность работать с таблицами так, будто это коллекции некоторых объектов c#, автоматически генерируя sql запросы для выполняемых операций.
Интерфейс IQueryable похож на IEnumerable (позволяет использовать LINQ), но при этом выражения (Expression tree), примененные к IQueryable, преобразуются в sql запрос.
В момент материализации IQueryable строит sql запрос, выполняет его и преобразуется в IEnumerable. Используется механизм трансляции с помощью реализации соответствующего хранилищу провайдера.
// Где ^ - момент материализации коллекции (т.е. выполнение sql запроса и автоматического маппинга результата в c# array)
DbSet.Where(e => e.Id = "1").OrderBy(e => e.Id).^ToArray()
DbSet.Where(e => e.Id = "1").OrderBy(e => e.Id).^ToArray()
Варианты использования
Наименование | Структура | EntityFramework support | EntityFrameworkCore support | Конфигурация |
Code first | Классы + DbContext -> Миграции -> БД | + | + | Способы дополнительной настройки
|
Database first | Существующая БД -> DbContext + Классы | + | + | |
Schema first | Схема -> Классы -> БД | + | - |
Реализация связей между таблицами