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. باستخدامه، يمكنك بناء قواعد بيانات معقدة ومنظمة بدقة عالية، تتناسب مع كل احتياجات المشاريع الصغيرة والكبيرة.
تعليقات
إرسال تعليق