Entity Framework Core puede tener acceso a muchas bases de datos diferentes a través de bibliotecas de complementos denominadas proveedores de bases de datos.
Proveedores actuales
Important
Los proveedores de EF Core se componen de una serie de orígenes. No todos los proveedores se mantienen como parte del proyecto Entity Framework Core de Microsoft. Al considerar un proveedor, evalúe la calidad, las licencias, el soporte técnico, etc. a fin de asegurarse de que satisface los requisitos. Además, asegúrese de revisar la documentación de cada proveedor para obtener información detallada de compatibilidad de versiones.
Important
Normalmente, los proveedores de EF Core no funcionan en las versiones principales. Por ejemplo, un proveedor publicado para EF Core 8 no funcionará con EF Core 9.
| Paquete NuGet |
Motores de base de datos compatibles |
Mantenedor o proveedor |
Notas o requisitos |
Para EF Core |
Vínculos útiles |
|
Microsoft.EntityFrameworkCore.SqlServer |
Azure SQL, SQL Server 2012 y versiones posteriores, Azure Synapse Analytics |
Proyecto EF Core (Microsoft) |
|
8, 9, 10 |
docs |
|
Microsoft.EntityFrameworkCore.Sqlite |
SQLite 3.46.1 y versiones posteriores |
Proyecto EF Core (Microsoft) |
|
8, 9, 10 |
docs |
|
Microsoft.EntityFrameworkCore.InMemory |
Base de datos en memoria de EF Core |
Proyecto EF Core (Microsoft) |
Limitations |
8, 9, 10 |
docs |
|
Microsoft.EntityFrameworkCore.Cosmos |
API SQL de Azure Cosmos DB |
Proyecto EF Core (Microsoft) |
|
8, 9, 10 |
docs |
|
Npgsql.EntityFrameworkCore.PostgreSQL |
PostgreSQL |
Equipo de desarrollo de Npgsql |
|
8, 9 |
docs |
|
Pomelo.EntityFrameworkCore.MySql |
MySQL, MariaDB |
Proyecto Pomelo Foundation |
|
8, 9 |
readme |
|
MySql.EntityFrameworkCore |
MySQL |
Proyecto MySQL (Oracle) |
|
8, 9 |
docs |
|
Oracle.EntityFrameworkCore |
Oracle DB 19c y versiones posteriores |
Oracle |
|
8, 9, 10 |
docs |
|
MongoDB.EntityFrameworkCore |
MongoDB |
MongoDB |
|
8 |
docs |
|
Couchbase.EntityFrameworkCore |
Couchbase |
Couchbase |
|
8, 9 |
docs |
|
Devart.Data.MySql.EFCore |
De MySQL 5 en adelante |
DevArt |
Paid |
8, 9 |
docs |
|
Devart.Data.Oracle.EFCore |
Oracle DB 9.2.0.4 y versiones posteriores |
DevArt |
Paid |
8, 9 |
docs |
|
Devart.Data.PostgreSql.EFCore |
De PostgreSQL 8.0 en adelante |
DevArt |
Paid |
8, 9 |
docs |
|
Devart.Data.SQLite.EFCore |
De SQLite 3 en adelante |
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 |
Libros de Zoho |
DevArt |
Paid |
8, 9 |
docs |
|
Devart.Data.ZohoDesk.EFCore |
Zoho Desk |
DevArt |
Paid |
8, 9 |
docs |
|
MASES.EntityFrameworkCore.KNet |
Apache Kafka |
Grupo MASES |
Prueba, suscripción |
8 |
docs |
|
InterBase |
InterBase |
InterBase |
|
8 |
docs |
|
FirebirdSql.EntityFrameworkCore.Firebird |
A partir de Firebird 3.0 |
Jiří Činčura |
|
8 |
docs |
|
IBM.EntityFrameworkCore |
Db2, Informix |
IBM |
De pago, Windows |
8 |
Empezar |
|
IBM.EntityFrameworkCore-lnx |
Db2, Informix |
IBM |
Pago, Linux |
8 |
Empezar |
|
IBM.EntityFrameworkCore-osx |
Db2, Informix |
IBM |
Pago, macOS |
8 |
Empezar |
|
EntityFrameworkCore.Jet |
Archivos de Microsoft Access |
CirrusRedOrg |
Windows |
8, 9 |
readme |
|
Google.Cloud.EntityFrameworkCore.Spanner |
Google Cloud Spanner |
Ecosistema de Cloud Spanner |
|
8 |
tutorial |
|
Teradata.EntityFrameworkCore |
Teradata Database 16.10 en adelante |
Teradata |
|
3 |
website |
|
FileContextCore |
Almacena datos en archivos. |
Morris Janatzek |
Con fines de desarrollo. |
3 |
readme |
|
FileBaseContext |
Almacena tablas en archivos |
k.D.g |
Con fines de desarrollo. |
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 |
Progreso de 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 |
Equipo de YDB |
|
9, 10 |
website |
Agregar un proveedor de bases de datos a la aplicación
La mayoría de los proveedores de bases de datos para EF Core se distribuyen como paquetes NuGet y se pueden instalar siguiendo estos pasos:
dotnet add package provider_package_name
install-package provider_package_name
Una vez instalado, se configurará el proveedor en su DbContext, ya sea en el método OnConfiguring o el método AddDbContext si se usa un contenedor de inserción de dependencias.
Por ejemplo, la línea siguiente configura el proveedor de SQL Server con la cadena de conexión pasada:
optionsBuilder.UseSqlServer(
@"Server=(localdb)\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;");
Los proveedores de bases de datos pueden ampliar EF Core para habilitar una funcionalidad única para bases de datos específicas. Algunos conceptos son comunes a la mayoría de las bases de datos y se incluyen en los componentes principales de EF Core. Estos conceptos incluyen la expresión de consultas en LINQ, las transacciones y el seguimiento de cambios en objetos una vez cargados desde la base de datos.
Algunos conceptos son específicos de un proveedor determinado. Por ejemplo, el proveedor de SQL Server permite configurar tablas optimizadas para memoria (una característica específica de SQL Server). Otros conceptos son específicos de una clase de proveedores.
Por ejemplo, los proveedores de EF Core para bases de datos relacionales se basan en la biblioteca común Microsoft.EntityFrameworkCore.Relational, que proporciona API para configurar asignaciones de tabla y columna, restricciones de clave externa, etc. Los proveedores normalmente se distribuyen como paquetes NuGet.
Important
Cuando se publica una nueva versión de revisión de EF Core, suele incluir actualizaciones del paquete Microsoft.EntityFrameworkCore.Relational.
Cuando se agrega un proveedor de bases de datos relacional, este paquete se convierte en una dependencia transitiva de la aplicación.
Pero muchos proveedores se publican independientemente de EF Core y es posible que no puedan actualizarse para que se basen en la versión de revisión más reciente de ese paquete.
A fin de asegurarse de que obtendrá todas las correcciones de errores, se recomienda agregar la versión de revisión de Microsoft.EntityFrameworkCore.Relational como dependencia directa de la aplicación.