Entity Framework - Fluent API المفاتيح الأساسية HasKey()
9.3 Entity Framework - المفاتيح الأساسية باستخدام HasKey()
في Entity Framework Core، يعتبر المفتاح الأساسي (Primary Key) جزءًا أساسيًا لكل جدول. من خلال Fluent API، نستخدم الدالة HasKey() لتعريف المفاتيح الأساسية سواء كانت مفتاحًا واحدًا (Single Key) أو مفتاحًا مركبًا (Composite Key).
🔹 ما هي وظيفة HasKey()؟
تُستخدم الدالة HasKey() لتعريف الخاصية أو مجموعة الخصائص التي تشكل المفتاح الأساسي (Primary Key) للكيان (Entity) في قاعدة البيانات.
يجب أن يكون لكل كيان مفتاح أساسي حتى يتمكن EF Core من تتبعه والتعامل معه داخل قاعدة البيانات.
🔹 كيفية استخدام HasKey() مع مفتاح أساسي مفرد
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>(entity =>
{
entity.HasKey(p => p.Id);
});
}
هنا حددنا أن الخاصية Id هي المفتاح الأساسي للكيان Product.
🔹 كيفية استخدام HasKey() مع مفتاح أساسي مركب (Composite Key)
في بعض الأحيان نحتاج إلى مفتاح أساسي يتكون من أكثر من خاصية، مثل: OrderId وProductId معًا.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<OrderDetail>(entity =>
{
entity.HasKey(od => new { od.OrderId, od.ProductId });
});
}
بهذا الشكل، سيقوم EF Core بتوليد مفتاح أساسي مركب يعتمد على العمودين معًا.
🔹 ملاحظة مهمة عند استخدام المفاتيح المركبة
- يجب تعريف جميع الخصائص المشاركة في المفتاح في الكيان.
- ترتيب الخصائص في المفتاح المركب يؤثر على ترتيب الأعمدة المفهرسة في قاعدة البيانات.
🔹 لماذا نستخدم HasKey() بدل [Key] في بعض الحالات؟
- للتعامل مع المفاتيح المركبة (Composite Keys) التي لا تدعمها [Key] بسهولة.
- لضبط الكيانات بدون تعديل الكود الخاص بها، خاصة إذا كانت كيانات موجودة أو مولدة آليًا.
- لفصل إعدادات البنية عن الكود الرئيسي لزيادة التنظيم والمرونة.
🔹 الخلاصة
الدالة HasKey() في Fluent API تمنحك مرونة عالية في تحديد المفاتيح الأساسية سواء كانت مفردة أو مركبة. وهي أداة أساسية لضمان بناء قاعدة بيانات صحيحة ومنظمة بطريقة احترافية باستخدام Entity Framework Core.
تعليقات
إرسال تعليق