Entity Framework - التعامل مع Migrations الحساسة (مثل حذف أعمدة أو تغيير أسماء أعمدة).
Entity Framework Core - التعامل مع Migrations الحساسة (مثل حذف أعمدة أو تغيير أسماء أعمدة)
🧠 ما المقصود بالـ Migrations الحساسة؟
Migrations الحساسة تعني التغييرات التي قد تسبب فقدان بيانات أو تعطل النظام إذا لم تتم بعناية، مثل:
- حذف أعمدة (DROP COLUMN).
- تغيير أسماء أعمدة (RENAME COLUMN).
- حذف جداول كاملة.
- تغيير أنواع بيانات الحقول بطريقة غير متوافقة.
🔗 أهم النصائح للتعامل مع Migrations الحساسة
1. لا تحذف الأعمدة مباشرة
- بدلاً من حذف العمود فجأة، ابدأ بوضعه كـ Deprecated
لفترة.
- أخبر فريق العمل أن هذا العمود سيتم حذفه لاحقًا.
2. خذ نسخة احتياطية دائمًا
- قبل أي عملية حذف أو تعديل على قاعدة الإنتاج، يجب أخذ Backup كامل.
3. استخدم سكربتات SQL مخصصة بدل الاعتماد الكامل على EF Core
- عند حذف أعمدة أو إعادة تسميتها، من الأفضل كتابة سكربت SQL مخصص يدويًا بدلاً من الاعتماد فقط على السكربتات التلقائية.
4. لا تغير اسم العمود مباشرة ➔ استخدم خطوات انتقالية
لو أردت تغيير اسم عمود، اتبع الخطوات التالية:
- أضف العمود الجديد بالاسم الجديد.
- انسخ البيانات من العمود القديم إلى العمود الجديد عبر سكربت.
- بعد فترة وبعد التأكد من أن النظام كله يعمل بالعمود الجديد، قم بحذف العمود القديم.
👨💻 مثال عملي على تغيير اسم عمود
السيناريو:
- لدينا جدول Users به عمود BirthDay
.
- نريد تغييره إلى BirthDate
دون فقدان البيانات.
خطوات التنفيذ:
-- 1. إضافة العمود الجديد
ALTER TABLE Users ADD BirthDate DATE;
-- 2. نسخ البيانات
UPDATE Users SET BirthDate = BirthDay;
-- 3. اختبار النظام والتأكد من عمله مع BirthDate.
-- 4. حذف العمود القديم
ALTER TABLE Users DROP COLUMN BirthDay;
✅ بهذه الطريقة تضمن نقل البيانات بأمان بدون فقدان أو مشاكل.
⚡ ملاحظات ذهبية إضافية
- عند حذف أو تعديل جداول كبيرة، راقب أداء قاعدة البيانات وتوقيت تنفيذ العمليات.
- سجل جميع التعديلات التي تجريها في مستند تغيير رسمي (Change Log).
- لا تنفذ التغييرات الحساسة إلا خارج أوقات الذروة التشغيلية للنظام.
تعليقات
إرسال تعليق