Entity Framework - كيفية عمل Migrations يدوية عند وجود فريق عمل كبير.

Entity Framework Core - كيفية عمل Migrations يدوية عند وجود فريق عمل كبير


🧠 لماذا نحتاج لعمل Migrations يدوية مع فريق كبير؟

عندما يعمل أكثر من مطور على نفس قاعدة البيانات في مشروع واحد، قد تحدث مشاكل مثل:

  • تضارب بين Migrations.
  • فقدان تزامن بين القاعدة والكود.
  • تنفيذ تغييرات عشوائية تسبب أعطال في الإنتاج.
✅ الحل هو: إدارة Migrations بطريقة منظمة (يدويًا أو شبه أوتوماتيكية) مع الاتفاق على إجراءات عمل واضحة بين الفريق.


🔗 الخطوات المثالية لإدارة Migrations يدويًا مع الفرق

1. تحديد مسؤول Migrations

- حدد شخصًا أو فريقًا مسؤولًا عن إنشاء ومراجعة Migrations فقط. - باقي الفريق يضيف التعديلات على الـ Models، لكن لا ينفذ Migrations بدون مراجعة.


2. إنشاء Migration مركزية واحدة لكل مجموعة تغييرات

- اجمع التعديلات التي تمت على الـ Models. - أنشئ Migration واحدة شاملة لكل التعديلات في مرحلة معينة. - سمّها باسم معبر (مثلاً: AddUserManagementFeatures).


3. توليد سكربت SQL ومراجعته قبل التنفيذ

- بعد إنشاء Migration، استخدم:


Script-Migration

- راجع السكربت الناتج بعناية قبل تطبيقه خاصة على قواعد البيانات المهمة (اختبار/إنتاج).


4. توثيق كل Migration

- أنشئ ملف توثيق داخلي (Documentation) لكل مجموعة تغييرات. - اذكر فيه:

  • اسم Migration.
  • التاريخ.
  • ما الذي تم تعديله بالضبط.


5. خطوات العمل الجماعي النموذجية

  • كل مبرمج يعدل الـ Models فقط بدون إنشاء Migration بنفسه.
  • يرفع Pull Request بالكود المعدل.
  • مسؤول Migrations يراجع ويجمع التعديلات.
  • ينشئ Migration رسمية واحدة موثقة ومُراجعة.

👨‍💻 مثال عملي على طريقة العمل

- أحمد أضاف حقل BirthDate لجدول Users.
- سارة أضافت جدول جديد باسم Permissions.

- كلاهما يرفع الكود فقط بدون أي Migration.
- مسؤول Migrations يجمع التغييرات ثم ينفذ:


Add-Migration AddUserAndPermissionsChanges

- ثم يولد سكربت SQL ويراجعه قبل التنفيذ.


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

  • لا تنشئ Migrations عشوائية في كل تعديل بسيط، اجمع التعديلات في Migrations موحدة.
  • دائمًا استخدم أسماء Migration معبرة ودقيقة.
  • يجب أن تكون جميع البيئات (تطوير/اختبار/إنتاج) محدثة بنفس نسخة Migration لتفادي المشاكل.

تعليقات

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

C# - Arrays

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

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