Convertir un projet d'application Web ASP.NET Core pour utiliser PostgreSQL avec Entity Framework.
Cela permet le développement de projets Core ASP.NET à l'aide de Code vs sur les cibles MacOS ou Linux.
Ce projet utilise le framework cible .NET 7.0, ASP.NET Core Web Application MVC Project Scaffold à Visual Studio 2022 (version 17.4).

La configuration du projet est déjà terminée dans ce référentiel - Assurer la configuration de l'environnement; Ensuite, passez à l'exécution de la solution.
Ce projet nécessite PostgreSQL - les instructions d'installation sont fournies ci-dessous.
Si vous utilisez Visual Studio Code, vous devrez générer des certificats de développeur ASP.NET Core en publiant les commandes suivantes à partir d'un terminal:
dotnet dev-certs https --clean
dotnet dev-certs https
Pour les commandes database ef de ligne de commande, vous devrez installer l'entité Framework Core Tools .NET CLI:
dotnet tool install --global dotnet-ef
Ci-dessous, les instructions sont référencées pour utiliser PostgreSQL dans un projet ASP.NET Core.
Installez le package Npgsql.EntityFrameworkCore.PostgreSQL NuGet dans l'application Web ASP.NET.
Pour ce faire, vous pouvez utiliser la ligne de commande dotnet en exécutant:
$ dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 3.1.2
Ou, modifiez le fichier .csproj du projet et ajoutez la ligne suivante dans le groupe d'élément PackageReference :
< PackageReference Include = " Npgsql.EntityFrameworkCore.PostgreSQL " Version = " 3.1.2 " /> Configurer la chaîne de connexion dans AppSettings.json de Project, en remplaçant le username , password et dbname :
"ConnectionStrings" : {
"DefaultConnection" : " User ID=username;Password=password;Server=localhost;Port=5432;Database=dbname;Integrated Security=true;Pooling=true; "
}, Inside Program.cs Remplacez les options UseSqlServer par UseNpgsql :
builder . Services . AddDbContext < ApplicationDbContext > ( options =>
options . UseNpgsql ( connectionString ) ) ; Avant que la solution ne puisse être exécutée, assurez-vous d'exécuter des migrations du cadre d'entité.
Les migrations initiales peuvent échouer, en raison du modèle de noyau ASP.NET, une migration de pré-génération pour SQL Server.
Lorsque vous essayez d'exécuter la migration, vous pourriez voir des erreurs telles que:
Npgsql.postgresexception (0x80004005): 42704: le type "nvarchar" n'existe pas
System.NullReferenceException: Référence d'objet non définie sur une instance d'un objet.
System.InvalidOperationException: Aucun mappage à un type relationnel ne peut être trouvé pour la propriété «Microsoft.Aspnetcore.Identity.IdentityUser.twofactoRenabled» avec le type CLR «Bool».
Supprimez l'intégralité du dossier Migrations et régénérez de nouvelles migrations initales.
Générer une nouvelle migration à l'aide de la console Visual Studio Package Manager (à partir du menu: outils -> Nuget Package Manager -> Console Manager de package):
PM> Add-Migration
Ou, à partir de la ligne de commande via dotnet CLI:
$ dotnet ef migrations add Initial
Si les outils de migration DOTNET n'existent pas, n'oubliez pas d'installer les outils en utilisant l'instruction ci-dessus dans la configuration de l'environnement.
Exécutez la migration à l'aide de la console Visual Studio Package Manager (depuis Menu: Tools -> Nuget Package Manager -> Console Manager de package):
PM> Update-Database
Ou, à partir de la ligne de commande via Dotnet CLI, exécutez la commande suivante dans le répertoire du projet, où se trouve le fichier .csproj :
$ dotnet ef database update
Après l'exécution de la migration, la base de données est créée et l'application Web est prête à être exécutée.
Voici des instructions pour configurer un serveur PostgreSQL sur Mac à l'aide de Homebrew.
Utilisez Brew pour installer PostgreSQL, puis lancez le service:
$ brew install postgresql
$ brew services start postgresql
Créez un utilisateur utilisant la commande createuser à partir d'un terminal, où username est le nouveau nom d'utilisateur souhaité. En utilisant l'argument -P , vous serez invité à configurer un mot de passe.
$ createuser username -P
Créez votre base de données à l'aide de la commande createdb à partir d'un terminal, où dbname est le nouveau nom de base de données souhaité.
$ createdb dbname
Pour le moment, exécutez les migrations du cadre d'entité de la solution (voir ci-dessus pour les instructions).
Lancez PostgreSQL Interactive Terminal et connectez-vous à la base de données.
$ psql dbname
Dans le borne d'interface PostgreSQL, liste des tables à l'aide de la commande 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 les autorisations n'étaient pas configurées correctement lors de la création de la base de données, réparez rétroactivement en accordant des privilèges où dbname est votre nom de base de données et username est l'utilisateur que vous avez créé:
$ psql dbname
dbname=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO username;