Entity framework core что это
Сравнение EF Core & EF6
EF Core
EF Core работает с SQL Server/Базой данных SQL Azure, SQLite, Azure Cosmos DB, MySQL, PostgreSQL и многими другими базами по модели подключаемых модулей поставщика базы данных.
Сравнение возможностей
EF Core предлагает новые функции, которые не будут реализованы в EF6. Однако в настоящее время в EF Core реализованы не все функции EF6.
В следующей таблице представлено сравнение возможностей, доступных в EF Core и EF6. Это общее сравнение, здесь не указаны все функции и не объясняются различия между одной и той же возможностью в разных версиях EF.
Столбец EF Core содержит версию продукта, в которой эта возможность появилась впервые.
Создание модели
Запрос данных
Сохранение данных
Компонент | EF6.4 | EF Core |
---|---|---|
Отслеживание изменений по моментальному снимку | Да | 1.0 |
Отслеживание изменений по извещениям | Да | 1.0 |
Отслеживание изменений: прокси-серверы | Да | 5.0 |
Доступ к отслеживаемому состоянию | Да | 1.0 |
Оптимистическая блокировка | Да | 1.0 |
Transactions | Да | 1.0 |
Пакетная обработка инструкций | 1.0 | |
Сопоставление хранимых процедур | Да | В журнале невыполненных работ (#245) |
Низкоуровневые API для несвязных графов | Плохо | 1.0 |
Полный проход несвязных графов | 1.0 (частично; #5536) |
Другие возможности
Компонент | EF6.4 | EF Core |
---|---|---|
Миграции | Да | 1.0 |
Интерфейсы API для создания и удаления баз данных | Да | 1.0 |
Начальное значение данных | Да | 2.1 |
Устойчивость подключения | Да | 1,1 |
Перехватчики | Да | 3.0 |
События | Да | 3.0 (частично; #626) |
Простое ведение журналов (Database.Log) | Да | 5.0 |
Создание пулов DbContext | 2.0 |
Поставщики баз данных (2)
Компонент | EF6.4 | EF Core |
---|---|---|
SQL Server | Да | 1.0 |
MySQL | Да | 1.0 |
PostgreSQL | Да | 1.0 |
Oracle; | Да | 1.0 |
SQLite | Да | 1.0 |
SQL Server Compact | Да | 1.0 (3) |
DB2 | Да | 1.0 |
Firebird | Да | 2.0 |
Jet (Microsoft Access) | 2.0 (3) | |
Azure Cosmos DB | 3.0 | |
В памяти (для тестирования) | 1.0 |
1 Некоторые функции EF6 не будут реализованы в EF Core. Эти функции зависят от базовых EDM EF6 и (или) являются сложными функциями с относительно низкой рентабельностью инвестиций. Мы всегда приветствуем обратную связь, но несмотря на то, что EF Core предоставляет многие функции, недоступные в EF6, для EF Core, наоборот, невозможно поддерживать все функции EF6.
2 Поставщики баз данных, реализованные сторонними производителями, могут запаздывать с обновлением до новых основных версий EF Core. Дополнительные сведения можно найти в статье Поставщики баз данных.
Поддерживаемые платформы
Рекомендации для новых приложений
Рекомендации для существующих приложений EF6
EF Core не является заменой для EF6. Для перехода с EF6 на EF Core, скорее всего, потребуется внести изменения в приложение.
Дополнительные сведения см. в разделе Porting from EF6 to EF Core (Перенос приложений из EF6 в EF).
Начало работы с EF Core
Предварительные требования
Установите следующее программное обеспечение:
Создание нового проекта
Установка Entity Framework Core
«Сервис» «Диспетчер пакетов NuGet» > «Консоль диспетчера пакетов».
Выполните следующие команды:
Совет. Можно также установить пакеты, щелкнув проект правой кнопкой мыши и выбрав Управление пакетами NuGet.
Создание модели
Задайте класс контекста и классы сущностей, составляющие модель.
В EF Core также можно реконструировать модель из существующей базы данных.
Совет. Эта программа намеренно упрощена для наглядности. В приложениях для рабочей среды не следует хранить строки подключений в коде. Возможно, также будет лучше поместить каждый класс C# в отдельный файл.
Создание базы данных
В следующих действиях используются миграции для создания базы данных.
Выполните следующие команды:
При этом устанавливается dotnet ef и пакет конструктора, требуемый для выполнения команды в проекте. Команда migrations формирует шаблон миграции для создания начального набора таблиц в модели. Команда database update создает базу данных и применяет к ней созданную миграцию.
В консоли диспетчера пакетов (PMC) выполните следующие команды:
При этом устанавливаются средства консоли диспетчера пакетов для EF Core. Команда Add-Migration формирует шаблон миграции для создания начального набора таблиц в модели. Команда Update-Database создает базу данных и применяет к ней созданную миграцию.
Создание, чтение, обновление и удаление
Откройте файл Program.cs и замените его содержимое следующим кодом:
Запуск приложения
«Отладка» «Запустить без отладки»
Entity Framework: как быстрее написать код для работы с базой данных
Код взаимодействия с базой данных может быть очень громоздким, однако его можно сократить, воспользовавшись Entity Framework.
Entity Framework — это решение для работы с базами данных, которое используется в программировании на языках семейства.NET. Оно позволяет взаимодействовать с СУБД с помощью сущностей (entity), а не таблиц. Также код с использованием EF пишется гораздо быстрее.
Например, работая с базами данных напрямую, разработчик должен беспокоиться о подключении, подготовке SQL и параметров, отправке запросов и транзакций. На Entity Framework всё это делается автоматически — программист же работает непосредственно с сущностями и только говорит EF, что нужно сохранить изменения.
В этой статье будут разобраны основы применения Entity Framework, для понимания которых нужно владеть ADO.NET — пользоваться базами данных, писать SQL-запросы и работать с подключениями.
Пишет о программировании, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.
Как установить
Entity Framework
Подключить Entity Framework можно к любому проекту — от Xamarin до ASP.NET. Однако, чтобы не отвлекаться на работу с интерфейсом, здесь мы рассмотрим консольное приложение.
Для начала создайте проект Console Application в Visual Studio. Затем откройте менеджер пакетов NuGet:
Введение в Entity Framework Core
Что такое Entity Framework Core
Entity Framework Core поддерживает множество различных систем баз данных. Таким образом, мы можем через EF Core работать с любой СУБД, если для нее имеется нужный провайдер. По умолчанию на данный момент Microsoft предоставляет ряд встроенных провайдеров: для работы с MS SQL Server, для SQLite, для PostgreSQL. Также имеются провайдеры от сторонних поставщиков, например, для MySQL.
Стоит отметить, что Entity Framework Core развивается как opensorse-проект, все файлы которого можно найти в репозитории на github по адресу https://github.com/dotnet/efcore.
Также стоит отметить, что EF Core предоставляет универсальный API для работы с данными. И если, к примеру, мы решим сменить целевую СУБД, то основные изменения в проекте будут касаться прежде всего конфигурации и настройки подключения к соответствующим провайдерам. А код, который непосредственно работает с данными, получает данные, добавляет их в БД и т.д., останется прежним.
Центральной концепцией 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
Кроме того, EF Core может работать с различными системами баз данных. Здесь мы будем рассмотривать общие возможности на примере бд SQLite, как самой простой и удобной СУБД. И поскольку Entity Framework позволяет в большой степени писать универсальный код для подключения к разным СУБД, этот код можно будет применять и к другим СУБД. Однако, в последствии также затронем работу с другихми СУБД в тех аспектах, где есть отличия.
Entity Framework Core
Привет, друзья. В этот чудесный майский день мы продолжаем трудиться и сегодня хотим рассказать о том, что в мае OTUS запускает полюбившийся всем курс «Разработчик С#», а также отдельный курс по С# ASP. NET Core. Традиционно, в преддверии старта курсов начинаем публиковать полезный материал. Поехали.
Вступление
В большинстве современных ASP NET Core приложений используется Entity Framework Core. Entity Framework Core – это технология для доступа к базам данных от Microsoft. Оно позволяет взаимодействовать с СУБД с помощью сущностей (entity), то есть классов и объектов NET, а не таблиц базы данных. Это самый известный и функциональный ORM – инструмент в C#. ORM — это object-relational mapping — отображение данных на реальные объекты.
Например, если разработчик напрямую работает с базами данных, программист должен думать о подключении, подготовке SQL и параметров SQL, как отправлять запросы и о транзакциях. А с помощью Entity Framework Core все это делается автоматически — разработчик работает непосредственно с классами NET.
Подходы ORM
У ORM есть несколько подходов.
Первый – Code First. Он подразумевает, что сначала пишется код на C#, а потом по этому коду создается база данных. Для этого подхода очень важно определить классы модели или entity, которая будет храниться в базе данных, описать ее в классах C# в виде модели, и написать класс контекста, который и будет работать с используемой базой данных. Подход Code First используется чаще всего программистами C#.
Model-First – это третий подход ORM. Его часто используют архитекторы, так как при этом подходе можно не знать ни SQL, ни синтаксис C#. В этом случае сначала создается графическая модель EDMX, в это время в фоновом режиме создаются классы C# модели, а затем генерируется база данных на основе диаграммы EDMX.
Модели Entity Framework Core
Все таблицы базы данных определяются в Entity Framework в виде классов моделей или сущностей (entity), как правило, по принципу 1 таблица, например users, – 1 класс в NET, например, User. Такие пары называют условностями, и они определены в классе контекста данных как наборы DbSet и такой подход работает по умолчанию.
Хотя существуют такие механизмы, такие как Fluent API и аннотации данных, возможно переопределить эти условности или дополнительные правила конфигурации.
Миграции
В процессе разработки вполне вероятна ситуация, что класс модели Entity Framework изменился, и приходится удалять и базу данных, чтобы сохранялось соответствие модели. Но при удалении базы данных удаляются и все данные из нее.
Чтобы сохранить данные при изменении модели, в Entity Framework Core существует функция миграции. Она позволяет последовательно применять изменения схемы к базе данных, чтобы синхронизировать ее с моделью данных.
В миграции существуют операции, которые позволяют удалять, добавлять столбцы и таблицы, внешние ключи, изменять настройки столбцов, добавлять, удалять и изменять данные, и так далее. При создании миграции автоматически создается класс, где выполняются операции, которые необходимы для применения миграции Up() и ее возврата в метод Down().
С Entity Framework в NET неразрывно связан и LINQ. LINQ — это Language Integrated Query или Внутриязыковой запрос — это такая технология, которая представляет собой набор функций в NET, которые позволяют писать структурированные запросы к базе данных.
Для работы с Entity Framework Core использует технологию LINQ to Entities. LINQ использует похожие на SQL выражения языка C# для получения данных из базы данных. Любая реляционная база данных работает через запросы на языке SQL, и Entity Framework Core выражения LINQ to Entities транслирует в запросы SQL, которые понятны для используемой базы данных.
Заключение
Таким образом мы кратко пробежались по возможностям Entity Framework Core. Как вы увидели, он действительно очень мощный, причем настолько, что программисту, который с ним работает даже не обязательно знать SQL. И Entity Framework Core по праву принадлежит первое место среди ORM в мире NET.