Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Entity Framework Core (EF Core) se distribuye como paquetes NuGet. Los paquetes que necesita una aplicación dependen de lo siguiente:
- Tipo de sistema de base de datos que se usa (SQL Server, SQLite, etc.)
- Características de EF Core que se necesitan
El proceso habitual que debe seguir para instalar paquetes es este:
- Elija un proveedor de bases de datos e instale el paquete adecuado (véase a continuación).
- Instale también Microsoft.EntityFrameworkCore y Microsoft.EntityFrameworkCore.Relational si usa un proveedor de bases de datos relacionales. Esto ayuda a garantizar que se usen versiones coherentes. Además, NuGet le informará de cuándo se distribuyen las nuevas versiones del paquete.
- Opcionalmente, decida qué tipo de herramientas necesita e instale los paquetes adecuados para ello (véase a continuación).
Si quiere obtener ayuda para empezar a usar EF Core, consulte el tutorial de introducción a Entity Framework Core.
Versiones de paquete
Asegúrese de instalar la misma versión de todos los paquetes de EF Core enviados por Microsoft. Por ejemplo, si se instala la versión 5.0.3 de Microsoft.EntityFrameworkCore.SqlServer, la versión de todos los demás paquetes de Microsoft.EntityFrameworkCore.* también debe ser la 5.0.3.
Asegúrese también de que los paquetes externos sean compatibles con la versión de EF Core que se usa. En concreto, compruebe que el proveedor de bases de datos externas es compatible con la versión de EF Core que se usa. Las nuevas versiones principales de EF Core suelen requerir un proveedor de bases de datos actualizado.
Advertencia
NuGet no obliga a usar versiones de paquete coherentes. Compruebe siempre cuidadosamente las versiones de paquete a las que hace referencia en el archivo .csproj
(o equivalente).
Proveedores de bases de datos
EF Core admite distintos sistemas de base de datos mediante el uso de "proveedores de bases de datos". Cada sistema tiene su propio proveedor de bases de datos, que se distribuye como paquete NuGet. Las aplicaciones deben instalar uno o varios de estos paquetes del proveedor.
En la tabla siguiente se indican proveedores de bases de datos comunes. Consulte Proveedores de bases de datos para obtener una lista más completa de los proveedores disponibles.
Sistema de base de datos | Paquete |
---|---|
SQL Server y SQL Azure | Microsoft.EntityFrameworkCore.SqlServer |
SQLite | Microsoft.EntityFrameworkCore.Sqlite |
Azure Cosmos DB | Microsoft.EntityFrameworkCore.Cosmos |
PostgreSQL | Npgsql.EntityFrameworkCore.PostgreSQL* |
MySQL | Pomelo.EntityFrameworkCore.MySql* |
Base de datos en memoria de EF Core** | Microsoft.EntityFrameworkCore.InMemory |
* Se trata de proveedores de código abierto populares y de alta calidad, desarrollados y distribuidos por la comunidad. Microsoft se encarga de la distribución de los demás proveedores enumerados.
** Considere detenidamente si le conviene usar el proveedor en memoria. No está diseñado para su uso en producción y podría no ser la mejor solución para las pruebas.
Herramientas
El uso de herramientas para migraciones de EF Core y de técnicas de ingeniería inversa (scaffolding) a partir de una base de datos existente requiere la instalación del paquete de herramientas adecuado:
- dotnet-ef para herramientas de línea de comandos multiplataforma
- Microsoft.EntityFrameworkCore.Tasks para tareas de MSBuild que permiten la integración en tiempo de compilación.
- Microsoft.EntityFrameworkCore.Tools para herramientas de PowerShell que funcionan en la consola del administrador de paquetes de Visual Studio
Consulte Referencia sobre las herramientas de Entity Framework Core para obtener más información sobre el uso de las herramientas de EF Core, incluido cómo instalar correctamente la herramienta dotnet-ef
en un proyecto o globalmente.
Sugerencia
De forma predeterminada, el paquete Microsoft.EntityFrameworkCore.Design se instala de manera que no se implemente con la aplicación. Esto también significa que sus tipos no se pueden usar de forma transitiva en otros proyectos. Use un elemento PackageReference
normal en el archivo .csproj
(o equivalente) si necesita acceder a los tipos de este paquete. Consulte Servicios en tiempo de diseño para obtener más información.
Paquetes de extensión
Hay muchas extensiones para EF Core publicadas por Microsoft y terceros como paquetes NuGet. Estos son algunos de los paquetes usados comúnmente:
Funcionalidad | Paquete | Dependencias adicionales |
---|---|---|
Servidores proxy para la carga diferida y el seguimiento de cambios | Microsoft.EntityFrameworkCore.Proxies | Castle.Core |
Compatibilidad espacial con SQL Server | Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite | NetTopologySuite y NetTopologySuite.IO.SqlServerBytes |
Compatibilidad espacial con SQLite | Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite | NetTopologySuite y NetTopologySuite.IO.SpatiaLite |
Compatibilidad espacial con PostgreSQL | Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite | NetTopologySuite y NetTopologySuite.IO.PostGIS (mediante Npgsql.NetTopologySuite) |
Compatibilidad espacial con MySQL | Pomelo.EntityFrameworkCore.MySql.NetTopologySuite | NetTopologySuite |
Otros paquetes
Otros paquetes de EF Core se extraen como dependencias del paquete del proveedor de bases de datos. Aun así, puede que le interese agregar referencias de paquete explícitas para estos paquetes, de modo que NuGet proporcione notificaciones cuando se publiquen nuevas versiones.
Funcionalidad | Paquete |
---|---|
Funcionalidad básica de EF Core | Microsoft.EntityFrameworkCore |
Funcionalidad común de bases de datos relacionales | Microsoft.EntityFrameworkCore.Relational |
Paquete ligero para atributos de EF Core, etc. | Microsoft.EntityFrameworkCore.Abstractions |
Analizadores de código de Roslyn para el uso de EF Core | Microsoft.EntityFrameworkCore.Analyzers |
Proveedor de SQLite para EF Core sin dependencia de SQLite nativa | Microsoft.EntityFrameworkCore.Sqlite.Core |
Implementación de la funcionalidad en tiempo de diseño compartida por las herramientas de EF | Microsoft.EntityFrameworkCore.Design |
Paquetes para pruebas del proveedor de bases de datos
Los siguientes paquetes se usan para probar los proveedores de bases de datos integrados en repositorios de GitHub externos. Consulte efcore.pg y Pomelo.EntityFrameworkCore.MySql para obtener ejemplos. Las aplicaciones no deben instalar estos paquetes.
Funcionalidad | Paquete |
---|---|
Pruebas para cualquier proveedor de bases de datos | Microsoft.EntityFrameworkCore.Specification.Tests |
Pruebas para proveedores de bases de datos relacionales | Microsoft.EntityFrameworkCore.Relational.Specification.Tests |
Paquetes obsoletos
No instale los siguientes paquetes obsoletos y quítelos si están instalados actualmente en los proyectos:
- Microsoft.EntityFrameworkCore.Relational.Design
- Microsoft.EntityFrameworkCore.Tools.DotNet
- Microsoft.EntityFrameworkCore.SqlServer.Design
- Microsoft.EntityFrameworkCore.Sqlite.Design
- Microsoft.EntityFrameworkCore.Relational.Design.Specification.Tests