الـORM يعني “Object Relational Mapping” واللي بنترجمه “تحويل الكائنات إلى علاقات (أو العكس)”، وهو أسلوب برمجي بيسمحلك تتعامل مع قاعدة البيانات كأنها عبارة عن مجموعات من (Objects) في لغات OOP مثل C#, Java، أو Python بدل ما تكون مجرد جداول وعلاقات.

بنستخدمه في حالة Code First


الفكرة الأساسية

  • بدل ما تكتب أكواد SQL لتنفذ عمليات الـ CRUD (Create, Read, Update, Delete)، الـ ORM بيوفر طبقة (Abstraction Layer) تحول Objects إلى بيانات في قاعدة البيانات والعكس.
  • بيسمحلك تتعامل مع البيانات باستخدام المفاهيم المعتادة في OOP، زي (Classes) و (Properties) و (Inheritance).

الـ Mapping: إني أربط الـ Application بالـ Database ويحولي من دا لدا.


المميزات

  1. تقليل الأكواد الزائدة:
    • مش لازم تكتب استعلامات SQL معقدة يدوياً، لأن الـ ORM بيعمل الترجمة بين لغة البرمجة وSQL.
  2. التعامل مع الكائنات:
    • الكود بيكون نظيف ومباشر، بتركز على التعامل مع Objects بدل التفاصيل التقنية لقاعدة البيانات.
  3. التجريد عن قاعدة البيانات:
    • يقدر يساعدك في التعامل مع عدة أنواع من قواعد البيانات بنفس الكود (على شرط إن الـ ORM يدعمها)، مما يزيد من قابلية الانتقال من قاعدة بيانات إلى أخرى.
  4. تحسين صيانة الكود:
    • التغييرات على (schema) بتكون أسهل وأسرع لأن التغييرات بتنعكس في الكائنات.

العيوب والتحديات

  1. الأداء:
    • في بعض الحالات، الـ ORM ممكن يضيف عبء أداء مقارنة بكتابة استعلامات SQL مُحسنة.
  2. التعقيد:
    • التعلم والتعامل مع ORM ممكن يكون صعب بعض الشيء في البداية، خصوصًا للمشاريع الكبيرة أو الاستعلامات المعقدة.
  3. عدم السيطرة الكاملة:
    • أحياناً تكون الاستعلامات التلقائية غير مثالية وتحتّم عليك التدخل وإجراء بعض التحسينات يدوياً.

أمثلة مشهورة