Entity Framework - لماذا نحتاج لضبط الكيانات؟

8.1 Entity Framework - لماذا نحتاج لضبط الكيانات؟

في Entity Framework Core، عندما نقوم بإنشاء الكيانات (Entities)، فهي تمثل الجداول (Tables) في قاعدة البيانات. ولكن بمجرد تعريف الكيانات باستخدام الخصائص (Properties)، لا يكون كل شيء مكتملًا أو مضبوطًا بشكل دقيق. هنا تأتي أهمية ضبط الكيانات (Entity Configuration) لضمان أن قاعدة البيانات تعكس النماذج (Models) كما نريد بالضبط.


🔹 ما معنى ضبط الكيانات؟

ضبط الكيان يعني تحديد تفاصيل إضافية حول كيفية تخزين الكيان في قاعدة البيانات. هذا يشمل تحديد:

  • نوع البيانات لكل خاصية (Property).
  • تعيين المفاتيح الأساسية (Primary Keys).
  • تعريف القيود (Constraints) مثل الطول الأقصى للسلاسل النصية (MaxLength).
  • تحديد العلاقات بين الكيانات (Relationships) مثل One-to-Many أو Many-to-Many.
  • وضع خصائص مطلوبة (Required) أو افتراضية (Default Values).

🔹 لماذا نحتاج لضبط الكيانات بدقة؟

  • لضمان سلامة البيانات: ضبط القيم المطلوبة، وأنواع البيانات، يمنع إدخال بيانات خاطئة أو غير مكتملة.
  • لتحسين الأداء: عندما نحدد الأطوال الدقيقة للحقول، ونعرف العلاقات الصحيحة، فإن ذلك يحسن أداء الاستعلامات.
  • لتوضيح النموذج: من خلال ضبط الكيانات بدقة يصبح الكود أوضح للآخرين ويعبر عن منطق العمل بشكل أدق.
  • للتوافق مع متطلبات الأعمال: بعض التطبيقات تحتاج لأنواع بيانات أو قيود معينة يجب تطبيقها لضمان العمل بشكل صحيح.

🔹 أمثلة عملية على ضبط الكيانات

مثال على ضبط خصائص كيان Product:


public class Product
{
    public int Id { get; set; }

    [Required]
    [MaxLength(100)]
    public string Name { get; set; }

    [Precision(18, 2)]
    public decimal Price { get; set; }

    public int CategoryId { get; set; }
    public Category Category { get; set; }
}

في هذا المثال:

  • [Required] يجعل الحقل Name إلزاميًا.
  • [MaxLength(100)] يحدد أن الطول الأقصى لاسم المنتج 100 حرف.
  • [Precision(18, 2)] يحدد الدقة لعامل السعر Price.
  • العلاقة مع الكيان الآخر Category تم تحديدها أيضًا.

🔹 وسائل ضبط الكيانات

هناك طريقتان لضبط الكيانات في EF Core:

  1. Data Annotations: مثل [Required], [MaxLength], [Key]... إلخ (مباشرة فوق الخصائص في الكود).
  2. Fluent API: ضبط الكيانات داخل الدالة OnModelCreating في DbContext بطريقة أكثر مرونة وتحكمًا.

مثال باستخدام Fluent API:


protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Product>(entity =>
    {
        entity.Property(p => p.Name)
              .IsRequired()
              .HasMaxLength(100);

        entity.Property(p => p.Price)
              .HasPrecision(18, 2);
    });
}

🔹 متى نستخدم Data Annotations ومتى نستخدم Fluent API؟

  • Data Annotations: عندما تكون الضبطيات بسيطة ومحدودة ومباشرة فوق الخصائص.
  • Fluent API: عندما تحتاج لضبط أكثر تعقيدًا أو علاقات معقدة أو عندما لا ترغب في تعديل الكيانات مباشرة (خصوصًا لو الكيانات من مكتبات خارجية).

🔹 الخلاصة

ضبط الكيانات هو خطوة أساسية لبناء قاعدة بيانات قوية ومتينة باستخدام Entity Framework Core. من خلال تحديد خصائص الكيانات بشكل دقيق، يمكنك ضمان جودة البيانات، تحسين الأداء، وتسهيل الصيانة المستقبلية.

تعليقات

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

HTML - Text Formatting تنسيقات النص

1.1 SQL Introduction

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