Entity Framework - كيف تدير إصدارات قاعدة البيانات بين بيئات التطوير والإنتاج.

Entity Framework Core - كيف تدير إصدارات قاعدة البيانات بين بيئات التطوير والإنتاج


🧠 لماذا نحتاج لإدارة إصدارات قاعدة البيانات؟

في المشاريع الحقيقية عادةً يكون لديك أكثر من بيئة:

  • بيئة التطوير (Development Environment)
  • بيئة الاختبار (Staging Environment)
  • بيئة الإنتاج (Production Environment)
لكل بيئة قاعدة بياناتها الخاصة. ✅ لذلك تحتاج إلى طريقة منظمة لضمان أن جميع قواعد البيانات محدثة بنفس التغييرات وبنفس الترتيب.


🔗 كيف يتم إدارة الإصدارات بشكل صحيح؟

  • إنشاء Migrations محكمة: كل تغيير في الـ Models يجب أن يقابله Migration جديدة باسم واضح ومعبر.
  • تخزين Migrations مع الكود البرمجي: يجب حفظ ملفات Migrations ضمن النظام الخاص بإدارة الإصدارات مثل Git.
  • تطبيق Migrations بنفس الترتيب: كل بيئة تطبق Migrations بالتسلسل الصحيح لضمان تطابق الهياكل.
  • مراجعة السكربتات قبل تطبيقها على الإنتاج: لتفادي أخطاء كارثية مثل حذف أعمدة أو بيانات مهمة.

🛠️ خطوات إدارة Migrations بين البيئات

1. أثناء التطوير

- أنشئ Migration مع كل تعديل مهم. - تأكد أن Migration تعمل بشكل صحيح على قاعدة بيانات التطوير. - قم بعمل Commit للكود + ملف Migration إلى Git أو أي نظام تحكم بالإصدارات.


2. أثناء النشر إلى الاختبار (Staging)

- اسحب (Pull) الكود بما فيه ملفات الـ Migrations. - نفذ الأمر:


Update-Database

- تأكد أن قاعدة بيانات الاختبار أصبحت مطابقة لقاعدة بيانات التطوير.


3. أثناء النشر إلى الإنتاج (Production)

- لا تستخدم Update-Database مباشرة (خطر جدًا!).
- بدلاً من ذلك، قم بتوليد سكربت SQL باستخدام:


Script-Migration

🔹 هذا الأمر ينشئ لك ملف SQL بكل التغييرات المطلوبة. 🔹 يمكنك مراجعة السكربت، ثم تطبيقه يدويًا على قاعدة البيانات الإنتاجية مع فريق DBA أو فريق DevOps.


👨‍💻 مثال عملي لتوليد سكربت SQL من Migration


Script-Migration -From InitialCreate -To AddProductsTable

✅ هذا الأمر ينشئ سكربت SQL بالتغييرات بين Migration InitialCreate وAddProductsTable.


⚡ نصائح إضافية مهمة

  • استخدم الأمر Script-Migration دائمًا في بيئات الإنتاج بدلاً من Update-Database المباشر.
  • تحقق من ترتيب تنفيذ السكربتات إذا كان لديك أكثر من سكربت.
  • سجّل رقم كل Migration مطبقة داخل مستندات المشروع لضمان متابعة الإصدارات بدقة.

تعليقات

المشاركات الشائعة من هذه المدونة

C# - Arrays

Entity Framework - ما هو ORM؟ ونبذة عن Dapper وNHibernate

Entity Framework - مقدمة عن Entity Framework