Поделиться через


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

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

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

Important

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

Important

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

Пакет NuGet Поддерживаемые ядра СУБД Программа обслуживания или поставщик Примечания и требования Для EF Core Полезные ссылки
Microsoft.EntityFrameworkCore.SqlServer Azure SQL, SQL Server 2012 и далее, Azure Synapse Analytics Проект EF Core (Майкрософт) 8, 9, 10 docs
Microsoft.EntityFrameworkCore.Sqlite начиная с SQLite 3.46.1 Проект EF Core (Майкрософт) 8, 9, 10 docs
Microsoft.EntityFrameworkCore.InMemory Выполняющаяся в памяти база данных EF Core Проект EF Core (Майкрософт) Limitations 8, 9, 10 docs
Microsoft.EntityFrameworkCore.Cosmos API SQL Azure Cosmos DB Проект EF Core (Майкрософт) 8, 9, 10 docs
Npgsql.EntityFrameworkCore.PostgreSQL PostgreSQL Команда разработчиков Npgsql 8, 9 docs
Pomelo.EntityFrameworkCore.MySql MySQL, MariaDB Проект Pomelo Foundation 8, 9 readme
MySql.EntityFrameworkCore MySQL Проект MySQL (Oracle) 8, 9 docs
Oracle.EntityFrameworkCore Oracle DB 19c и далее Oracle 8, 9, 10 docs
MongoDB.EntityFrameworkCore MongoDB MongoDB 8 docs
Couchbase.EntityFrameworkCore Couchbase Couchbase 8, 9 docs
Devart.Data.MySql.EFCore MySQL 5 и выше DevArt Paid 8, 9 docs
Devart.Data.Oracle.EFCore Oracle DB 9.2.0.4 и выше DevArt Paid 8, 9 docs
Devart.Data.PostgreSql.EFCore PostgreSQL 8.0 и выше DevArt Paid 8, 9 docs
Devart.Data.SQLite.EFCore SQLite 3 и выше DevArt Paid 8, 9 docs
Devart.Data.DB2.EFCore DB2 DevArt Paid 8, 9 docs
Devart.Data.Bigcommerce.EFCore BigCommerce DevArt Paid 8, 9 docs
Devart.Data.Dynamics.EFCore Майкрософт Dynamics 365 DevArt Paid 8, 9 docs
Devart.Data.FreshBooks.EFCore FreshBooks DevArt Paid 8, 9 docs
Devart.Data.Magento.EFCore Magento DevArt Paid 8, 9 docs
Devart.Data.MailChimp.EFCore Mailchimp DevArt Paid 8, 9 docs
Devart.Data.QuickBooks.EFCore QuickBooks DevArt Paid 8, 9 docs
Devart.Data.Salesforce.EFCore Salesforce DevArt Paid 8, 9 docs
Devart.Data.ExactTarget.EFCore Salesforce MC (ExactTarget) DevArt Paid 8, 9 docs
Devart.Data.Sugar.EFCore SugarCRM DevArt Paid 8, 9 docs
Devart.Data.Zoho.EFCore Zoho CRM DevArt Paid 8, 9 docs
Devart.Data.ZohoBooks.EFCore Зохо Книги DevArt Paid 8, 9 docs
Devart.Data.ZohoDesk.EFCore Zoho Desk DevArt Paid 8, 9 docs
MASES.EntityFrameworkCore.KNet Apache Kafka Группа MASES Пробная версия, подписка 8 docs
InterBase InterBase InterBase 8 docs
FirebirdSql.EntityFrameworkCore.Firebird Firebird 3.0 и выше Jií Činčura 8 docs
IBM.EntityFrameworkCore Db2, Informix IBM Платная версия Windows 8 Начало работы
IBM.EntityFrameworkCore-lnx Db2, Informix IBM Платные, Linux 8 Начало работы
IBM.EntityFrameworkCore-osx Db2, Informix IBM Платные, macOS 8 Начало работы
EntityFrameworkCore.Jet Файлы Microsoft Access CirrusRedOrg Windows 8, 9 readme
Google.Cloud.EntityFrameworkCore.Spanner Google Cloud Spanner Экосистема Cloud Spanner 8 tutorial
Teradata.EntityFrameworkCore Teradata Database 16.10 и выше Teradata 3 website
FileContextCore Хранение данных в файлах Моррис Джанацек Для разработки 3 readme
FileBaseContext Хранение таблиц в файлах k.D.g Для разработки 8, 9, 10 readme
EntityFrameworkCore.SqlServerCompact35 SQL Server Compact 3.5 Эрик Эйлсков Йенсен (Erik Ejlskov Jensen) .NET Framework 2 wiki
EntityFrameworkCore.SqlServerCompact40 SQL Server Compact 4.0 Эрик Эйлсков Йенсен (Erik Ejlskov Jensen) .NET Framework 2 wiki
EntityFrameworkCore.OpenEdge Прогресс OpenEdge Алекс Wiese 2 readme
EFCore.Snowflake Snowflake Krzysztof Sielaff 8 readme
EFCore.Kusto Azure Data Explorer (Kusto) Анас Исмаил Хан 8 readme
EntityFrameworkCore.Ydb YDB Команда YDB 9, 10 website

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

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

Important

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