Entity Framework - كيفية إنشاء Migration باستخدام الأمر Add-Migration
Entity Framework Core - كيفية إنشاء Migration باستخدام الأمر Add-Migration
🛠️ ما هو الأمر Add-Migration؟
الأمر Add-Migration هو أمر يستخدمه المطورون لإخبار Entity Framework Core أن يقوم بتتبع التغييرات التي حدثت على الـ Models (الكلاسات) ثم يقوم بإنشاء ملف Migration جديد يمثل هذه التغييرات.
بمعنى آخر: هذا الأمر يحول التغييرات البرمجية إلى تعليمات قابلة للتطبيق على قاعدة البيانات لاحقًا.
🧩 الصيغة الأساسية للأمر
Add-Migration MigrationName
- حيث MigrationName هو اسم تصفه فيه التغييرات التي قمت بها (مثلاً: InitialCreate أو AddDescriptionToProduct).
🖥️ أين يتم تنفيذ الأمر؟
- داخل Visual Studio ➔ افتح Package Manager Console.
- أو إذا كنت تستخدم Terminal ➔ أوامر dotnet ef عبر سطر الأوامر.
🔹 في Package Manager Console:
Add-Migration InitialCreate
🔹 أو عبر CLI (لو كنت تفضل التعامل مع terminal):
dotnet ef migrations add InitialCreate
🧠 ماذا يحدث بعد تنفيذ Add-Migration؟
- يتم إنشاء مجلد (عادةً اسمه
Migrations) داخل المشروع إن لم يكن موجودًا. - يتم إنشاء ملف كود يمثل التغييرات التي قمت بها (C# Code يحتوي على أوامر CreateTable، AlterTable، إلخ).
- يتم إنشاء ملف Snapshot يعكس حالة قاعدة البيانات بعد هذا التغيير.
✅ ولكن قاعدة البيانات نفسها لم تتغير بعد ➔ يجب تنفيذ الأمر Update-Database لاحقًا لتطبيق التغييرات فعليًا.
🔍 مثال عملي متكامل
لنفترض أنك أضفت الكلاس التالي:
public class Category
{
public int CategoryId { get; set; }
public string CategoryName { get; set; }
}
ثم نفذت الأمر التالي:
Add-Migration AddCategoryTable
🔹 النتيجة:
- إنشاء ملف Migration جديد باسم AddCategoryTable.
- داخل هذا الملف، تجد كود C# يشبه:
migrationBuilder.CreateTable(
name: "Categories",
columns: table => new
{
CategoryId = table.Column<int>(nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
CategoryName = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Categories", x => x.CategoryId);
});
ولكن حتى الآن ➔ لم يتم إنشاء الجدول فعليًا داخل قاعدة البيانات... إلا بعد تنفيذ Update-Database ✅
⚡ نصائح مهمة عند تنفيذ Add-Migration
- اختر أسماء Migration معبرة مثل: AddBirthDateToEmployee، أو UpdateProductSchema.
- تأكد أن مشروع API/Website هو المشروع الإفتراضي قبل تنفيذ الأمر.
- تحقق أن لديك الاتصال الصحيح بقاعدة البيانات (Connection String).
- لو واجهت أخطاء أثناء Add-Migration، تأكد أن مشروعك يترجم بنجاح (Build Successful).
تعليقات
إرسال تعليق