Convierta un proyecto de aplicación web ASP.NET Core para usar PostgreSQL con Entity Framework.
Esto permite el desarrollo de proyectos básicos ASP.NET utilizando el código VS en MacOS o Linux Targets.
Este proyecto utiliza .NET 7.0 Target Framework, ASP.NET Core Web Application MVC Project and andamio de Visual Studio 2022 (versión 17.4).

La configuración del proyecto ya se ha completado en este repositorio: asegurar la configuración del entorno; Luego, salta a ejecutar la solución.
Este proyecto requiere PostgreSQL: las instrucciones de instalación se proporcionan a continuación.
Si usa el código Visual Studio, deberá generar certificados de desarrollador Core ASP.NET emitiendo los siguientes comandos desde un terminal:
dotnet dev-certs https --clean
dotnet dev-certs https
Para los database ef de línea de comandos, deberá instalar Entity Framework Core Tools .NET CLI:
dotnet tool install --global dotnet-ef
A continuación, se hace referencia a instrucciones para usar PostgreSQL en un proyecto ASP.NET Core.
Instale el paquete Npgsql.EntityFrameworkCore.PostgreSQL nuget en la aplicación web ASP.NET.
Para hacer esto, puede usar la línea de comandos dotnet ejecutando:
$ dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 3.1.2
O edite el archivo .csproj del proyecto y agregue la siguiente línea en el grupo de elementos PackageReference :
< PackageReference Include = " Npgsql.EntityFrameworkCore.PostgreSQL " Version = " 3.1.2 " /> Configurar la cadena de conexión en AppSettings.json de Project, reemplazando el username , password y dbname adecuadamente:
"ConnectionStrings" : {
"DefaultConnection" : " User ID=username;Password=password;Server=localhost;Port=5432;Database=dbname;Integrated Security=true;Pooling=true; "
}, Inside Program.cs Reemplace las opciones UseSqlServer con UseNpgsql :
builder . Services . AddDbContext < ApplicationDbContext > ( options =>
options . UseNpgsql ( connectionString ) ) ; Antes de que se pueda ejecutar la solución, asegúrese de ejecutar migraciones de marco de entidad.
Las migraciones iniciales pueden fallar, debido a la plantilla de núcleo ASP.NET, vienen con una migración previa a la generación para SQL Server.
Al intentar ejecutar la migración, puede ver errores como:
Npgsql.postgresexception (0x80004005): 42704: tipo "nvarchar" no existe
System.NullReferenceException: Referencia de objeto no establecido en una instancia de un objeto.
System.InvalidOperationException: no se puede encontrar mapeo a un tipo relacional para la propiedad 'Microsoft.aspnetcore.identity.identityUser.twofactorEnabled' con el tipo CLR 'bool'.
Elimine toda la carpeta de migraciones y regenere nuevas migraciones inital.
Genere una nueva migración utilizando la consola de Administrador de paquetes de Visual Studio (desde el menú: Herramientas -> Nuget Package Manager -> Consola de Administrador de paquetes):
PM> Add-Migration
O, desde la línea de comando a través de Dotnet CLI:
$ dotnet ef migrations add Initial
Si no existen herramientas de migración de Dotnet, recuerde instalar las herramientas utilizando las instrucciones de arriba en la configuración del entorno.
Ejecute la migración utilizando la consola de Administrador de paquetes de Visual Studio (desde el menú: Herramientas -> Nuget Package Manager -> Consola de Administrador de paquetes):
PM> Update-Database
O, desde la línea de comando a través de Dotnet CLI, ejecute el siguiente comando dentro del directorio del proyecto, donde se encuentra el archivo .csproj :
$ dotnet ef database update
Después de ejecutar la migración, se crea la base de datos y la aplicación web está lista para ejecutarse.
Aquí hay instrucciones para configurar un servidor PostgreSQL en Mac usando HomeBrew.
Use Brew para instalar PostgreSQL, luego inicie el servicio:
$ brew install postgresql
$ brew services start postgresql
Cree un usuario que use el comando createuser desde un terminal, donde username es su nuevo nombre de usuario deseado. Usando el argumento -P , se le pedirá que configure una contraseña.
$ createuser username -P
Cree su base de datos utilizando el comando createdb desde un terminal, donde dbname es su nuevo nombre de base de datos deseado.
$ createdb dbname
En este momento, ejecute las migraciones de marco de entidad de la solución (ver arriba para obtener instrucciones).
Inicie el terminal interactivo PostgreSQL y conéctese a la base de datos.
$ psql dbname
Desde el terminal de la interfaz PostgreSQL, las tablas de lista utilizando el comando dt :
dbname=# dt
List of relations
Schema | Name | Type | Owner
--------+-----------------------+-------+--------------
public | AspNetRoleClaims | table | username
public | AspNetRoles | table | username
public | AspNetUserClaims | table | username
public | AspNetUserLogins | table | username
public | AspNetUserRoles | table | username
public | AspNetUserTokens | table | username
public | AspNetUsers | table | username
public | __EFMigrationsHistory | table | username
(8 rows)
Si los permisos no se configuraron correctamente durante la creación de la base de datos, se solucione retroactivamente otorgando privilegios donde dbname es el nombre de su base de datos y username es el usuario que creó:
$ psql dbname
dbname=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO username;