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

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

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

Важно!

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

Важно!

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

Пакет NuGet Поддерживаемые ядра СУБД Программа обслуживания или поставщик Примечания и требования Для EF Core Полезные ссылки
Microsoft.EntityFrameworkCore.SqlServer Azure SQL и SQL Server 2012 г. Проект EF Core (Майкрософт) 6, 7 Документы
Microsoft.EntityFrameworkCore.Sqlite SQLite 3.7 и выше Проект EF Core (Майкрософт) 6, 7 Документы
Microsoft.EntityFrameworkCore.InMemory Выполняющаяся в памяти база данных EF Core Проект EF Core (Майкрософт) Ограничения 6, 7 Документы
Microsoft.EntityFrameworkCore.Cosmos Azure Cosmos DB SQL API Проект EF Core (Майкрософт) 6, 7 Документы
Npgsql.EntityFrameworkCore.PostgreSQL PostgreSQL Команда разработчиков Npgsql 6, 7 Документы
Pomelo.EntityFrameworkCore.MySql MySQL, MariaDB Проект Pomelo Foundation 6, 7 Файл сведений
MySql.EntityFrameworkCore MySQL Проект MySQL (Oracle) 6, 7 Документы
Oracle.EntityFrameworkCore Oracle DB 11.2 и выше Oracle 6 веб-сайт
Devart.Data.MySql.EFCore MySQL 5 и выше DevArt Платный 6 Документы
Devart.Data.Oracle.EFCore Oracle DB 9.2.0.4 и выше DevArt Платный 6 Документы
Devart.Data.PostgreSql.EFCore PostgreSQL 8.0 и выше DevArt Платный 6 Документы
Devart.Data.SQLite.EFCore SQLite 3 и выше DevArt Платный 6 docs
Interbase Interbase Interbase 6 Документы
FirebirdSql.EntityFrameworkCore.Firebird Firebird 3.0 и выше Jiří Činčura 6 Документы
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 Bubi 6 Файл сведений
Google.Cloud.EntityFrameworkCore.Spanner Google Cloud Spanner Cloud Spanner Ecosystem Сейчас находится на этапе предварительной версии 6 руководство
Teradata.EntityFrameworkCore Teradata Database 16.10 и выше Teradata 3 веб-сайт
FileContextCore Хранение данных в файлах Моррис Янацек (Morris Janatzek) Для разработки 3 Файл сведений
FileBaseContext Хранение таблиц в файлах к.д.г. Для разработки 7 Файл сведений
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 Файл сведений

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

Большинство поставщиков баз данных для 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 в приложение в виде прямых зависимостей.