Konversi Proyek Aplikasi Web Inti ASP.NET untuk menggunakan PostgreSQL dengan Entity Framework.
Ini memungkinkan pengembangan proyek inti ASP.NET menggunakan kode VS pada target MacOS atau Linux.
Proyek ini menggunakan .NET 7.0 Target Framework, ASP.NET Core Web Application MVC Project Scaffold dari Visual Studio 2022 (versi 17.4).

Pengaturan Proyek telah selesai di Repositori ini - Pastikan Pengaturan Lingkungan; Kemudian, lompat untuk menjalankan solusi.
Proyek ini membutuhkan PostgreSQL - Instruksi Instalasi disediakan di bawah ini.
Jika menggunakan kode Visual Studio, Anda perlu menghasilkan sertifikat pengembang inti ASP.NET dengan mengeluarkan perintah berikut dari terminal:
dotnet dev-certs https --clean
dotnet dev-certs https
Untuk perintah Command Line database ef , Anda harus menginstal Entity Framework Core Tools .NET CLI:
dotnet tool install --global dotnet-ef
Di bawah ini, instruksi dirujuk untuk menggunakan PostgreSQL dalam proyek inti ASP.NET.
Instal Paket Npgsql.EntityFrameworkCore.PostgreSQL NUGET di aplikasi web ASP.NET.
Untuk melakukan ini, Anda dapat menggunakan baris perintah dotnet dengan mengeksekusi:
$ dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 3.1.2
Atau, edit file .csproj proyek dan tambahkan baris berikut di grup item PackageReference :
< PackageReference Include = " Npgsql.EntityFrameworkCore.PostgreSQL " Version = " 3.1.2 " /> Konfigurasikan string koneksi di appsettings.json proyek, mengganti username , password , dan dbname dengan tepat:
"ConnectionStrings" : {
"DefaultConnection" : " User ID=username;Password=password;Server=localhost;Port=5432;Database=dbname;Integrated Security=true;Pooling=true; "
}, Inside Program.cs Ganti opsi UseSqlServer dengan UseNpgsql :
builder . Services . AddDbContext < ApplicationDbContext > ( options =>
options . UseNpgsql ( connectionString ) ) ; Sebelum solusi dapat dieksekusi, pastikan untuk menjalankan migrasi kerangka kerja entitas.
Migrasi awal mungkin gagal, karena Template Inti ASP.NET hadir dengan migrasi pra-generasi untuk SQL Server.
Saat mencoba menjalankan migrasi, Anda mungkin melihat kesalahan seperti:
Npgsql.postgresexception (0x80004005): 42704: ketik "nvarchar" tidak ada
System.NullReferenceException: Referensi Objek Tidak diatur ke instance suatu objek.
System.InvalidOperationException: Tidak ada pemetaan ke jenis relasional dapat ditemukan untuk properti 'microsoft.aspnetcore.identity.identityUser.twofactorenabled' dengan tipe clr 'bool'.
Hapus seluruh folder migrasi, dan meregenerasi migrasi inital baru.
Hasilkan Migrasi Baru Menggunakan Konsol Manajer Paket Visual Studio (dari Menu: Tools -> Nuget Package Manager -> Paket Manajer Konsol):
PM> Add-Migration
Atau, dari baris perintah melalui dotnet cli:
$ dotnet ef migrations add Initial
Jika alat migrasi dotnet tidak ada, ingatlah untuk menginstal alat menggunakan instruksi di atas dalam pengaturan lingkungan.
Jalankan Migrasi Menggunakan Konsol Manajer Paket Visual Studio (dari Menu: Tools -> Nuget Package Manager -> Paket Manajer Konsol):
PM> Update-Database
Atau, dari baris perintah melalui dotnet cli, jalankan perintah berikut di dalam direktori proyek, di mana file .csproj berada :
$ dotnet ef database update
Setelah menjalankan migrasi, database dibuat dan aplikasi web siap dijalankan.
Berikut adalah instruksi untuk mengatur server PostgreSQL di Mac menggunakan Homebrew.
Gunakan minuman untuk menginstal PostgreSQL, lalu luncurkan layanan:
$ brew install postgresql
$ brew services start postgresql
Buat pengguna menggunakan perintah createuser dari terminal, di mana username adalah nama pengguna baru yang Anda inginkan. Menggunakan argumen -P , Anda akan diminta untuk mengatur kata sandi.
$ createuser username -P
Buat database Anda menggunakan perintah createdb dari terminal, di mana dbname adalah nama database baru yang Anda inginkan.
$ createdb dbname
Pada saat ini, jalankan migrasi kerangka kerja entitas solusi (lihat di atas untuk instruksi).
Luncurkan terminal interaktif PostgreSQL dan sambungkan ke database.
$ psql dbname
Dari Terminal Antarmuka PostgreSQL, daftar tabel menggunakan perintah 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)
Jika izin tidak diatur dengan benar selama pembuatan database, perbaiki secara retroaktif dengan memberikan hak istimewa di mana dbname adalah nama database Anda dan username adalah pengguna yang Anda buat:
$ psql dbname
dbname=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO username;