Entity Framework - Fluent API ما هو؟

9.1 Entity Framework - ما هو Fluent API؟

عند العمل مع Entity Framework Core، نحتاج أحيانًا إلى ضبط الكيانات (Entities) بطريقة أكثر تفصيلًا ومرونة مما توفره Data Annotations. هنا يأتي دور Fluent API، وهي طريقة متقدمة لضبط كل تفاصيل بناء قاعدة البيانات باستخدام أسلوب برمجي (برمجة متسلسلة - Fluent Style) داخل كلاس الـ DbContext.


🔹 تعريف Fluent API

Fluent API هي مجموعة من الدوال البرمجية التي يتم استخدامها داخل دالة OnModelCreating في كلاس DbContext لضبط خصائص الكيانات والجداول والعلاقات بدقة متناهية.

بدلًا من استخدام Attributes فوق الخصائص أو الكلاسات، يتم استخدام سلسلة أوامر Fluent API لضبط كل شيء بطريقة أكثر تفصيلًا وقابلية للتحكم.

🔹 مثال بسيط على Fluent API


using Microsoft.EntityFrameworkCore;

public class AppDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Product>(entity =>
        {
            entity.HasKey(p => p.Id);
            entity.Property(p => p.Name)
                  .IsRequired()
                  .HasMaxLength(100);
            entity.Property(p => p.Price)
                  .HasPrecision(18, 2);
        });
    }
}

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

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

  • حددنا أن الخاصية Id هي المفتاح الأساسي باستخدام HasKey().
  • حددنا أن Name حقل إجباري وله حد أقصى للطول 100 حرف باستخدام IsRequired() وHasMaxLength().
  • حددنا دقة السعر Price إلى (18,2) باستخدام HasPrecision().

🔹 أين نستخدم Fluent API؟

يتم استخدام Fluent API داخل الدالة OnModelCreating في كلاس DbContext، وهو المكان الذي يمكنك فيه ضبط:

  • خصائص الجداول والأعمدة (Properties).
  • العلاقات بين الكيانات (Relationships).
  • مفاتيح الجداول الأساسية والثانوية (Primary & Foreign Keys).
  • إنشاء الفهارس (Indexes).
  • تخصيص الجداول (Table Mapping).

🔹 لماذا يسمى "Fluent"؟

لأنه يعتمد على أسلوب البرمجة المتسلسلة (Chained Method Calls)، بحيث يمكنك كتابة عدة إعدادات بطريقة متسلسلة وسلسة في سطر واحد أو عدة أسطر متصلة:


entity.Property(p => p.Name)
      .IsRequired()
      .HasMaxLength(100)
      .HasColumnName("ProductName");

🔹 مقارنة سريعة بين Data Annotations و Fluent API

Data Annotations Fluent API
بسيطة وسهلة للإعدادات الأساسية مرنة وتوفر ضبط متقدم ودقيق
مقيدة بالسمات المتوفرة فقط يمكنك ضبط أي شيء تقريبًا في الكيان والعلاقات
لا تحتاج إلى تعديل DbContext كثيرًا كل الإعدادات تتم داخل OnModelCreating

🔹 الخلاصة

Fluent API أداة قوية جدًا لضبط الكيانات والجداول والعلاقات بطريقة احترافية في Entity Framework Core. باستخدامه، يمكنك بناء قواعد بيانات معقدة ومنظمة بدقة عالية، تتناسب مع كل احتياجات المشاريع الصغيرة والكبيرة.

تعليقات

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

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

1.1 SQL Introduction

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