Поставщики баз данных

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

Текущие поставщики

Внимание

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

Внимание

Поставщики EF Core обычно не работают в основных версиях. Например, поставщик, выпущенный для EF Core 7, не будет работать с EF Core 8.

Пакет NuGet Поддерживаемые ядра СУБД Программа обслуживания или поставщик Примечания и требования Для EF Core Полезные ссылки
Microsoft.EntityFrameworkCore.SqlServer Более поздние версии SQL Azure и SQL Server 2012 Проект EF Core (Майкрософт) 6, 7, 8 Документация
Microsoft.EntityFrameworkCore.Sqlite SQLite 3.7 и выше Проект EF Core (Майкрософт) 6, 7, 8 Документация
Microsoft.EntityFrameworkCore.InMemory Выполняющаяся в памяти база данных EF Core Проект EF Core (Майкрософт) Ограничения 6, 7, 8 Документация
Microsoft.EntityFrameworkCore.Cosmos API SQL Azure Cosmos DB Проект EF Core (Майкрософт) 6, 7, 8 Документация
Npgsql.EntityFrameworkCore.PostgreSQL PostgreSQL Команда разработчиков Npgsql 6, 7, 8 Документация
Pomelo.EntityFrameworkCore.MySql MySQL, MariaDB Проект Pomelo Foundation 6, 7, 8 readme
MySql.EntityFrameworkCore MySQL Проект MySQL (Oracle) 6, 7 Документация
Oracle.EntityFrameworkCore Oracle DB 11.2 и выше Oracle 6, 7 website
MongoDB.EntityFrameworkCore MongoDB MongoDB Сейчас находится на этапе предварительной версии 7 Документация
Devart.Data.MySql.EFCore MySQL 5 и выше DevArt Платный 6, 7, 8 Документация
Devart.Data.Oracle.EFCore Oracle DB 9.2.0.4 и выше DevArt Платный 6, 7, 8 Документация
Devart.Data.PostgreSql.EFCore PostgreSQL 8.0 и выше DevArt Платный 6, 7, 8 Документация
Devart.Data.SQLite.EFCore SQLite 3 и выше DevArt Платный 6, 7, 8 Документация
Devart.Data.DB2.EFCore DB2 DevArt Платный 6, 7, 8 Документация
Devart.Data.Big commerce.EFCore BigCommerce DevArt Платный 6, 7, 8 Документация
Devart.Data.Dynamics.EFCore Microsoft Dynamics 365 DevArt Платный 6, 7, 8 Документация
Devart.Data.FreshBooks.EFCore FreshBooks DevArt Платный 6, 7, 8 Документация
Devart.Data.Magento.EFCore Magento DevArt Платный 6, 7, 8 Документация
Devart.Data.MailChimp.EFCore Mailchimp DevArt Платный 6, 7, 8 Документация
Devart.Data.QuickBooks.EFCore QuickBooks. DevArt Платный 6, 7, 8 Документация
Devart.Data.Salesforce.EFCore Salesforce DevArt Платный 6, 7, 8 Документация
Devart.Data.ExactTarget.EFCore Salesforce MC (ExactTarget) DevArt Платный 6, 7, 8 Документация
Devart.Data.Sugar.EFCore SugarCRM DevArt Платный 6, 7, 8 Документация
Devart.Data.Zoho.EFCore Zoho CRM DevArt Платный 6, 7, 8 Документация
MASES. EntityFrameworkCore.KNet Apache Kafka Группа MASES Пробная версия, подписка 6, 7, 8 Документация
Interbase Interbase Interbase 6 Документация
FirebirdSql.EntityFrameworkCore.Firebird Firebird 3.0 и выше Jiří Činčura 7 Документация
IBM.EntityFrameworkCore Db2, Informix IBM Платный, Windows 6 Начало работы
IBM.EntityFrameworkCore-lnx Db2, Informix IBM Платный, Linux 6 Начало работы
IBM.EntityFrameworkCore-osx Db2, Informix IBM Платный, macOS 6 Начало работы
EntityFrameworkCore.Jet Файлы Microsoft Access CirrusRedOrg Windows 6, 7, 8 (предварительная версия) readme
Google.Cloud.EntityFrameworkCore.Spanner Google Cloud Spanner Cloud Spanner Ecosystem Сейчас находится на этапе предварительной версии 6 учебник
Teradata.EntityFrameworkCore Teradata Database 16.10 и выше Teradata 3 website
FileContextCore Хранение данных в файлах Моррис Янацек (Morris Janatzek) Для разработки 3 readme
FileBaseContext Хранение таблиц в файлах k.D.g Для разработки 7, 8 readme
EntityFrameworkCore.SqlServerCompact35 SQL Server Compact 3.5 Эрик Эйлсков Йенсен (Erik Ejlskov Jensen) .NET Framework 2 Вики-сайт
EntityFrameworkCore.SqlServerCompact40 SQL Server Compact 4.0 Эрик Эйлсков Йенсен (Erik Ejlskov Jensen) .NET Framework 2 Вики-сайт
EntityFrameworkCore.OpenEdge Ход выполнения OpenEdge Алекс Вайс (Alex Wiese) 2 readme

Добавление поставщика базы данных в приложение

Большинство поставщиков баз данных для EF Core распространяется в виде пакетов NuGet. Их можно установить следующим образом:

dotnet add package provider_package_name

После установки настройка поставщика осуществляется в DbContext с использованием либо метода OnConfiguring, либо метода AddDbContext (если применяется контейнер внедрения зависимостей). Например, в следующей строке настраивается поставщик SQL Server с использованием переданной строки подключения:

optionsBuilder.UseSqlServer(
    "Server=(localdb)\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;");

Поставщики баз данных позволяют расширить возможности EF Core, реализуя уникальные функции для конкретных баз данных. Некоторые концепции являются общими для большинства баз данных и включены в основной набор компонентов EF Core. К ним относятся выражение запросов с помощью LINQ, транзакции и отслеживание изменений объектов при их загрузке из базы данных. Некоторые концепции характерны для определенного поставщика. Например, поставщик SQL Server позволяет настроить таблицы, оптимизированные для памяти (функция, относящаяся к SQL Server). Другие концепции характерны для класса поставщиков. Например, поставщики EF Core для реляционных баз данных создаются в общей Microsoft.EntityFrameworkCore.Relational библиотеке, которая предоставляет API для настройки сопоставлений таблиц и столбцов, ограничений внешнего ключа и т. д. Поставщики обычно распределяются как пакеты NuGet.

Внимание

Выпускаемые исправления EF Core часто содержат обновления пакета Microsoft.EntityFrameworkCore.Relational. При добавлении поставщика реляционной базы данных этот пакет становится транзитивной зависимостью вашего приложения. Тем не менее многие поставщики выпускаются независимо от EF Core и могут не обновляться при выпуске новых исправлений этого пакета. Чтобы гарантировать исправление всех обнаруженных ошибок, рекомендуется добавлять исправления Microsoft.EntityFrameworkCore.Relational в приложение в виде прямых зависимостей.