O Entity Framework Core pode acessar muitos bancos de dados diferentes por meio de bibliotecas de plug-in chamadas de provedores de banco de dados.
Provedores atuais
Important
Os provedores do EF Core são criados por uma variedade de origens. Nem todos os provedores são mantidos como parte do Projeto do Entity Framework Core. Ao considerar um provedor, avalie a qualidade, o licenciamento, o suporte etc. para garantir que ele cumpra os seus requisitos. Examine também a documentação de cada provedor para obter informações detalhadas de compatibilidade de versão.
Important
Normalmente, os provedores do EF Core não funcionam nas versões principais. Por exemplo, um provedor lançado para o EF Core 8 não funcionará com o EF Core 9.
| Pacote do NuGet |
Mecanismos de banco de dados com suporte |
Mantenedor / fornecedor |
Notas / requisitos |
Para o EF Core |
Links úteis |
|
Microsoft.EntityFrameworkCore.SqlServer |
SQL do Azure, SQL Server 2012 em diante, Azure Synapse Analytics |
Projeto EF Core (Microsoft) |
|
8, 9, 10 |
docs |
|
Microsoft.EntityFrameworkCore.Sqlite |
SQLite 3.46.1 em diante |
Projeto EF Core (Microsoft) |
|
8, 9, 10 |
docs |
|
Microsoft.EntityFrameworkCore.InMemory |
Banco de dados em memória do EF Core |
Projeto EF Core (Microsoft) |
Limitations |
8, 9, 10 |
docs |
|
Microsoft.EntityFrameworkCore.Cosmos |
API de SQL do Azure Cosmos DB |
Projeto EF Core (Microsoft) |
|
8, 9, 10 |
docs |
|
Npgsql.EntityFrameworkCore.PostgreSQL |
PostgreSQL |
Equipe de desenvolvimento do Npgsql |
|
8, 9 |
docs |
|
Pomelo.EntityFrameworkCore.MySql |
MySQL, MariaDB |
Projeto da Fundação Pomelo |
|
8, 9 |
readme |
|
MySql.EntityFrameworkCore |
MySQL |
Projeto MySQL (Oracle) |
|
8, 9 |
docs |
|
Oracle.EntityFrameworkCore |
Oracle DB 19c em diante |
Oracle |
|
8, 9, 10 |
docs |
|
MongoDB.EntityFrameworkCore |
MongoDB |
MongoDB |
|
8 |
docs |
|
Couchbase.EntityFrameworkCore |
Couchbase |
Couchbase |
|
8, 9 |
docs |
|
Devart.Data.MySql.EFCore |
MySQL 5 em diante |
DevArt |
Paid |
8, 9 |
docs |
|
Devart.Data.Oracle.EFCore |
Oracle Database 9.2.0.4 em diante |
DevArt |
Paid |
8, 9 |
docs |
|
Devart.Data.PostgreSql.EFCore |
PostgreSQL 8.0 em diante |
DevArt |
Paid |
8, 9 |
docs |
|
Devart.Data.SQLite.EFCore |
SQLite 3 em diante |
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 |
Microsoft 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 |
Zoho Books |
DevArt |
Paid |
8, 9 |
docs |
|
Devart.Data.ZohoDesk.EFCore |
Zoho Desk |
DevArt |
Paid |
8, 9 |
docs |
|
MASES.EntityFrameworkCore.KNet |
Apache Kafka |
Grupo MASES |
Avaliação, Assinatura |
8 |
docs |
|
InterBase |
InterBase |
InterBase |
|
8 |
docs |
|
FirebirdSql.EntityFrameworkCore.Firebird |
Firebird 3.0 em diante |
Jiří Činčura |
|
8 |
docs |
|
IBM.EntityFrameworkCore |
Db2, Informix |
IBM |
Pago, Windows |
8 |
introdução |
|
IBM.EntityFrameworkCore-lnx |
Db2, Informix |
IBM |
Pago, Linux |
8 |
introdução |
|
IBM.EntityFrameworkCore-osx |
Db2, Informix |
IBM |
Pago, macOS |
8 |
introdução |
|
EntityFrameworkCore.Jet |
Arquivos do Microsoft Access |
CirrusRedOrg |
Windows |
8, 9 |
readme |
|
Google.Cloud.EntityFrameworkCore.Spanner |
Google Cloud Spanner |
Ecossistema do Cloud Spanner |
|
8 |
tutorial |
|
Teradata.EntityFrameworkCore |
Banco de dados Teradata 16.10 em diante |
Teradata |
|
3 |
website |
|
FileContextCore |
Armazena dados em arquivos |
Morris Janatzek |
Para fins de desenvolvimento |
3 |
readme |
|
FileBaseContext |
Armazenar tabelas em arquivos |
k.D.g |
Para fins de desenvolvimento |
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 |
Progress OpenEdge |
Alex Wiese |
|
2 |
readme |
|
EFCore.Snowflake |
Snowflake |
Krzysztof Sielaff |
|
8 |
readme |
|
EFCore.Kusto |
Azure Data Explorer (Kusto) |
Anas Ismail Khan |
|
8 |
readme |
|
EntityFrameworkCore.Ydb |
YDB |
Equipe do YDB |
|
9, 10 |
website |
Adicionando um provedor de banco de dados ao seu aplicativo
A maioria dos provedores de banco de dados para o EF Core é distribuída como pacotes NuGet e pode ser instalada da seguinte maneira:
dotnet add package provider_package_name
install-package provider_package_name
Depois de instalado, você configurará o provedor no DbContext, no método OnConfiguring ou no método AddDbContext se você estiver usando um contêiner de injeção de dependência.
Por exemplo, a seguinte linha configura o provedor do SQL Server com a cadeia de conexão passada:
optionsBuilder.UseSqlServer(
@"Server=(localdb)\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;");
Os provedores de banco de dados podem estender o EF Core para habilitar a funcionalidade exclusiva para bancos de dados específicos. Alguns conceitos são comuns à maioria dos bancos de dados e estão incluídos nos componentes principais do EF Core. Esses conceitos incluem expressar consultas no LINQ, em transações, e rastrear alterações aos objetos depois que eles forem carregados do banco de dados.
Alguns conceitos são específicos para um determinado provedor. Por exemplo, o provedor SQL Server permite configurar as tabelas com otimização de memória (um recurso específico do SQL Server). Outros conceitos são específicos de uma classe de provedores.
Por exemplo, provedores do EF Core para bancos de dados relacionais são desenvolvidos com base na biblioteca Microsoft.EntityFrameworkCore.Relational comum, que fornece APIs para configurar mapeamentos de tabela e coluna, restrições de chave estrangeira etc. Os provedores geralmente são distribuídos como pacotes NuGet.
Important
Quando uma nova versão de patch do EF Core é lançada, ela geralmente inclui atualizações para o pacote Microsoft.EntityFrameworkCore.Relational.
Quando você adiciona um provedor de banco de dados relacional, esse pacote se torna uma dependência transitiva do seu aplicativo.
Mas muitos provedores são lançados de forma independente do EF Core e podem não ser atualizados para dependerem da versão de patch mais recente do pacote.
Para obter todas as correções de bug, é recomendável que você adicione a versão de patch do Microsoft.EntityFrameworkCore.Relational como uma dependência direta do seu aplicativo.