Entity Framework - العمل مع Migration History Table.
Entity Framework Core - العمل مع Migration History Table
🧠 ما هو Migration History Table؟
جدول __EFMigrationsHistory هو جدول خاص تقوم Entity Framework Core بإنشائه داخل قاعدة البيانات بشكل تلقائي. مهمة هذا الجدول:
- تسجيل كل Migration تم تنفيذها بالفعل على قاعدة البيانات.
- مساعدة EF Core في معرفة أي Migrations تم تنفيذها وأيها لم يتم بعد.
- تسهيل التراجع أو التقدم في Migrations حسب الحاجة.
📄 شكل جدول __EFMigrationsHistory
الجدول يحتوي عادة على عمودين رئيسيين:
- MigrationId: اسم الـ Migration المنفذة.
- ProductVersion: نسخة EF Core التي استخدمت أثناء إنشاء هذه Migration.
مثال على محتويات هذا الجدول:
+--------------------------------------+-------------------+
| MigrationId | ProductVersion |
+--------------------------------------+-------------------+
| 20240427093000_InitialCreate | 8.0.4 |
| 20240427101500_AddProductsTable | 8.0.4 |
| 20240427113000_AddCategoriesTable | 8.0.4 |
+--------------------------------------+-------------------+
🔗 ماذا يحدث أثناء تنفيذ Update-Database؟
عندما تنفذ Update-Database
:
- EF Core يقارن قائمة Migrations الموجودة في مشروعك مع السجلات داخل جدول __EFMigrationsHistory.
- يحدد Migrations الجديدة التي لم تنفذ بعد.
- ينفذ سكربتات SQL الخاصة بها.
- يضيف سجلات جديدة إلى __EFMigrationsHistory لكل Migration تم تنفيذها.
👨💻 متى تحتاج التحقق من جدول __EFMigrationsHistory؟
- عند مواجهة مشكلة أن بعض الجداول غير موجودة.
- عند محاولة التراجع أو التقدم إلى Migration معينة ولم تعمل كما هو متوقع.
- عند استكشاف أخطاء Migrations في بيئات الإنتاج أو الاختبار.
✅ يكفي تنفيذ استعلام SQL بسيط لرؤية حالة الجدول:
SELECT * FROM __EFMigrationsHistory
⚡ ملاحظات مهمة
- لا تعدل جدول __EFMigrationsHistory يدويًا إلا إذا كنت تعرف جيدًا ماذا تفعل (ممكن أن تسبب مشاكل تزامن خطيرة).
- يجب أن يتطابق ما هو موجود في جدول __EFMigrationsHistory مع ملفات Migrations الموجودة في مشروعك.
- يمكنك استخدام هذا الجدول لتحديد آخر نقطة تم الوصول إليها في تطوير قاعدة البيانات.
تعليقات
إرسال تعليق