Entity Framework - تنفيذ Stored Procedures

Entity Framework Core - تنفيذ Stored Procedures

تسمح لك Entity Framework Core بتنفيذ الإجراءات المخزنة (Stored Procedures) مباشرة، سواء لاسترجاع بيانات أو تنفيذ عمليات تعديل داخل قاعدة البيانات.

---

🔹 طرق استدعاء Stored Procedures:

  • FromSqlRaw / FromSqlInterpolated: لاسترجاع بيانات (SELECT).
  • ExecuteSqlRaw / ExecuteSqlInterpolated: لتنفيذ أوامر لا تُعيد نتائج (مثل INSERT / UPDATE / DELETE).
---

🔹 مثال عملي على استدعاء Stored Procedure يعيد بيانات:


// استدعاء إجراء مخزن يُعيد قائمة الطلاب

var students = await dbContext.Students
    .FromSqlRaw("EXEC GetAllStudents")
    .ToListAsync();
---

🔹 مثال عملي على تمرير معلمات إلى Stored Procedure:


// استدعاء إجراء مخزن مع معلمة

int departmentId = 2;

var students = await dbContext.Students
    .FromSqlInterpolated($"EXEC GetStudentsByDepartmentId {departmentId}")
    .ToListAsync();
---

🔹 مثال عملي على تنفيذ Stored Procedure لا يُعيد بيانات:


// استدعاء إجراء مخزن يقوم بالتحديث

await dbContext.Database.ExecuteSqlRawAsync("EXEC UpdateStudentAges");
---

🔹 ملاحظات مهمة عند استخدام Stored Procedures مع EF Core:

  • ✅ الإجراء المخزن يجب أن يُعيد بيانات متوافقة مع الكيان المرتبط (Entity) الذي تستخدمه في FromSqlRaw.
  • ✅ لتفادي ثغرات SQL Injection استخدم دائمًا FromSqlInterpolated أو ExecuteSqlInterpolated عند تمرير معلمات.
  • ✅ يمكنك تنفيذ إجراءات مخزنة ترجع بيانات مركبة باستخدام DTOs (كائنات مخصصة).
---

🔹 نصيحة إضافية:

إذا كان الإجراء المخزن يُعيد أكثر من نوع من البيانات أو نتائج مركبة معقدة، من الأفضل إنشاء Model أو DTO خاص ليتطابق مع شكل البيانات الراجعة.

---

✅ دعم EF Core لتنفيذ Stored Procedures يمنحك قوة إضافية للتكامل مع قواعد بيانات غنية بالإجراءات الجاهزة وتحقيق أداء أفضل في بعض السيناريوهات.

تعليقات

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

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

1.1 SQL Introduction

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