Entity Framework - Data Annotation كيف تتفادى الأخطاء المعروفة؟
8.9 Entity Framework - كيف تتفادى الأخطاء المعروفة عند استخدام Data Annotations؟
استخدام Data Annotations في Entity Framework Core طريقة قوية لضبط الكيانات، لكنها قد تؤدي إلى بعض الأخطاء الشائعة إذا لم ننتبه لبعض التفاصيل. في هذا الدرس سنعرض أهم الأخطاء التي قد تقع فيها، وكيفية تجنبها بشكل احترافي.
🔹 1️⃣ نسيان تعيين المفتاح الأساسي [Key]
إذا لم تحدد خاصية كمفتاح أساسي، قد يرفض EF Core إنشاء الجدول أو يُنشئ الجدول بدون مفتاح أساسي مما يسبب مشاكل في العمليات الأساسية مثل Update وDelete.
// ✅ تأكد من وجود [Key]
public class Product
{
[Key]
public int Id { get; set; }
}
🔹 2️⃣ استخدام [Required] على أنواع قيمة (Value Types)
لا حاجة لاستخدام [Required] مع أنواع القيمة مثل int أو decimal، لأنها بطبيعتها لا تقبل القيمة Null. الاستخدام الصحيح يكون فقط مع أنواع المرجع (Reference Types) مثل string أو كائنات أخرى.
// ❌ خطأ: لا داعي لوضع [Required] على int
[Required]
public int Quantity { get; set; }
// ✅ صحيح: ضع [Required] على string
[Required]
public string Name { get; set; }
🔹 3️⃣ عدم ضبط طول النصوص [MaxLength] أو [StringLength]
عند عدم تحديد الطول الأقصى للنصوص، قد يتم إنشاء أعمدة من نوع nvarchar(max) مما يؤثر سلبًا على أداء قاعدة البيانات.
// ✅ تحديد الطول يحسن الأداء
[MaxLength(200)]
public string Description { get; set; }
🔹 4️⃣ تجاهل تحديث Migrations عند تعديل Data Annotations
أي تغيير تقوم به على Data Annotations يتطلب إنشاء Migration جديدة حتى تنعكس التعديلات على قاعدة البيانات.
// بعد أي تعديل:
Add-Migration UpdatedAnnotations
Update-Database
دون ذلك، سيظل التصميم القديم للقاعدة دون تطبيق التعديلات الجديدة.
🔹 5️⃣ سوء استخدام [ForeignKey] أو [InverseProperty]
في حالة العلاقات المتعددة بين كيانين، تجاهل استخدام [ForeignKey] أو [InverseProperty] قد يؤدي إلى أخطاء في بناء العلاقات أو إنشاء أعمدة إضافية غير مرغوبة.
// ✅ تحديد المفتاح الأجنبي بشكل صريح
[ForeignKey("CustomerId")]
public Customer Customer { get; set; }
🔹 نصائح إضافية لتفادي الأخطاء
- استخدم [NotMapped] للخصائص الحسابية أو المؤقتة التي لا تحتاج لحفظها.
- اختبر الكود جيدًا قبل إنشاء Migrations كبيرة.
- راجع دائمًا أسماء الأعمدة والجداول لو استخدمت [Table] و[Column].
- استخدم [Timestamp] أو [ConcurrencyCheck] بحذر عند العمل مع أكثر من مستخدم للوصول لنفس السجلات.
🔹 الخلاصة
بتفادي الأخطاء الشائعة في استخدام Data Annotations يمكنك ضمان بناء قاعدة بيانات نظيفة، مرنة، وآمنة، مع تقليل مشاكل الأداء أو المشاكل عند النشر.
تعليقات
إرسال تعليق