Compartir a través de


Paquetes NuGet de EF Core

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:

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:

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