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 يمنحك قوة إضافية للتكامل مع قواعد بيانات غنية بالإجراءات الجاهزة وتحقيق أداء أفضل في بعض السيناريوهات.
تعليقات
إرسال تعليق