Konvertieren Sie ein ASP.NET Core -Webantragsprojekt, um PostgreSQL mit Entity Framework zu verwenden.
Dies ermöglicht die Entwicklung von ASP.NET -Kernprojekten mithilfe von VS -Code auf MacOS- oder Linux -Zielen.
In diesem Projekt wird .NET 7.0 Target Framework, ASP.NET Core Web Application MVC -Projektgerüst aus Visual Studio 2022 (Version 17.4) verwendet.

Die Projekteinrichtung wurde bereits in diesem Repository abgeschlossen. Springen Sie dann zum Ausführen der Lösung.
Dieses Projekt erfordert PostgreSQL - Installationsanweisungen finden Sie unten.
Wenn Sie Visual Studio Code verwenden, müssen Sie ASP.NET -Kernentwicklerzertifikate generieren, indem Sie die folgenden Befehle aus einem Terminal ausgeben:
dotnet dev-certs https --clean
dotnet dev-certs https
Für database ef müssen Sie Entity Framework Core Tools .NET CLI installieren:
dotnet tool install --global dotnet-ef
Im Folgenden werden Anweisungen in einem ASP.NET -Kernprojekt verwendet.
Installieren Sie das Npgsql.EntityFrameworkCore.PostgreSQL -Nuget -Paket in der Webanwendung von ASP.NET.
Dazu können Sie die Befehlszeile dotnet verwenden, indem Sie ausführen:
$ dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 3.1.2
Oder bearbeiten Sie die .csproj -Datei des Projekts und fügen Sie die folgende Zeile in der PackageReference -Elementgruppe hinzu:
< PackageReference Include = " Npgsql.EntityFrameworkCore.PostgreSQL " Version = " 3.1.2 " /> Konfigurieren Sie die Verbindungszeichenfolge in den Projekten AppStings.json, ersetzen Sie den username , password und dbname entsprechend:
"ConnectionStrings" : {
"DefaultConnection" : " User ID=username;Password=password;Server=localhost;Port=5432;Database=dbname;Integrated Security=true;Pooling=true; "
}, Im Inside Program.cs ersetzen Sie die UseSqlServer -Optionen durch UseNpgsql :
builder . Services . AddDbContext < ApplicationDbContext > ( options =>
options . UseNpgsql ( connectionString ) ) ; Bevor die Lösung ausgeführt werden kann, stellen Sie unbedingt Entity Framework -Migrationen aus.
Erste Migrationen können fehlschlagen, da die ASP.NET-Kernvorlage eine Migration vor der Generation für SQL Server ausgibt.
Beim Versuch, die Migration auszuführen, sehen Sie möglicherweise Fehler wie:
Npgsql.postgresexception (0x80004005): 42704: Typ "nvarchar" existiert nicht
System.NullReferencexception: Objektreferenz nicht auf eine Instanz eines Objekts festgelegt.
System.invalidoperationException: Es finden Sie keine Zuordnung zu einem relationalen Typ für Eigenschaften 'microsoft.aspnetcore.ididentity.ididentityUser.twofactorenabled' mit dem CLR -Typ 'Bool'.
Löschen Sie den gesamten Migrationsordner und regenerieren Sie neue Initalmigrationen.
Generieren Sie eine neue Migration mit Visual Studio Package Manager -Konsole (aus Menü: Tools -> Nuget Package Manager -> Paket Manager -Konsole):
PM> Add-Migration
Oder aus der Befehlszeile über Dotnet CLI:
$ dotnet ef migrations add Initial
Wenn keine DOTNE -Migrationstools vorhanden sind, denken Sie daran, die Tools mithilfe der obigen Anweisung im Umgebungsaufbau zu installieren.
Führen Sie die Migration mit entweder Visual Studio Package Manager -Konsole aus (aus Menü: Tools -> Nuget Package Manager -> Package Manager -Konsole):
PM> Update-Database
Oder aus der Befehlszeile über DotNet CLI führen Sie den folgenden Befehl im Projektverzeichnis aus, in dem sich die .csproj -Datei befindet :
$ dotnet ef database update
Nach dem Ausführen der Migration wird die Datenbank erstellt und die Webanwendung kann ausgeführt werden.
Hier finden Sie Anweisungen zum Einrichten eines PostgreSQL -Servers auf dem Mac mit Homebrew.
Verwenden Sie Brew, um Postgresql zu installieren und dann den Dienst zu starten:
$ brew install postgresql
$ brew services start postgresql
Erstellen Sie einen Benutzer mit dem Befehl createuser von einem Terminal, in dem username Ihr gewünschter neuer Benutzername ist. Mit dem Argument -P werden Sie aufgefordert, ein Passwort einzurichten.
$ createuser username -P
Erstellen Sie Ihre Datenbank mit dem Befehl createdb aus einem Terminal, in dem dbname Ihr gewünschter neuer Datenbankname ist.
$ createdb dbname
Führen Sie zu diesem Zeitpunkt die Entitäts -Framework -Migrationen der Lösung aus (siehe oben für Anweisungen).
Starten Sie PostgreSQL Interactive Terminal und stellen Sie eine Verbindung zur Datenbank her.
$ psql dbname
Listen Sie aus dem PostgreSQL -Schnittstellen -Terminal Tabellen mit dem Befehl 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)
Wenn die Berechtigungen während der Erstellung der Datenbank nicht ordnungsgemäß eingerichtet wurden, beheben Sie rückwirkend durch Gewährung von Berechtigungen, bei denen dbname Ihr Datenbankname und username der von Ihnen erstellte Benutzer ist:
$ psql dbname
dbname=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO username;