O Entity Framework Core pode acessar muitos bancos de dados diferentes por meio de bibliotecas de plug-in chamadas provedores de banco de dados.
Fornecedores atuais
Important
Os provedores EF Core são criados por uma variedade de fontes. Nem todos os provedores são mantidos como parte do Microsoft Entity Framework Core Project. Ao considerar um fornecedor, certifique-se de avaliar a qualidade, licenciamento, suporte, etc. para garantir que eles atendam às suas necessidades. Certifique-se também de revisar a documentação de cada provedor para obter informações detalhadas sobre compatibilidade de versão.
Important
Os provedores EF Core normalmente 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 NuGet |
Mecanismos de banco de dados suportados |
Mantenedor / Fornecedor |
Notas / Requisitos |
Para EF Core |
Ligações úteis |
|
Microsoft.EntityFrameworkCore.SqlServer |
Azure SQL, 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 na memória EF Core |
Projeto EF Core (Microsoft) |
Limitations |
8, 9, 10 |
docs |
|
Microsoft.EntityFrameworkCore.Cosmos |
Azure Cosmos DB SQL API |
Projeto EF Core (Microsoft) |
|
8, 9, 10 |
docs |
|
Npgsql.EntityFrameworkCore.PostgreSQL |
PostgreSQL |
Equipe de Desenvolvimento Npgsql |
|
8, 9 |
docs |
|
Pomelo.EntityFrameworkCore.MySql |
MySQL, MariaDB |
Projeto 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 DB 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 |
Teste, Subscrição |
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 |
Como começar |
|
IBM.EntityFrameworkCore-lnx |
Db2, Informix |
IBM |
Pago, Linux |
8 |
Como começar |
|
IBM.EntityFrameworkCore-osx |
Db2, Informix |
IBM |
Pago, macOS |
8 |
Como começar |
|
EntityFrameworkCore.Jet |
Arquivos do Microsoft Access |
CirrusRedOrg |
Windows |
8, 9 |
readme |
|
Google.Cloud.EntityFrameworkCore.Spanner |
Chave inglesa do Google Cloud |
Ecossistema Cloud Spanner |
|
8 |
tutorial |
|
Teradata.EntityFrameworkCore |
Base de Dados Teradata a partir de 16.10 |
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 |
Equipa YDB |
|
9, 10 |
website |
Adicionando um provedor de banco de dados ao seu aplicativo
A maioria dos provedores de banco de dados para EF Core são distribuídos como pacotes NuGet e podem ser instalados da seguinte maneira:
dotnet add package provider_package_name
install-package provider_package_name
Uma vez instalado, você configurará o provedor em seu DbContext, no método OnConfiguring ou no método AddDbContext se estiver usando um contêiner de injeção de dependência.
Por exemplo, a linha a seguir 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 funcionalidades exclusivas 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, transações e controlar alterações em objetos depois que eles são carregados do banco de dados.
Alguns conceitos são específicos de um determinado provedor. Por exemplo, o provedor do SQL Server permite que você configure tabelas com otimização de memória (um recurso específico do SQL Server). Outros conceitos são específicos para uma classe de provedores.
Por exemplo, os provedores EF Core para bancos de dados relacionais se baseiam na biblioteca de Microsoft.EntityFrameworkCore.Relational comum, que fornece APIs para configurar mapeamentos de tabelas e colunas, 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, 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 depender da versão de correção mais recente desse pacote.
Para ter certeza de que você receberá todas as correções de bugs, é recomendável que você adicione a versão de patch do Microsoft.EntityFrameworkCore.Relational como uma dependência direta do seu aplicativo.