قم بتحويل مشروع تطبيق الويب ASP.NET Core لاستخدام PostgreSQL مع إطار الكيان.
يتيح ذلك تطوير مشاريع ASP.NET الأساسية باستخدام الكود على أهداف MacOS أو Linux.
يستخدم هذا المشروع .NET 7.0 Framework ، ASP.NET Core Web Application MVC SCAFFOLD من Visual Studio 2022 (الإصدار 17.4).

تم الانتهاء من إعداد المشروع بالفعل في هذا المستودع - ضمان إعداد البيئة ؛ ثم ، القفز إلى تشغيل الحل.
يتطلب هذا المشروع postgresql - يتم توفير تعليمات التثبيت أدناه.
إذا كنت تستخدم Visual Studio Code ، فستحتاج إلى إنشاء شهادات مطور ASP.NET Core عن طريق إصدار الأوامر التالية من محطة:
dotnet dev-certs https --clean
dotnet dev-certs https
بالنسبة database ef الأوامر ، ستحتاج إلى تثبيت أدوات Core Core Entity Framework .NET CLI:
dotnet tool install --global dotnet-ef
أدناه ، تتم الإشارة إلى التعليمات لاستخدام postgreSQL في مشروع ASP.NET الأساسي.
قم بتثبيت Npgsql.EntityFrameworkCore.PostgreSQL nuget في تطبيق ASP.NET على الويب.
للقيام بذلك ، يمكنك استخدام سطر أوامر dotnet عن طريق التنفيذ:
$ dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 3.1.2
أو ، قم بتحرير ملف .csproj للمشروع وأضف السطر التالي في مجموعة عنصر PackageReference :
< PackageReference Include = " Npgsql.EntityFrameworkCore.PostgreSQL " Version = " 3.1.2 " /> قم بتكوين سلسلة الاتصال في Appsettings.json الخاصة بالمشروع ، واستبدال username password و dbname بشكل مناسب:
"ConnectionStrings" : {
"DefaultConnection" : " User ID=username;Password=password;Server=localhost;Port=5432;Database=dbname;Integrated Security=true;Pooling=true; "
}, داخل UseSqlServer UseNpgsql
builder . Services . AddDbContext < ApplicationDbContext > ( options =>
options . UseNpgsql ( connectionString ) ) ; قبل أن يتم تنفيذ الحل ، تأكد من تشغيل هجرات إطار الكيان.
قد تفشل الترحيل الأولية ، بسبب قالب ASP.NET الأساسي مع ترحيل ما قبل الجيل لخادم SQL.
عند محاولة تشغيل الترحيل ، قد ترى أخطاء مثل:
NPGSQL.Postgreesexception (0x80004005): 42704: النوع "nvarchar" غير موجود
System.NullReferenceException: لم يتم تعيين مرجع الكائن على مثيل لكائن.
System.InvalidOperationException: لا يمكن العثور على رسم خرائط لنوع علائقي للممتلكات 'microsoft.aspnetcore.identity.identityuser.twofactorenabled' مع نوع CLR 'Bool'.
حذف مجلد الهجرات بأكمله ، وتجديد الهجرات الواقعة الجديدة.
قم بإنشاء ترحيل جديد باستخدام Visual Studio Package Manager Console (من القائمة: أدوات -> Nuget Package Manager -> وحدة تحكم Manager):
PM> Add-Migration
أو من سطر الأوامر عبر dotnet cli:
$ dotnet ef migrations add Initial
إذا لم تكن أدوات ترحيل DOTNET موجودة ، تذكر تثبيت الأدوات باستخدام التعليمات أعلاه في إعداد البيئة.
قم بتنفيذ الترحيل باستخدام إما Visual Studio Package Manager Console (من القائمة: أدوات -> Nuget Package Manager -> وحدة تحكم Manager):
PM> Update-Database
أو ، من سطر الأوامر عبر dotnet CLI ، قم بتنفيذ الأمر التالي داخل دليل المشروع ، حيث يوجد ملف .csproj :
$ dotnet ef database update
بعد تشغيل الترحيل ، يتم إنشاء قاعدة البيانات ويكون تطبيق الويب جاهزًا لتشغيله.
فيما يلي تعليمات لإعداد خادم postgresql على Mac باستخدام Homebrew.
استخدم Brew لتثبيت PostgreSQL ، ثم قم بتشغيل الخدمة:
$ brew install postgresql
$ brew services start postgresql
قم بإنشاء مستخدم باستخدام الأمر createuser من محطة ، حيث يكون username هو اسم المستخدم الجديد المطلوب. باستخدام وسيطة -P ، سيُطلب منك إعداد كلمة مرور.
$ createuser username -P
قم بإنشاء قاعدة البيانات الخاصة بك باستخدام الأمر createdb من محطة ، حيث يكون dbname هو اسم قاعدة البيانات الجديد المطلوب.
$ createdb dbname
في هذا الوقت ، قم بتشغيل هجرات إطار كيان الحل (انظر أعلاه للحصول على التعليمات).
قم بتشغيل محطة PostgreSQL التفاعلية واتصل بقاعدة البيانات.
$ psql dbname
من محطة واجهة postgresql ، قم بإدراج الجداول باستخدام الأمر 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)
إذا لم يتم إعداد الأذونات بشكل صحيح أثناء إنشاء قاعدة البيانات ، فإن الإصلاح بأثر رجعي عن طريق منح الامتيازات حيث يكون dbname اسم قاعدة البيانات الخاص بك واسم username هو المستخدم الذي أنشأته:
$ psql dbname
dbname=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO username;