Entity Framework - التعامل مع الـ Navigation Properties
Entity Framework Core - التعامل مع الـ Navigation Properties
Navigation Properties هي خصائص (Properties) تُستخدم في الكلاسات لتعريف العلاقات بين الكيانات (Entities)، وتسمح لك بالوصول إلى الكائنات المرتبطة بسهولة.
---🔹 أنواع الـ Navigation Properties:
- Reference Navigation: خاصية واحدة تربط سجل واحد (مثل: Student ➔ Department).
- Collection Navigation: مجموعة تربط عدة سجلات (مثل: Department ➔ Students).
🔹 مثال عملي: استخدام الـ Navigation Properties:
1️⃣ كلاس Department مع طلابه:
// ملف Models/Department.cs
public class Department
{
public int Id { get; set; }
public string Name { get; set; }
// Collection Navigation Property
public ICollection<Student> Students { get; set; }
}
---
2️⃣ كلاس Student مع قسمه:
// ملف Models/Student.cs
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int DepartmentId { get; set; }
// Reference Navigation Property
public Department Department { get; set; }
}
---
🔹 كيفية استخدام Navigation Properties أثناء القراءة:
// جلب الطلاب مع بيانات القسم المرتبط باستخدام Include
var students = await dbContext.Students
.Include(s => s.Department)
.ToListAsync();
foreach (var student in students)
{
Console.WriteLine($"{student.Name} - {student.Department.Name}");
}
---
🔹 شرح الكود:
- استخدمنا الدالة
Includeلجلب بيانات القسم المرتبط مع كل طالب. - بفضل خاصية
Departmentداخل Student، استطعنا الوصول إلى اسم القسم مباشرة بدون استعلام إضافي.
🔹 ملاحظات مهمة:
- ✅ عند الحاجة لجلب بيانات مرتبطة (Related Data)، استخدام
Includeيحسن الأداء ويوفر استعلام موحد. - ✅ يمكنك التداخل في الجلب باستخدام
ThenIncludeفي حالة العلاقات المتسلسلة.
✅ Navigation Properties تجعل التعامل مع العلاقات داخل EF Core سهلًا وطبيعيًا جدًا وكأنك تتعامل مع كائنات C# عادية.
تعليقات
إرسال تعليق