Proveedores de bases de datosDatabase Providers

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.Entity Framework Core can access many different databases through plug-in libraries called database providers.

Proveedores actualesCurrent providers

Importante

Los proveedores de EF Core se componen de una serie de orígenes.EF Core providers are built by a variety of sources. No todos los proveedores se mantienen como parte del proyecto Entity Framework Core.Not all providers are maintained as part of the Entity Framework Core Project. Al considerar un proveedor, evalúe la calidad, las licencias, el soporte técnico, etc. a fin de asegurarse de que satisface los requisitos.When considering a provider, be sure to evaluate quality, licensing, support, etc. to ensure they meet your requirements. Además, asegúrese de revisar la documentación de cada proveedor para obtener información detallada de compatibilidad de versiones.Also make sure you review each provider's documentation for detailed version compatibility information.

Paquete NuGetNuGet Package Motores de base de datos compatiblesSupported database engines Mantenedor o proveedorMaintainer / Vendor Notas o requisitosNotes / Requirements Vínculos útilesUseful links
Microsoft.EntityFrameworkCore.SqlServerMicrosoft.EntityFrameworkCore.SqlServer De SQL Server 2008 en adelanteSQL Server 2008 onwards Proyecto EF Core (Microsoft)EF Core Project (Microsoft) Documentacióndocs
Microsoft.EntityFrameworkCore.SqliteMicrosoft.EntityFrameworkCore.Sqlite De SQLite 3.7 en adelanteSQLite 3.7 onwards Proyecto EF Core (Microsoft)EF Core Project (Microsoft) Documentacióndocs
Microsoft.EntityFrameworkCore.InMemoryMicrosoft.EntityFrameworkCore.InMemory Base de datos en memoria de EF CoreEF Core in-memory database Proyecto EF Core (Microsoft)EF Core Project (Microsoft) Solo para pruebasFor testing only Documentacióndocs
Microsoft.EntityFrameworkCore.CosmosMicrosoft.EntityFrameworkCore.Cosmos API de SQL de Azure Cosmos DBAzure Cosmos DB SQL API Proyecto EF Core (Microsoft)EF Core Project (Microsoft) Solo versión preliminarPreview only blogblog
Npgsql.EntityFrameworkCore.PostgreSQLNpgsql.EntityFrameworkCore.PostgreSQL PostgreSQLPostgreSQL Equipo de desarrollo de NpgsqlNpgsql Development Team Documentacióndocs
Pomelo.EntityFrameworkCore.MySqlPomelo.EntityFrameworkCore.MySql MySQL, MariaDBMySQL, MariaDB Proyecto Pomelo FoundationPomelo Foundation Project Archivo Léamereadme
Pomelo.EntityFrameworkCore.MyCatPomelo.EntityFrameworkCore.MyCat Servidor MyCATMyCAT Server Proyecto Pomelo FoundationPomelo Foundation Project Solo versión preliminarPrerelease only Archivo Léamereadme
EntityFrameworkCore.SqlServerCompact40EntityFrameworkCore.SqlServerCompact40 SQL Server Compact 4.0SQL Server Compact 4.0 Erik Ejlskov JensenErik Ejlskov Jensen .NET Framework.NET Framework Wikiwiki
EntityFrameworkCore.SqlServerCompact35EntityFrameworkCore.SqlServerCompact35 SQL Server Compact 3,5SQL Server Compact 3.5 Erik Ejlskov JensenErik Ejlskov Jensen .NET Framework.NET Framework Wikiwiki
FirebirdSql.EntityFrameworkCore.FirebirdFirebirdSql.EntityFrameworkCore.Firebird Firebird 2.5 y 3.xFirebird 2.5 and 3.x Jiří ČinčuraJiří Činčura Documentacióndocs
EntityFrameworkCore.FirebirdSqlEntityFrameworkCore.FirebirdSql Firebird 2.5 y 3.xFirebird 2.5 and 3.x Rafael AlmeidaRafael Almeida Wikiwiki
MySql.Data.EntityFrameworkCoreMySql.Data.EntityFrameworkCore MySQLMySQL Proyecto MySQL (Oracle)MySQL project (Oracle) Documentacióndocs
Oracle.EntityFrameworkCoreOracle.EntityFrameworkCore Oracle DB 11.2 y versiones posterioresOracle DB 11.2 onwards OracleOracle Versión preliminarPrerelease Sitio webwebsite
IBM.EntityFrameworkCoreIBM.EntityFrameworkCore Db2, InformixDb2, Informix IBMIBM Versión de WindowsWindows version blogblog
IBM.EntityFrameworkCore-lnxIBM.EntityFrameworkCore-lnx Db2, InformixDb2, Informix IBMIBM Versión de LinuxLinux version blogblog
IBM.EntityFrameworkCore-osxIBM.EntityFrameworkCore-osx Db2, InformixDb2, Informix IBMIBM Versión de macOSmacOS version blogblog
EntityFrameworkCore.JetEntityFrameworkCore.Jet Archivos de Microsoft AccessMicrosoft Access files BubiBubi .NET Framework.NET Framework Archivo Léamereadme
EntityFrameworkCore.OpenEdgeEntityFrameworkCore.OpenEdge Progress OpenEdgeProgress OpenEdge Alex WieseAlex Wiese Archivo Léamereadme
Devart.Data.Oracle.EFCoreDevart.Data.Oracle.EFCore Oracle DB 9.2.0.4 y versiones posterioresOracle DB 9.2.0.4 onwards DevArtDevArt PagadoPaid Documentacióndocs
Devart.Data.PostgreSql.EFCoreDevart.Data.PostgreSql.EFCore De PostgreSQL 8.0 en adelantePostgreSQL 8.0 onwards DevArtDevArt PagadoPaid Documentacióndocs
Devart.Data.SQLite.EFCoreDevart.Data.SQLite.EFCore De SQLite 3 en adelanteSQLite 3 onwards DevArtDevArt PagadoPaid Documentacióndocs
Devart.Data.MySql.EFCoreDevart.Data.MySql.EFCore De MySQL 5 en adelanteMySQL 5 onwards DevArtDevArt PagadoPaid Documentacióndocs

