Entity Framework - الفرق بين (Fluent API) (Data Annotations).
Entity Framework - الفرق بين (Fluent API) و (Data Annotations)
عند ضبط الكيانات (Entities) في Entity Framework Core، أمامنا خياران أساسيان: Data Annotations أو Fluent API. كلا الطريقتين تحققان نفس الهدف (ضبط الكيانات)، لكن كل طريقة لها مميزاتها واستخداماتها الخاصة.
🔹 ما هي Data Annotations؟
هي طريقة لضبط الكيانات باستخدام سمات (Attributes) يتم إضافتها مباشرة فوق الخصائص (Properties) أو الكيانات (Entities) داخل الكود.
مثال على استخدام Data Annotations:
public class Product
{
[Key]
public int Id { get; set; }
[Required]
[MaxLength(100)]
public string Name { get; set; }
[Precision(18, 2)]
public decimal Price { get; set; }
}
هنا قمنا بتحديد المفتاح الأساسي، جعل الاسم إلزاميًا، وتحديد أقصى طول له، وضبط الدقة للـ Price.
🔹 ما هو Fluent API؟
هو أسلوب آخر لضبط الكيانات من خلال الكود داخل الدالة OnModelCreating باستخدام أسلوب برمجي مرن (Fluent Programming Style) بدلاً من إضافة السمات مباشرة على الكيانات.
مثال على استخدام Fluent API:
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);
});
}
🔹 مقارنة بين Data Annotations و Fluent API
| الخاصية | Data Annotations | Fluent API |
|---|---|---|
| السهولة | أسهل وأسرع للضبط البسيط | يحتاج كتابة أكثر لكنه أكثر مرونة |
| القابلية للسيطرة | تحكم محدود نسبياً | تحكم كامل ودقيق بجميع خصائص الكيانات |
| التعقيد | مناسب للتطبيقات البسيطة والمتوسطة | مناسب للتطبيقات الكبيرة والمعقدة |
| المرونة مع الكيانات الخارجية | صعب لأنك تحتاج تعديل الكلاس نفسه | ممكن ضبط الكيانات حتى لو لم تملك التحكم في الكلاس |
🔹 متى تستخدم كل طريقة؟
- Data Annotations: إذا كان المشروع صغيرًا أو متوسط الحجم، والتعديلات بسيطة ومباشرة.
- Fluent API: إذا كان المشروع معقدًا، أو تحتاج لضبط علاقات معقدة أو كيانات لا تستطيع تعديلها.
🔹 هل يمكن الجمع بينهما؟
نعم، يمكنك استخدام Data Annotations وFluent API معًا في نفس المشروع. ولكن إذا كان هناك تعارض، فإن إعدادات Fluent API لها الأولوية.
🔹 الخلاصة
لكل طريقة من طريقتي ضبط الكيانات مميزاتها واستخداماتها حسب طبيعة المشروع. Data Annotations توفر طريقة سريعة ومباشرة، بينما Fluent API تمنحك تحكمًا متقدمًا ومرونة عالية عند الحاجة لضبط دقيق أو معقد للكيانات.
تعليقات
إرسال تعليق