.NET 6.0 - Conexión a la base de datos PostgreSQL con Entity Framework Core
Tutorial creado con .NET 6.0
Esta publicación muestra los pasos para conectar una API de .NET 6 a PostgreSQL usando Entity Framework Core y crear/actualizar automáticamente la base de datos de PostgreSQL desde el código usando migraciones de EF Core.
Comenzaremos con un ejemplo de .NET 6 CRUD API de un tutorial que publiqué recientemente, utiliza el proveedor de base de datos EF Core InMemory de forma predeterminada para las pruebas, lo actualizaremos para conectarse a una base de datos PostgreSQL y ejecute migraciones de EF Core para generar automáticamente la base de datos y las tablas a partir del código. Para obtener detalles completos sobre la API CRUD de .NET, consulte .NET 6.0 - Ejemplo y tutorial de API CRUD.
Contenidos del tutorial
- Herramientas necesarias para este tutorial
- Descargar & Ejecute la API de .NET de ejemplo
- Actualizar API para usar PostgreSQL
- Crear base de datos PostgreSQL con migraciones de EF Core
- Reiniciar la API CRUD de .NET
Herramientas necesarias para este tutorial
Para seguir los pasos de este tutorial, necesitará lo siguiente:
- .NET SDK - incluye las herramientas de línea de comandos y tiempo de ejecución de .NET.
- Visual Studio Code - editor de código que se ejecuta en Windows, Mac y Linux. Si tiene un editor de código preferido diferente, también está bien.
- extensión C# para Visual Studio Code - agrega compatibilidad con VS Code para desarrollar aplicaciones .NET.
- PostgreSQL - necesitará acceso a una instancia de servidor PostgreSQL en ejecución para que la API se conecte, puede ser remota (por ejemplo, Azure, AWS, etc.) o en su máquina local. La página de descargas de PostgreSQL está en https://www.postgresql.org/download/, asegúrese de que esté iniciado para que la API pueda conectarse a él. También puede ejecutarlo en un contenedor Docker, las imágenes oficiales de Docker para Postgres están disponibles en https://hub.docker.com/_/postgres.
Descargar & Ejecute la API de .NET de ejemplo
Siga estos pasos para descargar y ejecutar la API CRUD de .NET 6 en su máquina local con la base de datos EF Core InMemory predeterminada:
- Descargue o clone el código del proyecto del tutorial desde https://github.com/cornflourblue/dotnet-6-crud-api
- Inicie la API ejecutando
dotnet run
desde la línea de comando en la carpeta raíz del proyecto (donde se encuentra el archivo WebApi.csproj), debería ver el mensajeNow listening on: http://localhost:4000
. - Puede probar la API directamente con una herramienta como Postman o engancharla arriba con el ejemplo aplicación Angular o React disponible.
Comenzando en modo de depuración
También puede iniciar la aplicación en modo de depuración en VS Code abriendo la carpeta raíz del proyecto en VS Code y presionando F5 o seleccionando Depurar -> Inicie la depuración desde el menú superior, ejecutar en modo de depuración le permite adjuntar puntos de interrupción para pausar la ejecución y recorrer el código de la aplicación. Para obtener instrucciones detalladas, incluido un breve video de demostración, consulte VS Code + .NET - Debug a .NET Web App in Visual Studio Code.
Actualice la API de .NET para usar PostgreSQL
Agregar proveedor de base de datos PostgreSQL desde NuGet
Ejecute el siguiente comando desde la carpeta raíz del proyecto para instalar el proveedor de base de datos EF Core para PostgreSQL desde NuGet:
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
Agregar cadena de conexión a la configuración de la aplicación
Abra el archivo appsettings.json
y agregue la entrada "ConnectionStrings"
con una entrada secundaria para la cadena de conexión de PostgreSQL (por ejemplo, "WebApiDatabase"
), la cadena de conexión debe tener el formato "Host=[DB SERVER URL]; Database=[DB NAME]; Username=[USERNAME];Password=[PASSWORD]"
.
Cuando las migraciones de EF Core generan la base de datos, el valor de database
será el nombre de la base de datos creada en PostgreSQL.
El archivo appsettings.json
actualizado con la cadena de conexión debería verse así:
{
"ConnectionStrings": {
"WebApiDatabase": "Host=localhost; Database=dotnet-6-crud-api; Username=postgres; Password=mysecretpassword"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
Actualizar contexto de datos para usar PostgreSQL
La clase DataContext
ubicada en /Helpers/DataContext.cs
se usa para acceder a los datos de la aplicación a través de Entity Framework. Se deriva de la clase DbContext
de Entity Framework y tiene una propiedad Users
pública para acceder y administrar los datos de los usuarios.
Actualice el método OnConfiguring()
para conectarse a PostgreSQL en lugar de una base de datos en memoria reemplazando options.UseInMemoryDatabase("TestDb");
con options.UseNpgsql(Configuration.GetConnectionString("WebApiDatabase"));
.
La clase DataContext
actualizada debería verse así:
namespace WebApi.Helpers;
using Microsoft.EntityFrameworkCore;
using WebApi.Entities;
public class DataContext : DbContext
{
protected readonly IConfiguration Configuration;
public DataContext(IConfiguration configuration)
{
Configuration = configuration;
}
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
// connect to postgres with connection string from app settings
options.UseNpgsql(Configuration.GetConnectionString("WebApiDatabase"));
}
public DbSet<User> Users { get; set; }
}
Cree una base de datos PostgreSQL a partir del código con migraciones de EF Core
Instalar herramientas dotnet ef
Las herramientas de .NET Entity Framework Core (dotnet ef
) se utilizan para generar migraciones de EF Core, para instalar las herramientas de EF Core globalmente ejecute dotnet tool install -g dotnet-ef
, o para actualizar ejecute dotnet tool update -g dotnet-ef
. Para obtener más información sobre las herramientas de EF Core, consulte https://docs.microsoft.com/ef/core/cli/dotnet
Agregue el paquete EF Core Design desde NuGet
Ejecute el siguiente comando desde la carpeta raíz del proyecto para instalar el paquete de diseño de EF Core, proporciona compatibilidad con herramientas de línea de comandos multiplataforma y se usa para generar migraciones de EF Core:
dotnet add package Microsoft.EntityFrameworkCore.Design
Generar migraciones de EF Core
Generar nuevos archivos de migración de EF Core ejecutando el comando dotnet ef migrations add InitialCreate
desde la carpeta raíz del proyecto (donde se encuentra el archivo WebApi.csproj), estas migraciones crearán la base de datos y las tablas para la API de .NET Core.
Ejecutar migraciones de EF Core
Ejecute el comando dotnet ef database update
desde la carpeta raíz del proyecto para ejecutar las migraciones de EF Core y crear la base de datos y las tablas en PostgreSQL.
Revise Postgres y ahora debería ver su base de datos con las tablas Users
y __EFMigrationsHistory
.
Reiniciar la API CRUD de .NET 6.0
Detenga y reinicie la API con el comando dotnet run
desde la carpeta raíz del proyecto, debería ver el mensaje Now listening on: http://localhost:4000
y la API ahora debería estar conectada a Postgres.
Suscríbete o Sígueme para actualizaciones
Suscríbete a mi canal de YouTube o sígueme en Twitter, Facebook o GitHub para recibir notificaciones cuando publique contenido nuevo.
- Suscríbete en YouTube en https://www.youtube.com/JasonWatmore
- Sígueme en Twitter en https://twitter.com/jason_watmore
- Sígueme en Facebook en https://www.facebook.com/JasonWatmoreBlog
- Sígueme en GitHub en https://github.com/cornflourblue
- Feed formats available: RSS, Atom, JSON
Aparte de la codificación...
Actualmente estoy intentando viajar por Australia en motocicleta con mi esposa Tina en un par de Royal Enfield Himalayan. Puedes seguir nuestras aventuras en YouTube, Instagram y Facebook.
- Suscríbete en YouTube en https://www.youtube.com/TinaAndJason
- Síguenos en Instagram en https://www.instagram.com/tinaandjason
- Síguenos en Facebook en https://www.facebook.com/TinaAndJasonVlog
¿Necesita Ayuda .NET?
Buscar fiverr para encontrar ayuda rápidamente de desarrolladores .NET experimentados.