Proveedores futurosFuture Providers

Cosmos DBCosmos DB

Hemos desarrollado un proveedor de EF Core para la API de SQL en Cosmos DB.We have been developing an EF Core provider for the SQL API in Cosmos DB. Será el primer proveedor de base de datos completo y orientado a documentos que hayamos elaborado, y lo aprendido en este ejercicio se traducirá en mejoras en el diseño de las futuras versiones de EF Core y, posiblemente, otros proveedores no relacionales.This will be the first complete document-oriented database provider we have produced, and the learnings from this exercise are going to inform improvements in the design of future releases of EF Core and possibly other non-relational providers. Una versión preliminar está disponible en la galería de NuGet.A preview is available on the NuGet Gallery.

Proveedor propio de OracleOracle first-party provider

El equipo de Oracle .NET ha publicado la versión beta del proveedor de Oracle para EF Core.The Oracle .NET team has published the beta of the Oracle provider for EF Core. Dirija las preguntas sobre este proveedor, incluida la escala de tiempo de la versión, al sitio de la comunidad de Oracle.Please direct any questions about this provider, including the release timeline, to the Oracle Community Site.

Agregar un proveedor de bases de datos a la aplicaciónAdding a database provider to your application

La mayoría de los proveedores de bases de datos para EF Core se distribuyen como paquetes NuGet.Most database providers for EF Core are distributed as NuGet packages. Esto significa que pueden instalarse con la herramienta dotnet de la línea de comandos:This means they can be installed using the dotnet tool in the command line:

dotnet add package provider_package_name

O en Visual Studio, con la Consola del administrador de paquetes de NuGet:Or in Visual Studio, using NuGet's Package Manager Console:

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.Once installed, you will configure the provider in your DbContext, either in the OnConfiguring method or in the AddDbContext method if you are using a dependency injection container. Por ejemplo, la línea siguiente configura el proveedor de SQL Server con la cadena de conexión pasada:For example, the following line configures the SQL Server provider with the passed connection string:

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.Database providers can extend EF Core to enable functionality unique to specific databases. Algunos conceptos son comunes a la mayoría de las bases de datos y se incluyen en los componentes principales de EF Core.Some concepts are common to most databases, and are included in the primary EF Core components. 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.Such concepts include expressing queries in LINQ, transactions, and tracking changes to objects once they are loaded from the database. Algunos conceptos son específicos de un proveedor determinado.Some concepts are specific to a particular provider. Por ejemplo, el proveedor de SQL Server permite configurar tablas optimizadas para memoria (una característica específica de SQL Server).For example, the SQL Server provider allows you to configure memory-optimized tables (a feature specific to SQL Server). Otros conceptos son específicos de una clase de proveedores.Other concepts are specific to a class of providers. 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.For example, EF Core providers for relational databases build on the common Microsoft.EntityFrameworkCore.Relational library, which provides APIs for configuring table and column mappings, foreign key constraints, etc. Providers are usually distributed as NuGet packages.

Importante

Cuando se publica una nueva versión de revisión de EF Core, suele incluir actualizaciones del paquete Microsoft.EntityFrameworkCore.Relational.When a new patch version of EF Core is released, it often includes updates to the Microsoft.EntityFrameworkCore.Relational package. Cuando se agrega un proveedor de bases de datos relacional, este paquete se convierte en una dependencia transitiva de la aplicación.When you add a relational database provider, this package becomes a transitive dependency of your application. 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.But many providers are released independently from EF Core and may not be updated to depend on the newer patch version of that package. 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.In order to make sure you will get all bug fixes, it is recommended that you add the patch version of Microsoft.EntityFrameworkCore.Relational as a direct dependency of your application.