Converta um projeto de aplicativo Web ASP.NET Core para usar o PostGresQL com a Entidade Framework.
Isso permite o desenvolvimento de projetos principais do ASP.NET usando o código VS em alvos macOS ou Linux.
Este projeto usa o .NET 7.0 Target Framework, ASP.NET CORE Web Application MVC Project Scaffold do Visual Studio 2022 (versão 17.4).

A configuração do projeto já foi concluída neste repositório - assegure a configuração do ambiente; Em seguida, pule para a execução da solução.
Este projeto requer que as instruções de instalação do PostgreSQL - sejam fornecidas abaixo.
Se estiver usando o código do Visual Studio, você precisará gerar certificados de desenvolvedor do ASP.NET Core emitindo os seguintes comandos de um terminal:
dotnet dev-certs https --clean
dotnet dev-certs https
Para os comandos database ef da linha de comando, você precisará instalar o Entity Framework Core Tools .NET CLI:
dotnet tool install --global dotnet-ef
Abaixo, as instruções são referenciadas ao uso do PostgreSQL em um projeto Core ASP.NET.
Instale o pacote Npgsql.EntityFrameworkCore.PostgreSQL NUGET no aplicativo Web ASP.NET.
Para fazer isso, você pode usar a linha de comando dotnet executando:
$ dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 3.1.2
Ou edite o arquivo .csproj do projeto e adicione a seguinte linha no grupo de itens PackageReference :
< PackageReference Include = " Npgsql.EntityFrameworkCore.PostgreSQL " Version = " 3.1.2 " /> Configure a string de conexão no AppSsettings.json do projeto, substituindo o username , password e dbname apropriadamente:
"ConnectionStrings" : {
"DefaultConnection" : " User ID=username;Password=password;Server=localhost;Port=5432;Database=dbname;Integrated Security=true;Pooling=true; "
}, Inside Program.cs substitua as opções de UseSqlServer pelo UseNpgsql :
builder . Services . AddDbContext < ApplicationDbContext > ( options =>
options . UseNpgsql ( connectionString ) ) ; Antes que a solução possa ser executada, certifique -se de executar as migrações da estrutura da entidade.
As migrações iniciais podem falhar, devido ao modelo de núcleo do ASP.NET, vem com uma migração de pré-geração para o SQL Server.
Ao tentar executar a migração, você pode ver erros como:
NPGSQL.PostGresexception (0x80004005): 42704: Tipo "Nvarchar" não existe
System.NullReferenceException: Referência de objeto não definida como uma instância de um objeto.
System.InValidoPoperationException: Nenhum mapeamento para um tipo relacional pode ser encontrado para a propriedade 'Microsoft.aspnetCore.Identity.IdentityUser.TwofActorenabled' com o tipo CLR 'bool'.
Exclua toda a pasta de migrações e regenere novas migrações inital.
Gere uma nova migração usando o console do Visual Studio Package Manager (do menu: Ferramentas -> Nuget Package Manager -> Console do gerenciador de pacotes):
PM> Add-Migration
Ou, na linha de comando via Dotnet CLI:
$ dotnet ef migrations add Initial
Se as ferramentas de migração do DOTNET não existirem, lembre -se de instalar as ferramentas usando as instruções acima na configuração do ambiente.
Execute a migração usando o console do Visual Studio Package Manager (do menu: Ferramentas -> Nuget Package Manager -> Console do gerenciador de pacotes):
PM> Update-Database
Ou, na linha de comando via Dotnet CLI, execute o seguinte comando dentro do diretório do projeto, onde o arquivo .csproj está localizado :
$ dotnet ef database update
Depois de executar a migração, o banco de dados é criado e o aplicativo da Web está pronto para ser executado.
Aqui estão as instruções para configurar um servidor PostGresql no Mac usando o HomeBrew.
Use Brew para instalar o PostgreSQL e inicie o serviço:
$ brew install postgresql
$ brew services start postgresql
Crie um usuário usando o comando createuser a partir de um terminal, onde username é o novo nome de usuário desejado. Usando o argumento -P , você será solicitado a configurar uma senha.
$ createuser username -P
Crie seu banco de dados usando o comando createdb a partir de um terminal, onde dbname é o novo nome desejado do banco de dados.
$ createdb dbname
Neste momento, execute as migrações da estrutura da entidade da solução (veja acima para obter instruções).
Inicie o terminal interativo PostGresql e conecte -se ao banco de dados.
$ psql dbname
No terminal da interface PostGresql, listar tabelas usando o 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)
Se as permissões não foram configuradas corretamente durante a criação do banco de dados, corrige retroativamente, concedendo privilégios onde dbname é o nome do seu banco de dados e username é o usuário que você criou:
$ psql dbname
dbname=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO username;