Введение в Entity Framework Core

Что такое Entity Framework Core

Данное руководство устарело. Актуальное руководство: Руководство по Entity Framework Core 7

Последнее обновление: 27.02.2021

Entity Framework Core (EF Core) представляет собой объектно-ориентированную, легковесную и расширяемую технологию от компании Microsoft для доступа к данным. EF Core является ORM-инструментом (object-relational mapping - отображения данных на реальные объекты). То есть EF Core позволяет работать базами данных, но представляет собой более высокий уровень абстракции: EF Core позволяет абстрагироваться от самой базы данных и ее таблиц и работать с данными независимо от типа хранилища. Если на физическом уровне мы оперируем таблицами, индексами, первичными и внешними ключами, но на концептуальном уровне, который нам предлагает Entity Framework, мы уже работаем с объектами.

Entity Framework Core поддерживает множество различных систем баз данных. Таким образом, мы можем через EF Core работать с любой СУБД, если для нее имеется нужный провайдер.

По умолчанию на данный момент Microsoft предоставляет ряд встроенных провайдеров: для работы с MS SQL Server, для SQLite, для PostgreSQL. Также имеются провайдеры от сторонних поставщиков, например, для MySQL.

Также стоит отметить, что EF Core предоставляет универсальный API для работы с данными. И если, к примеру, мы решим сменить целевую СУБД, то основные изменения в проекте будут касаться прежде всего конфигурации и настройки подключения к соответствующим провайдерам. А код, который непосредственно работает с данными, получает данные, добавляет их в БД и т.д., останется прежним.

Entity Framework Core многое унаследовал от своих предшественников, в частности, Entity Framework 6. В тоже время надо понимать, что EF Core - это не новая версия по отношению к EF 6, а совершенно иная технология, хотя в целом принципы работы у них будут совпадать. Поэтому в рамках EF Core используется своя система версий. Текущая версия - 5.0 была выпущена в ноябре 2020 года. И технология продолжает развиваться.

Как технология доступа к данным Entity Framework Core может использоваться на различных платформах стека .NET. Это и стандартные платформы типа Windows Forms, консольные приложения, WPF, UWP и ASP.NET Core. При этом кроссплатформенная природа EF Core позволяет задействовать ее не только на ОС Windows, но и на Linux и Mac OS X.

Центральной концепцией Entity Framework является понятие сущности или entity. Сущность определяет набор данных, которые связаны с определенным объектом. Поэтому данная технология предполагает работу не с таблицами, а с объектами и их коллекциями.

Любая сущность, как и любой объект из реального мира, обладает рядом свойств. Например, если сущность описывает человека, то мы можем выделить такие свойства, как имя, фамилия, рост, возраст. Свойства необязательно представляют простые данные типа int или string, но могут также представлять и более комплексные типы данных. И у каждой сущности может быть одно или несколько свойств, которые будут отличать эту сущность от других и будут уникально определять эту сущность. Подобные свойства называют ключами.

При этом сущности могут быть связаны ассоциативной связью один-ко-многим, один-ко-одному и многие-ко-многим, подобно тому, как в реальной базе данных происходит связь через внешние ключи.

Отличительной чертой Entity Framework Core, как технологии ORM, является использование запросов LINQ для выборки данных из БД. С помощью LINQ мы можем создавать различные запросы на выборку объектов, в том числе связанных различными ассоциативными связями. А Entity Framework при выполнение запроса транслирует выражения LINQ в выражения, понятные для конкретной СУБД (как правило, в выражения SQL).

Основная функциональность Entity Framework Core сосредоточена в следующих пакетах:

  • Microsoft.EntityFrameworkCore:основной пакет EF Core

  • Microsoft.EntityFrameworkCore.SqlServer: представляет функциональность провайдера для Microsoft SQL Server и SQL Azure

  • Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite: предоставляет поддержку географических типов (spatial types) для SQL Server

  • Microsoft.EntityFrameworkCore.Sqlite: представляет функциональность провайдера для SQLite и включает нативные бинарные файлы для движка базы данных

  • Microsoft.EntityFrameworkCore.Sqlite.Core: представляет функциональность провайдера для SQLite, но в отличие от предыдущего пакета не содержит нативные бинарные файлы для движка базы данных

  • Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite: предоставляет поддержку географических типов (spatial types) для SQLite

  • Microsoft.EntityFrameworkCore.Cosmos: представляет функциональность провайдера для Azure Cosmos DB

  • Microsoft.EntityFrameworkCore.InMemory: представляет функциональность провайдера базы данных в памяти

  • Microsoft.EntityFrameworkCore.Tools: содержит команды EF Core PowerShell для Visual Studio Package Manager Console; применяется в Visual Studio для миграций и генерации классов по готовой бд

  • Microsoft.EntityFrameworkCore.Design: содержит вспомогательные компоненты EF Core, применяемые в процессе разработки

  • Microsoft.EntityFrameworkCore.Proxies: хранит функциональность для так называемой "ленивой загрузки" (lazy-loading) и прокси остлеживания изменений

  • Microsoft.EntityFrameworkCore.Abstractions: содержит набор абстракций EF Core, которые не зависят от конкретной СУБД

  • Microsoft.EntityFrameworkCore.Relational: хранит компоненты EF Core для провайдеров реляционных СУБД

  • Microsoft.EntityFrameworkCore.Analyzers: содержит функционал анализаторов C# для EF Core

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850